units_interface.F90 Source File


This file depends on

sourcefile~~units_interface.f90~~EfferentGraph sourcefile~units_interface.f90 units_interface.F90 sourcefile~object_interface.f90 object_interface.f90 sourcefile~units_interface.f90->sourcefile~object_interface.f90

Files dependent on this one

sourcefile~~units_interface.f90~~AfferentGraph sourcefile~units_interface.f90 units_interface.F90 sourcefile~units_implementation.f90 units_implementation.F90 sourcefile~units_implementation.f90->sourcefile~units_interface.f90 sourcefile~cylinder_2d_implementation.f90 cylinder_2D_implementation.F90 sourcefile~cylinder_2d_implementation.f90->sourcefile~units_interface.f90 sourcefile~grid_interface.f90 grid_interface.F90 sourcefile~grid_interface.f90->sourcefile~units_interface.f90 sourcefile~sphere_1d_implementation.f90 sphere_1D_implementation.F90 sourcefile~sphere_1d_implementation.f90->sourcefile~units_interface.f90 sourcefile~plate_3d_implementation.f90 plate_3D_implementation.F90 sourcefile~plate_3d_implementation.f90->sourcefile~units_interface.f90 sourcefile~class_mesh.f90 class_mesh.F90 sourcefile~class_mesh.f90->sourcefile~grid_interface.f90 sourcefile~ellipsoidal_field_interface.f90 ellipsoidal_field_interface.f90 sourcefile~ellipsoidal_field_interface.f90->sourcefile~grid_interface.f90 sourcefile~differentiable_field_interface.f90 differentiable_field_interface.f90 sourcefile~ellipsoidal_field_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~differentiable_field_interface.f90->sourcefile~grid_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~grid_implementation.f90 grid_implementation.f90 sourcefile~grid_implementation.f90->sourcefile~grid_interface.f90 sourcefile~structured_grid_interface.f90 structured_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~cartesian_grid_interface.f90 cartesian_grid_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 spherical_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~problem_discretization_interface.f90 problem_discretization_interface.F90 sourcefile~problem_discretization_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~problem_discretization_interface.f90->sourcefile~structured_grid_interface.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 cylindrical_grid_interface.f90 sourcefile~cylindrical_grid_interface.f90->sourcefile~differentiable_field_interface.f90 sourcefile~cylindrical_grid_interface.f90->sourcefile~structured_grid_interface.f90 sourcefile~problem_discretization_implementation.f90 problem_discretization_implementation.F90 sourcefile~problem_discretization_implementation.f90->sourcefile~cartesian_grid_interface.f90 sourcefile~problem_discretization_implementation.f90->sourcefile~spherical_grid_interface.f90 sourcefile~problem_discretization_implementation.f90->sourcefile~problem_discretization_interface.f90 sourcefile~problem_discretization_implementation.f90->sourcefile~cylindrical_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

!
!     (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 units_interface
  !! author: Damian Rouson
  !! date: 9/9/2019
  !!
  !! Define SI and British units of measurement and associated arithmetic operators
  use object_interface, only : object
  implicit none

  private
  public :: units
  public :: K, m, kg, sec
  public :: R, ft, lbm
  public :: dimensionless, SI, British
  public :: num_fundamental
  public :: units_system_names
  public :: SI_units_names, British_units_names

  enum, bind(C)
    !! Enumerate the fundamental units for dimensional units quantities
    !! (meters, kilograms, seconds, and degrees Kelvin)
    enumerator :: K=1, m, kg, sec
    enumerator :: R=1, ft, lbm
    enumerator :: dimensionless=0, SI, British
  end enum

  integer, parameter :: num_fundamental=4, num_systems=2
  character(len=*), parameter :: units_system_names(num_systems)=[character(len=len("British")) :: "SI","British"]
  character(len=*), parameter :: SI_units_names(num_fundamental)=[character(len=len("sec")) :: "K", "m", "kg", "sec"]
  character(len=*), parameter :: British_units_names(num_fundamental)=[character(len=len("sec")) :: "R", "ft", "lbm", "sec"]

  type, extends(object) :: units
    !! Morfeus universal base type for all units
    private
    integer :: exponents_(num_fundamental)=dimensionless  !! Store the exponents for fundamental units
    integer :: system=dimensionless  !! Default to SI units
    character(len=:), allocatable :: description
  contains
    procedure :: set_units
    procedure :: get_units
    procedure :: get_system
    procedure :: is_dimensionless
    procedure :: has_length_units
    procedure :: has_mass_units
    procedure :: has_time_units
    procedure :: has_temperature_units
    procedure :: has_velocity_units
    procedure :: has_energy_units
    procedure :: has_density_units
    procedure :: has_specific_energy_units
    procedure :: has_stress_units
    procedure :: has_power_units
    procedure :: add
    procedure :: multiply
    procedure :: divide
    procedure :: subtract,negate
    procedure :: integer_power
    procedure :: real_power
    procedure :: assign_units
#ifndef FORD
    generic :: operator(+)=>add
    generic :: operator(*)=>multiply
    generic :: operator(/)=>divide
    generic :: operator(-)=>subtract,negate
    generic :: operator(**)=>integer_power,real_power
    generic :: assignment(=)=>assign_units
#endif
  end type

  interface

    pure module subroutine set_units(this,exponents,system)
      !! define units
        implicit none
        class(units), intent(inout) :: this
        integer, intent(in) :: exponents(num_fundamental)
        integer, intent(in) :: system
    end subroutine

    pure module subroutine assign_units(lhs,rhs)
      !! copy units information
        implicit none
        class(units), intent(inout) :: lhs
        class(units), intent(in) :: rhs
    end subroutine

#ifndef HAVE_ERROR_STOP_IN_PURE
    impure &
#endif
    elemental module function integer_power(this,exponent_) result(this_raised)
      !! result has units of the opearand raised to the power "exponent_"
        implicit none
        class(units), intent(in) :: this
        integer, intent(in) :: exponent_
        type(units) :: this_raised
    end function

    module function get_units(this) result(exponents)
      !! result holds the exponents of each unit in the argument (most useful when the actual argument is an expression)
        implicit none
        class(units), intent(in) :: this
        integer :: exponents(num_fundamental)
    end function

#ifndef HAVE_ERROR_STOP_IN_PURE
        impure &
#endif
    elemental module function get_system(this) result(system_of_units)
      !! result is enumerated value designating units system
        implicit none
        class(units), intent(in) :: this
        integer :: system_of_units
    end function


#ifndef HAVE_ERROR_STOP_IN_PURE
    impure &
#endif
    elemental module function real_power(this,exponent_) result(this_raised)
      !! result is the units of the operand raised to the power "exponent_"; includes check that operand is dimensionless
        implicit none
        class(units), intent(in) :: this
        real, intent(in) :: exponent_
        type(units) :: this_raised
    end function

#ifndef HAVE_ERROR_STOP_IN_PURE
    impure &
#endif
    elemental module function add(lhs,rhs) result(total)
      !! result is the units of the sum of two dimensional quantities; includes operand consistency check
        implicit none
        class(units), intent(in) :: lhs,rhs
        type(units) :: total
    end function

#ifndef HAVE_ERROR_STOP_IN_PURE
    impure &
#endif
    elemental module function subtract(lhs,rhs) result(difference)
      !! result is the units of the difference of two dimensional quantities; includes operand consistency check
        implicit none
        class(units), intent(in) :: lhs,rhs
        type(units) :: difference
    end function

    elemental module function negate(this) result(negative_this)
      !! result is the units of the negative of a dimensional quantities
        implicit none
        class(units), intent(in) :: this
        type(units) :: negative_this
    end function

    elemental module function multiply(lhs,rhs) result(product_)
      !! result is the units of the product of two dimensional quantities; includes units-system consistency check
        implicit none
        class(units), intent(in) :: lhs,rhs
        type(units) :: product_
    end function

    elemental module function divide(numerator,denominator) result(ratio)
      !! result is the units of the ratio of two dimensional quantities; includes units-sysetm consistency check
      implicit none
      class(units), intent(in) :: numerator,denominator
      type(units) :: ratio
    end function

    elemental module function is_dimensionless(this) result(nondimensional)
      !! Return true if all units exponents are zero; false otherwise.
      implicit none
      class(units), intent(in) :: this
      logical :: nondimensional
    end function

    elemental module function has_length_units(this) result(length_units)
      !! Return true if units match meters (m)
      implicit none
      class(units), intent(in) :: this
      logical :: length_units
    end function

    elemental module function has_mass_units(this) result(mass_units)
      !! Return true if units match kilograms (kg)
      implicit none
      class(units), intent(in) :: this
      logical :: mass_units
    end function

    elemental module function has_time_units(this) result(time_units)
      !! Return true if units match seconds (s)
      implicit none
      class(units), intent(in) :: this
      logical :: time_units
    end function

    elemental module function has_temperature_units(this) result(temperature_units)
      !! Return true if units match degrees Kelvin (K)
      implicit none
      class(units), intent(in) :: this
      logical :: temperature_units
    end function

    elemental module function has_velocity_units(this) result(velocity_units)
      !! Return true if units match meters/second^2 (m/s^2)
      implicit none
      class(units), intent(in) :: this
      logical :: velocity_units
    end function

    elemental module function has_energy_units(this) result(energy_units)
      !! Return true if units match joules (J)
      implicit none
      class(units), intent(in) :: this
      logical :: energy_units
    end function

    elemental module function has_density_units(this) result(density_units)
      !! Return true if units match kilograms (kg/m^3)
      implicit none
      class(units), intent(in) :: this
      logical :: density_units
    end function

    elemental module function has_specific_energy_units(this) result(specific_energy_units)
      !! Return true if units match Joules per kilogram (J/kg)
      implicit none
      class(units), intent(in) :: this
      logical :: specific_energy_units
    end function

    elemental module function has_stress_units(this) result(stress_units)
      !! Return true if units match Newtons per square meter (N/m^2)
      implicit none
      class(units), intent(in) :: this
      logical :: stress_units
    end function

    elemental module function has_power_units(this) result(power_units)
      !! Return true if units match Watts (W)
      implicit none
      class(units), intent(in) :: this
      logical :: power_units
    end function

  end interface

end module