D.6.12 Set_Values_Distributed_Vector Procedure

The main documentation of the Set_Values_Distributed_Vector Procedure contains additional explanation of this code listing.

  define([SET_VALUES_ROUTINE],[
    pushdef([DIM], [$1])
    pushdef([Set_Values_Distributed_Vector_DIM], 
      expand(Set_Values_Distributed_Vector_DIM))

    subroutine Set_Values_Distributed_Vector_DIM (DV, Values)

      ! Input variable.
  
      type(real,DIM,np), intent(in) :: Values      ! Values bare naked vector.
  
      ! Input/Output variable.
      
      type(Distributed_Vector_type), intent(inout) :: DV ! Variable to be set.
  
      !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
      ! Verify requirements.
  
      VERIFY(Valid_State(DV),5)                      ! DV is valid.
      VERIFY(Valid_State_NP(Values),5)               ! Values is valid.
      VERIFY($1 == DV%Dimensionality,5)   ! DV has been set up for this call.
      VERIFY(SHAPE(Values) == SHAPE(DV%Values$1),5)  ! Values shape check.

      ! Set the value.
  
      DV%Values$1 = Values
  
      ! Increment the version number.

      DV%Version = DV%Version + Version_Increment
  
      ! Verify guarantees.

      VERIFY(Valid_State(DV),5)                            ! DV is still valid.

      return
    end subroutine Set_Values_Distributed_Vector_DIM

    popdef([DIM])
    popdef([Set_Values_Distributed_Vector_DIM])
  ])

  forloop([Dim],[1],[4],[
    SET_VALUES_ROUTINE(Dim)
  ])



Michael L. Hall