object_interface.f90 Source File

### Copyright notice

 ```
 (c) 2019-2020 Guide Star Engineering, LLC
 This Software was developed for the US Nuclear Regulatory Commission (US NRC) under contract
 "Multi-Dimensional Physics Implementation into Fuel Analysis under Steady-state and Transients (FAST)",
 contract # NRC-HQ-60-17-C-0007
 ```

Files dependent on this one

sourcefile~~object_interface.f90~~AfferentGraph sourcefile~object_interface.f90 object_interface.f90 sourcefile~problem_discretization_interface.f90 problem_discretization_interface.F90 sourcefile~problem_discretization_interface.f90->sourcefile~object_interface.f90 sourcefile~differentiable_field_interface.f90 differentiable_field_interface.f90 sourcefile~problem_discretization_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~structured_grid_interface.f90 structured_grid_interface.F90 sourcefile~problem_discretization_interface.f90->sourcefile~structured_grid_interface.f90 sourcefile~units_interface.f90 units_interface.F90 sourcefile~units_interface.f90->sourcefile~object_interface.f90 sourcefile~grid_interface.f90 grid_interface.F90 sourcefile~grid_interface.f90->sourcefile~object_interface.f90 sourcefile~grid_interface.f90->sourcefile~units_interface.f90 sourcefile~object_implementation.f90 object_implementation.f90 sourcefile~object_implementation.f90->sourcefile~object_interface.f90 sourcefile~class_mesh.f90 class_mesh.F90 sourcefile~class_mesh.f90->sourcefile~grid_interface.f90 sourcefile~units_implementation.f90 units_implementation.F90 sourcefile~units_implementation.f90->sourcefile~units_interface.f90 sourcefile~ellipsoidal_field_interface.f90 ellipsoidal_field_interface.f90 sourcefile~ellipsoidal_field_interface.f90->sourcefile~grid_interface.f90 sourcefile~ellipsoidal_field_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~cylinder_2d_implementation.f90 cylinder_2D_implementation.F90 sourcefile~cylinder_2d_implementation.f90->sourcefile~units_interface.f90 sourcefile~problem_discretization_implementation.f90 problem_discretization_implementation.F90 sourcefile~problem_discretization_implementation.f90->sourcefile~problem_discretization_interface.f90 sourcefile~cartesian_grid_interface.f90 cartesian_grid_interface.f90 sourcefile~problem_discretization_implementation.f90->sourcefile~cartesian_grid_interface.f90 sourcefile~spherical_grid_interface.f90 spherical_grid_interface.f90 sourcefile~problem_discretization_implementation.f90->sourcefile~spherical_grid_interface.f90 sourcefile~cylindrical_grid_interface.f90 cylindrical_grid_interface.f90 sourcefile~problem_discretization_implementation.f90->sourcefile~cylindrical_grid_interface.f90 sourcefile~differentiable_field_interface.f90->sourcefile~grid_interface.f90 sourcefile~sphere_1d_implementation.f90 sphere_1D_implementation.F90 sourcefile~sphere_1d_implementation.f90->sourcefile~units_interface.f90 sourcefile~class_field.f90 class_field.f90 sourcefile~class_field.f90->sourcefile~grid_interface.f90 sourcefile~class_field.f90->sourcefile~class_mesh.f90 sourcefile~class_bc.f90 class_bc.f90 sourcefile~class_field.f90->sourcefile~class_bc.f90 sourcefile~plate_3d_implementation.f90 plate_3D_implementation.F90 sourcefile~plate_3d_implementation.f90->sourcefile~units_interface.f90 sourcefile~grid_implementation.f90 grid_implementation.f90 sourcefile~grid_implementation.f90->sourcefile~grid_interface.f90 sourcefile~structured_grid_interface.f90->sourcefile~grid_interface.f90 sourcefile~structured_grid_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~tools_output.f90 tools_output.f90 sourcefile~tools_output.f90->sourcefile~class_mesh.f90 sourcefile~class_vector_field.f90 class_vector_field.f90 sourcefile~tools_output.f90->sourcefile~class_vector_field.f90 sourcefile~class_output.f90 class_output.f90 sourcefile~tools_output.f90->sourcefile~class_output.f90 sourcefile~class_scalar_field.f90 class_scalar_field.f90 sourcefile~tools_output.f90->sourcefile~class_scalar_field.f90 sourcefile~op_div.f90 op_div.f90 sourcefile~op_div.f90->sourcefile~class_mesh.f90 sourcefile~class_vector_pde.f90 class_vector_pde.f90 sourcefile~op_div.f90->sourcefile~class_vector_pde.f90 sourcefile~op_div.f90->sourcefile~class_vector_field.f90 sourcefile~class_scalar_pde.f90 class_scalar_pde.f90 sourcefile~op_div.f90->sourcefile~class_scalar_pde.f90 sourcefile~op_div.f90->sourcefile~class_scalar_field.f90 sourcefile~class_bc_wall_procedures.f90 class_bc_wall_procedures.f90 sourcefile~class_bc_wall_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_bc_wall.f90 class_bc_wall.f90 sourcefile~class_bc_wall_procedures.f90->sourcefile~class_bc_wall.f90 sourcefile~tools_mesh_optimize.f90 tools_mesh_optimize.f90 sourcefile~tools_mesh_optimize.f90->sourcefile~class_mesh.f90 sourcefile~tools_mesh_optimize.f90->sourcefile~class_bc.f90 sourcefile~vector_pde_source.f90 vector_pde_source.f90 sourcefile~vector_pde_source.f90->sourcefile~class_mesh.f90 sourcefile~vector_pde_source.f90->sourcefile~class_vector_pde.f90 sourcefile~vector_pde_source.f90->sourcefile~class_vector_field.f90 sourcefile~vector_pde_source.f90->sourcefile~class_scalar_pde.f90 sourcefile~rhie_chow.f90 rhie_chow.f90 sourcefile~rhie_chow.f90->sourcefile~class_mesh.f90 sourcefile~rhie_chow.f90->sourcefile~class_field.f90 sourcefile~rhie_chow.f90->sourcefile~class_vector_field.f90 sourcefile~rhie_chow.f90->sourcefile~class_scalar_field.f90 sourcefile~op_field.f90 op_field.f90 sourcefile~rhie_chow.f90->sourcefile~op_field.f90 sourcefile~smooth_surf_vtx.f90 smooth_surf_vtx.f90 sourcefile~smooth_surf_vtx.f90->sourcefile~class_mesh.f90 sourcefile~smooth_surf_vtx.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~tools_mesh_check.f90 tools_mesh_check.f90 sourcefile~smooth_surf_vtx.f90->sourcefile~tools_mesh_check.f90 sourcefile~check_vertex_quality.f90 check_vertex_quality.f90 sourcefile~check_vertex_quality.f90->sourcefile~class_mesh.f90 sourcefile~check_vertex_quality.f90->sourcefile~tools_mesh_check.f90 sourcefile~class_vector_pde.f90->sourcefile~class_mesh.f90 sourcefile~class_vector_pde.f90->sourcefile~class_vector_field.f90 sourcefile~class_pde.f90 class_pde.f90 sourcefile~class_vector_pde.f90->sourcefile~class_pde.f90 sourcefile~vector_field_grad.f90 vector_field_grad.f90 sourcefile~vector_field_grad.f90->sourcefile~class_mesh.f90 sourcefile~vector_field_grad.f90->sourcefile~class_vector_field.f90 sourcefile~op_grad.f90 op_grad.f90 sourcefile~vector_field_grad.f90->sourcefile~op_grad.f90 sourcefile~valid_tet.f90 valid_tet.f90 sourcefile~valid_tet.f90->sourcefile~class_mesh.f90 sourcefile~valid_tet.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~class_scalar_pde_procedures.f90 class_scalar_pde_procedures.f90 sourcefile~class_scalar_pde_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_scalar_pde_procedures.f90->sourcefile~class_scalar_pde.f90 sourcefile~class_scalar_pde_procedures.f90->sourcefile~class_scalar_field.f90 sourcefile~curvilinear_grid_interface.f90 curvilinear_grid_interface.f90 sourcefile~curvilinear_grid_interface.f90->sourcefile~structured_grid_interface.f90 sourcefile~class_scalar_field_procedures.f90 class_scalar_field_procedures.f90 sourcefile~class_scalar_field_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_scalar_field_procedures.f90->sourcefile~class_field.f90 sourcefile~class_scalar_field_procedures.f90->sourcefile~class_scalar_field.f90 sourcefile~class_scalar_field_procedures.f90->sourcefile~class_bc.f90 sourcefile~vector_pde_ddt.f90 vector_pde_ddt.f90 sourcefile~vector_pde_ddt.f90->sourcefile~class_mesh.f90 sourcefile~vector_pde_ddt.f90->sourcefile~class_vector_pde.f90 sourcefile~vector_pde_ddt.f90->sourcefile~class_vector_field.f90 sourcefile~vector_pde_ddt.f90->sourcefile~class_scalar_field.f90 sourcefile~op_ddt.f90 op_ddt.f90 sourcefile~vector_pde_ddt.f90->sourcefile~op_ddt.f90 sourcefile~class_vtk_output_procedures.f90 class_vtk_output_procedures.f90 sourcefile~class_vtk_output_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_vtk_output_procedures.f90->sourcefile~class_output.f90 sourcefile~class_vtk_output.f90 class_vtk_output.f90 sourcefile~class_vtk_output_procedures.f90->sourcefile~class_vtk_output.f90 sourcefile~vector_field_flux.f90 vector_field_flux.f90 sourcefile~vector_field_flux.f90->sourcefile~class_mesh.f90 sourcefile~vector_field_flux.f90->sourcefile~class_field.f90 sourcefile~vector_field_flux.f90->sourcefile~class_vector_field.f90 sourcefile~vector_field_flux.f90->sourcefile~class_scalar_field.f90 sourcefile~vector_field_flux.f90->sourcefile~op_field.f90 sourcefile~tools_mesh_check.f90->sourcefile~class_mesh.f90 sourcefile~tools_mesh_check.f90->sourcefile~class_scalar_field.f90 sourcefile~smooth_mesh.f90 smooth_mesh.f90 sourcefile~smooth_mesh.f90->sourcefile~class_mesh.f90 sourcefile~smooth_mesh.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~smooth_mesh.f90->sourcefile~tools_mesh_check.f90 sourcefile~smooth_mesh.f90->sourcefile~class_bc.f90 sourcefile~class_vector_field.f90->sourcefile~class_mesh.f90 sourcefile~class_vector_field.f90->sourcefile~class_field.f90 sourcefile~class_vector_field.f90->sourcefile~class_bc.f90 sourcefile~class_motion_procedures.f90 class_motion_procedures.f90 sourcefile~class_motion_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_bc_math_procedures.f90 class_bc_math_procedures.f90 sourcefile~class_bc_math_procedures.f90->sourcefile~class_mesh.f90 sourcefile~vector_pde_laplacian.f90 vector_pde_laplacian.f90 sourcefile~vector_pde_laplacian.f90->sourcefile~class_mesh.f90 sourcefile~vector_pde_laplacian.f90->sourcefile~class_vector_pde.f90 sourcefile~vector_pde_laplacian.f90->sourcefile~class_vector_field.f90 sourcefile~vector_pde_laplacian.f90->sourcefile~class_scalar_field.f90 sourcefile~vector_pde_laplacian.f90->sourcefile~class_bc.f90 sourcefile~vector_pde_laplacian.f90->sourcefile~op_grad.f90 sourcefile~op_laplacian.f90 op_laplacian.f90 sourcefile~vector_pde_laplacian.f90->sourcefile~op_laplacian.f90 sourcefile~check_tet_quality.f90 check_tet_quality.f90 sourcefile~check_tet_quality.f90->sourcefile~class_mesh.f90 sourcefile~check_tet_quality.f90->sourcefile~tools_mesh_check.f90 sourcefile~ellipsoidal_field_implementation.f90 ellipsoidal_field_implementation.f90 sourcefile~ellipsoidal_field_implementation.f90->sourcefile~ellipsoidal_field_interface.f90 sourcefile~ellipsoidal_field_implementation.f90->sourcefile~cartesian_grid_interface.f90 sourcefile~scalar_pde_source.f90 scalar_pde_source.f90 sourcefile~scalar_pde_source.f90->sourcefile~class_mesh.f90 sourcefile~op_source.f90 op_source.f90 sourcefile~scalar_pde_source.f90->sourcefile~op_source.f90 sourcefile~class_bc_procedures.f90 class_bc_procedures.f90 sourcefile~class_bc_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_bc_procedures.f90->sourcefile~class_bc.f90 sourcefile~class_mesh_procedures.f90 class_mesh_procedures.F90 sourcefile~class_mesh_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_output.f90->sourcefile~class_mesh.f90 sourcefile~class_output.f90->sourcefile~class_vector_field.f90 sourcefile~class_output.f90->sourcefile~class_scalar_field.f90 sourcefile~class_exodus.f90 class_exodus.f90 sourcefile~class_exodus.f90->sourcefile~class_mesh.f90 sourcefile~class_exodus.f90->sourcefile~class_vector_field.f90 sourcefile~class_exodus.f90->sourcefile~class_output.f90 sourcefile~class_exodus.f90->sourcefile~class_scalar_field.f90 sourcefile~class_exodus_procedures.f90 class_exodus_procedures.f90 sourcefile~class_exodus_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_exodus_procedures.f90->sourcefile~class_vector_field.f90 sourcefile~class_exodus_procedures.f90->sourcefile~class_output.f90 sourcefile~class_exodus_procedures.f90->sourcefile~class_exodus.f90 sourcefile~class_exodus_procedures.f90->sourcefile~class_scalar_field.f90 sourcefile~cartesian_grid_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~cartesian_grid_interface.f90->sourcefile~structured_grid_interface.f90 sourcefile~spherical_grid_interface.f90->sourcefile~structured_grid_interface.f90 sourcefile~class_bc_wall.f90->sourcefile~class_mesh.f90 sourcefile~class_field_procedures.f90 class_field_procedures.f90 sourcefile~class_field_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_field_procedures.f90->sourcefile~class_field.f90 sourcefile~structured_grid_implementation.f90 structured_grid_implementation.F90 sourcefile~structured_grid_implementation.f90->sourcefile~structured_grid_interface.f90 sourcefile~write_vector_field.f90 write_vector_field.f90 sourcefile~write_vector_field.f90->sourcefile~class_mesh.f90 sourcefile~write_vector_field.f90->sourcefile~tools_output.f90 sourcefile~write_vector_field.f90->sourcefile~class_vector_field.f90 sourcefile~write_vector_field.f90->sourcefile~class_output.f90 sourcefile~class_vtk_output.f90->sourcefile~class_mesh.f90 sourcefile~class_vtk_output.f90->sourcefile~class_vector_field.f90 sourcefile~class_vtk_output.f90->sourcefile~class_output.f90 sourcefile~class_vtk_output.f90->sourcefile~class_scalar_field.f90 sourcefile~class_scalar_pde.f90->sourcefile~class_mesh.f90 sourcefile~class_scalar_pde.f90->sourcefile~class_pde.f90 sourcefile~class_scalar_pde.f90->sourcefile~class_scalar_field.f90 sourcefile~tools_nemo.f90 tools_nemo.f90 sourcefile~tools_nemo.f90->sourcefile~class_mesh.f90 sourcefile~tools_nemo.f90->sourcefile~tools_output.f90 sourcefile~tools_nemo.f90->sourcefile~op_div.f90 sourcefile~tools_nemo.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~tools_nemo.f90->sourcefile~class_vector_pde.f90 sourcefile~tools_nemo.f90->sourcefile~tools_mesh_check.f90 sourcefile~tools_nemo.f90->sourcefile~class_vector_field.f90 sourcefile~tools_nemo.f90->sourcefile~class_output.f90 sourcefile~tools_nemo.f90->sourcefile~class_scalar_pde.f90 sourcefile~tools_nemo.f90->sourcefile~class_scalar_field.f90 sourcefile~tools_nemo.f90->sourcefile~class_bc.f90 sourcefile~tools_nemo.f90->sourcefile~op_grad.f90 sourcefile~tools_nemo.f90->sourcefile~op_laplacian.f90 sourcefile~tools_nemo.f90->sourcefile~op_field.f90 sourcefile~tools_nemo.f90->sourcefile~op_source.f90 sourcefile~tools_nemo.f90->sourcefile~op_ddt.f90 sourcefile~op_d2dt2.f90 op_d2dt2.f90 sourcefile~tools_nemo.f90->sourcefile~op_d2dt2.f90 sourcefile~check_right_handed.f90 check_right_handed.f90 sourcefile~check_right_handed.f90->sourcefile~class_mesh.f90 sourcefile~check_right_handed.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~check_right_handed.f90->sourcefile~tools_mesh_check.f90 sourcefile~class_pde.f90->sourcefile~class_mesh.f90 sourcefile~class_output_procedures.f90 class_output_procedures.F90 sourcefile~class_output_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_output_procedures.f90->sourcefile~class_vector_field.f90 sourcefile~class_output_procedures.f90->sourcefile~class_output.f90 sourcefile~class_output_procedures.f90->sourcefile~class_vtk_output.f90 sourcefile~class_output_procedures.f90->sourcefile~class_scalar_field.f90 sourcefile~write_mesh.f90 write_mesh.f90 sourcefile~write_mesh.f90->sourcefile~class_mesh.f90 sourcefile~write_mesh.f90->sourcefile~tools_output.f90 sourcefile~write_mesh.f90->sourcefile~class_output.f90 sourcefile~flux_pde_div.f90 flux_pde_div.f90 sourcefile~flux_pde_div.f90->sourcefile~class_mesh.f90 sourcefile~flux_pde_div.f90->sourcefile~op_div.f90 sourcefile~class_vector_pde_procedures.f90 class_vector_pde_procedures.f90 sourcefile~class_vector_pde_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_vector_pde_procedures.f90->sourcefile~class_vector_pde.f90 sourcefile~class_vector_pde_procedures.f90->sourcefile~class_vector_field.f90 sourcefile~class_vector_pde_procedures.f90->sourcefile~class_pde.f90 sourcefile~scalar_pde_laplacian.f90 scalar_pde_laplacian.f90 sourcefile~scalar_pde_laplacian.f90->sourcefile~class_mesh.f90 sourcefile~scalar_pde_laplacian.f90->sourcefile~class_bc.f90 sourcefile~scalar_pde_laplacian.f90->sourcefile~op_grad.f90 sourcefile~scalar_pde_laplacian.f90->sourcefile~op_laplacian.f90 sourcefile~class_scalar_field.f90->sourcefile~class_mesh.f90 sourcefile~class_scalar_field.f90->sourcefile~class_field.f90 sourcefile~class_scalar_field.f90->sourcefile~class_bc.f90 sourcefile~check_mesh_quality.f90 check_mesh_quality.f90 sourcefile~check_mesh_quality.f90->sourcefile~class_mesh.f90 sourcefile~check_mesh_quality.f90->sourcefile~tools_mesh_check.f90 sourcefile~check_mesh_quality.f90->sourcefile~class_scalar_field.f90 sourcefile~scalar_field_grad.f90 scalar_field_grad.f90 sourcefile~scalar_field_grad.f90->sourcefile~class_mesh.f90 sourcefile~scalar_field_grad.f90->sourcefile~class_scalar_field.f90 sourcefile~scalar_field_grad.f90->sourcefile~op_grad.f90 sourcefile~vector_pde_div.f90 vector_pde_div.f90 sourcefile~vector_pde_div.f90->sourcefile~class_mesh.f90 sourcefile~vector_pde_div.f90->sourcefile~op_div.f90 sourcefile~vector_pde_div.f90->sourcefile~class_vector_pde.f90 sourcefile~vector_pde_div.f90->sourcefile~class_bc.f90 sourcefile~scalar_pde_d2dt2.f90 scalar_pde_d2dt2.f90 sourcefile~scalar_pde_d2dt2.f90->sourcefile~class_mesh.f90 sourcefile~scalar_pde_d2dt2.f90->sourcefile~op_d2dt2.f90 sourcefile~vector_pde_grad.f90 vector_pde_grad.f90 sourcefile~vector_pde_grad.f90->sourcefile~class_mesh.f90 sourcefile~vector_pde_grad.f90->sourcefile~class_vector_pde.f90 sourcefile~vector_pde_grad.f90->sourcefile~class_scalar_field.f90 sourcefile~vector_pde_grad.f90->sourcefile~op_grad.f90 sourcefile~vector_pde_d2dt2.f90 vector_pde_d2dt2.f90 sourcefile~vector_pde_d2dt2.f90->sourcefile~class_mesh.f90 sourcefile~vector_pde_d2dt2.f90->sourcefile~class_vector_pde.f90 sourcefile~vector_pde_d2dt2.f90->sourcefile~class_vector_field.f90 sourcefile~vector_pde_d2dt2.f90->sourcefile~class_scalar_field.f90 sourcefile~vector_pde_d2dt2.f90->sourcefile~op_d2dt2.f90 sourcefile~smooth_interior_vtx.f90 smooth_interior_vtx.f90 sourcefile~smooth_interior_vtx.f90->sourcefile~class_mesh.f90 sourcefile~smooth_interior_vtx.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~smooth_interior_vtx.f90->sourcefile~tools_mesh_check.f90 sourcefile~scalar_fld_vector_mul.f90 scalar_fld_vector_mul.f90 sourcefile~scalar_fld_vector_mul.f90->sourcefile~class_field.f90 sourcefile~scalar_fld_vector_mul.f90->sourcefile~class_vector_field.f90 sourcefile~scalar_fld_vector_mul.f90->sourcefile~class_scalar_field.f90 sourcefile~scalar_fld_vector_mul.f90->sourcefile~op_field.f90 sourcefile~scalar_vector_fld_mul.f90 scalar_vector_fld_mul.f90 sourcefile~scalar_vector_fld_mul.f90->sourcefile~class_field.f90 sourcefile~scalar_vector_fld_mul.f90->sourcefile~class_vector_field.f90 sourcefile~scalar_vector_fld_mul.f90->sourcefile~class_scalar_field.f90 sourcefile~scalar_vector_fld_mul.f90->sourcefile~op_field.f90 sourcefile~scalar_pde_div.f90 scalar_pde_div.f90 sourcefile~scalar_pde_div.f90->sourcefile~class_mesh.f90 sourcefile~scalar_pde_div.f90->sourcefile~op_div.f90 sourcefile~scalar_pde_div.f90->sourcefile~class_bc.f90 sourcefile~class_vector_field_procedures.f90 class_vector_field_procedures.f90 sourcefile~class_vector_field_procedures.f90->sourcefile~class_mesh.f90 sourcefile~class_vector_field_procedures.f90->sourcefile~class_field.f90 sourcefile~class_vector_field_procedures.f90->sourcefile~class_vector_field.f90 sourcefile~class_vector_field_procedures.f90->sourcefile~class_bc.f90 sourcefile~scalar_pde_ddt.f90 scalar_pde_ddt.f90 sourcefile~scalar_pde_ddt.f90->sourcefile~class_mesh.f90 sourcefile~scalar_pde_ddt.f90->sourcefile~op_ddt.f90 sourcefile~cylindrical_grid_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~cylindrical_grid_interface.f90->sourcefile~structured_grid_interface.f90 sourcefile~class_bc.f90->sourcefile~class_bc_wall.f90 sourcefile~op_grad.f90->sourcefile~class_vector_pde.f90 sourcefile~op_grad.f90->sourcefile~class_vector_field.f90 sourcefile~op_grad.f90->sourcefile~class_scalar_field.f90 sourcefile~laplacian_smooth.f90 laplacian_smooth.f90 sourcefile~laplacian_smooth.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~op_laplacian.f90->sourcefile~class_vector_pde.f90 sourcefile~op_laplacian.f90->sourcefile~class_vector_field.f90 sourcefile~op_laplacian.f90->sourcefile~class_scalar_pde.f90 sourcefile~op_laplacian.f90->sourcefile~class_scalar_field.f90 sourcefile~write_scalar_field.f90 write_scalar_field.f90 sourcefile~write_scalar_field.f90->sourcefile~tools_output.f90 sourcefile~op_field.f90->sourcefile~class_vector_field.f90 sourcefile~op_field.f90->sourcefile~class_scalar_field.f90 sourcefile~class_pde_procedures.f90 class_pde_procedures.f90 sourcefile~class_pde_procedures.f90->sourcefile~class_pde.f90 sourcefile~op_source.f90->sourcefile~class_scalar_pde.f90 sourcefile~op_source.f90->sourcefile~class_scalar_field.f90 sourcefile~cylindrical_grid_implementation.f90 cylindrical_grid_implementation.f90 sourcefile~cylindrical_grid_implementation.f90->sourcefile~cylindrical_grid_interface.f90 sourcefile~cartesian_grid_implementation.f90 cartesian_grid_implementation.f90 sourcefile~cartesian_grid_implementation.f90->sourcefile~cartesian_grid_interface.f90 sourcefile~mobile_verts.f90 mobile_verts.f90 sourcefile~mobile_verts.f90->sourcefile~tools_mesh_optimize.f90 sourcefile~op_ddt.f90->sourcefile~class_vector_pde.f90 sourcefile~op_ddt.f90->sourcefile~class_vector_field.f90 sourcefile~op_ddt.f90->sourcefile~class_scalar_pde.f90 sourcefile~op_ddt.f90->sourcefile~class_scalar_field.f90 sourcefile~op_d2dt2.f90->sourcefile~class_vector_pde.f90 sourcefile~op_d2dt2.f90->sourcefile~class_vector_field.f90 sourcefile~op_d2dt2.f90->sourcefile~class_scalar_pde.f90 sourcefile~op_d2dt2.f90->sourcefile~class_scalar_field.f90 sourcefile~spherical_grid_implementation.f90 spherical_grid_implementation.f90 sourcefile~spherical_grid_implementation.f90->sourcefile~spherical_grid_interface.f90 sourcefile~op_ddt_procedures.f90 op_ddt_procedures.f90 sourcefile~op_ddt_procedures.f90->sourcefile~op_ddt.f90 sourcefile~op_d2dt2_procedures.f90 op_d2dt2_procedures.f90 sourcefile~op_d2dt2_procedures.f90->sourcefile~op_d2dt2.f90 sourcefile~op_laplacian_procedures.f90 op_laplacian_procedures.f90 sourcefile~op_laplacian_procedures.f90->sourcefile~op_laplacian.f90

Contents

Source Code


Source Code

!! author: Damian Rouson, GSE LLC
!! category: Morfeus-FD
!! summary: Abstract base type, `object`
!!
!! ### Copyright notice
!!
!!     ```
!!     (c) 2019-2020 Guide Star Engineering, LLC
!!     This Software was developed for the US Nuclear Regulatory Commission (US NRC) under contract
!!     "Multi-Dimensional Physics Implementation into Fuel Analysis under Steady-state and Transients (FAST)",
!!     contract # NRC-HQ-60-17-C-0007
!!     ```

module object_interface
  implicit none

  private
  public :: object

  type, abstract :: object
    !! author: Damian Rouson, GSE LLC
    !! category: Morfeus-FD
    !! summary: Abstract type to ensure all objects extending it implement the required methods
    !!
    !! Define an abstract parent type to ensure basic functionality expected to be provided by all non-abstract types.
    !! Each non-abstract type provides the functionality by extending this type and implementing its deferred binding(s).  This
    !! type resembles java's Object class in the sense that it is intended to be the ultimate ancestor of every other type.
    private
    logical :: defined=.false.
      !! Default initialization indicates not yet user-defined
  contains
    procedure :: mark_as_defined
    procedure :: user_defined
  end type

  interface

    pure module subroutine mark_as_defined(this)
      !! Mark the object as user-defined
      implicit none
      class(object), intent(inout) :: this
    end subroutine

    pure module function user_defined(this) result(is_defined)
      !! Return a boolean result indicating whether this object has been initialized since its declaration
      implicit none
      class(object), intent(in) :: this
      logical :: is_defined
    end function

  end interface

end module object_interface