I.1.21 Get Value Multi_Mesh Functions

The main documentation of the Get Value Multi_Mesh Functions contains additional explanation of this code listing.

  define([POINTER_ACCESS_ROUTINE],[
    pushdef([VALUE], [$1])
    pushdef([VALUE_Result], expand(VALUE_Result))
    pushdef([Get_POINTER_VALUE_Multi_Mesh], expand(Get_VALUE_Multi_Mesh))

    function Get_POINTER_VALUE_Multi_Mesh (Mesh) result(VALUE_Result)
  
      ! Input variable.
  
      type(Multi_Mesh_type), target, intent(inout) :: Mesh ! Mesh object.

      ! Input/Output variable.
    
      ! Pointer to requested Base Structure.
      type(Base_Structure_type), pointer :: VALUE_Result   

      !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
      ! Verify requirements.
  
      VERIFY(Valid_State(Mesh),5)          ! Mesh is valid.

      ! Assign the pointer.

      VALUE_Result => Mesh%VALUE

      ! Verify guarantees.
  
      VERIFY(Valid_State(Mesh),5)          ! Mesh is valid.
  
      return
    end function Get_POINTER_VALUE_Multi_Mesh

    popdef([VALUE])
    popdef([VALUE_Result])
    popdef([Get_POINTER_VALUE_Multi_Mesh])
  ])

  fortext([Value],
          [Cell_Structure Node_Structure Face_Structure],[
    POINTER_ACCESS_ROUTINE(Value)
  ])

  define([ACCESS_ROUTINE],[
    pushdef([VALUE], [$1])
    ifelse([$2], [2],
      [pushdef([DIMENSION], [, dimension(2)])],
      [pushdef([DIMENSION], [])])
    pushdef([Get_VALUE_Multi_Mesh], expand(Get_VALUE_Multi_Mesh))

    function Get_VALUE_Multi_Mesh (Mesh) result(VALUE)

      ! Input/Output variables.

      ! Base_Mesh object.
      type(Multi_Mesh_type), intent(in) :: Mesh 

      ! Output variables.

      type(integer) DIMENSION :: VALUE       ! Multi_Mesh value to be output.
  
      !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
      ! Verify requirements.
  
      VERIFY(Valid_State(Mesh),5)     ! Mesh is valid.

      ! Set value.

      VALUE = Mesh%VALUE

      ! Verify guarantees - none.
  
      return
    end function Get_VALUE_Multi_Mesh

    popdef([VALUE])
    popdef([DIMENSION])
    popdef([Get_VALUE_Multi_Mesh])
  ])

  fortext([Value],
          [First_Cell_PE Last_Cell_PE NCells_PE NCells_Total dnl
           First_Node_PE Last_Node_PE NNodes_PE NNodes_Total dnl
           First_Face_PE Last_Face_PE NFaces_PE NFaces_Total dnl
           Faces_per_Cell NDimensions],[
    ACCESS_ROUTINE(Value)
  ])

  fortext([Value],
          [Range_Cells_PE Range_Nodes_PE Range_Faces_PE],[
    ACCESS_ROUTINE(Value, 2)
  ])

  function Get_Name_Multi_Mesh (Mesh) result(Name)

    ! Input variable.

    type(Multi_Mesh_type), intent(in) :: Mesh  ! Variable to be queried.

    ! Output variable.

    type(character,name_length) :: Name             ! Name of Mesh.

    !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ! Verify requirements.

    VERIFY(Valid_State(Mesh),5)      ! Mesh is valid.

    ! Set the value.

    Name = Mesh%Name

    ! Verify guarantees - none.

    return
  end function Get_Name_Multi_Mesh



Michael L. Hall