createArrays Subroutine

subroutine createArrays(rc)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: rc

Calls

proc~~createarrays~2~~CallsGraph proc~createarrays~2 createArrays esmf_arraycreate esmf_arraycreate proc~createarrays~2->esmf_arraycreate esmf_arrayget esmf_arrayget proc~createarrays~2->esmf_arrayget interface~esmf_distgridcreate ESMF_DistGridCreate proc~createarrays~2->interface~esmf_distgridcreate proc~esmf_arrayspecset ESMF_ArraySpecSet proc~createarrays~2->proc~esmf_arrayspecset proc~esmf_distgridcreatedb ESMF_DistGridCreateDB interface~esmf_distgridcreate->proc~esmf_distgridcreatedb proc~esmf_distgridcreatedbai ESMF_DistGridCreateDBAI interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai proc~esmf_distgridcreatedbai1d ESMF_DistGridCreateDBAI1D interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai1d proc~esmf_distgridcreatedbai1d1de ESMF_DistGridCreateDBAI1D1DE interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai1d1de proc~esmf_distgridcreatedbai1d1dei8 ESMF_DistGridCreateDBAI1D1DEI8 interface~esmf_distgridcreate->proc~esmf_distgridcreatedbai1d1dei8 proc~esmf_distgridcreatedbf ESMF_DistGridCreateDBF interface~esmf_distgridcreate->proc~esmf_distgridcreatedbf proc~esmf_distgridcreatedbt ESMF_DistGridCreateDBT interface~esmf_distgridcreate->proc~esmf_distgridcreatedbt proc~esmf_distgridcreatedbtf ESMF_DistGridCreateDBTF interface~esmf_distgridcreate->proc~esmf_distgridcreatedbtf proc~esmf_distgridcreatedg ESMF_DistGridCreateDG interface~esmf_distgridcreate->proc~esmf_distgridcreatedg proc~esmf_distgridcreatedgt ESMF_DistGridCreateDGT interface~esmf_distgridcreate->proc~esmf_distgridcreatedgt proc~esmf_distgridcreaterd ESMF_DistGridCreateRD interface~esmf_distgridcreate->proc~esmf_distgridcreaterd proc~esmf_distgridcreaterdf ESMF_DistGridCreateRDF interface~esmf_distgridcreate->proc~esmf_distgridcreaterdf proc~esmf_distgridcreaterdt ESMF_DistGridCreateRDT interface~esmf_distgridcreate->proc~esmf_distgridcreaterdt proc~esmf_distgridcreaterdtf ESMF_DistGridCreateRDTF interface~esmf_distgridcreate->proc~esmf_distgridcreaterdtf proc~esmf_logseterror ESMF_LogSetError proc~esmf_arrayspecset->proc~esmf_logseterror

Called by

proc~~createarrays~2~~CalledByGraph proc~createarrays~2 createArrays program~esmf_arrayiotypesutest ESMF_ArrayIOTypesUTest program~esmf_arrayiotypesutest->proc~createarrays~2

Source Code

  subroutine createArrays(rc)
    ! Creates Arrays used by the tests used in this module
    integer, intent(out) :: rc

    type(ESMF_ArraySpec) :: arraySpecInt
    type(ESMF_ArraySpec) :: arraySpecFloat
    type(ESMF_ArraySpec) :: arraySpecDouble
    integer :: i, j

    distgrid = ESMF_DistGridCreate(minIndex=[1,1], maxIndex=[3*petCount,4], regDecomp=[petCount,1], rc=rc)
    if (rc /= ESMF_SUCCESS) return

    call ESMF_ArraySpecSet(arraySpecInt, typekind=ESMF_TYPEKIND_I4, rank=2, rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArraySpecSet(arraySpecFloat, typekind=ESMF_TYPEKIND_R4, rank=2, rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArraySpecSet(arraySpecDouble, typekind=ESMF_TYPEKIND_R8, rank=2, rc=rc)
    if (rc /= ESMF_SUCCESS) return
    
    arrayInt = ESMF_ArrayCreate(distgrid, arraySpecInt, name="arrayInt", rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArrayGet(arrayInt, farrayPtr=arrayIntData, rc=rc)
    if (rc /= ESMF_SUCCESS) return
    do j = 1, size(arrayIntData, 2)
      do i = 1, size(arrayIntData, 1)
        arrayIntData(i,j) = (localPet+1) * 17 * ((i-1)*size(arrayIntData,2) + (j-1))
      end do
    end do

    arrayIntRead = ESMF_ArrayCreate(distgrid, arraySpecInt, name="arrayInt", rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArrayGet(arrayIntRead, farrayPtr=arrayIntReadData, rc=rc)
    if (rc /= ESMF_SUCCESS) return

    arrayFloat = ESMF_ArrayCreate(distgrid, arraySpecFloat, name="arrayFloat", rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArrayGet(arrayFloat, farrayPtr=arrayFloatData, rc=rc)
    if (rc /= ESMF_SUCCESS) return
    do j = 1, size(arrayFloatData, 2)
      do i = 1, size(arrayFloatData, 1)
        arrayFloatData(i,j) = (localPet+1) * 27.0 * ((i-1)*size(arrayFloatData,2) + (j-1))
      end do
    end do

    arrayFloatRead = ESMF_ArrayCreate(distgrid, arraySpecFloat, name="arrayFloat", rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArrayGet(arrayFloatRead, farrayPtr=arrayFloatReadData, rc=rc)
    if (rc /= ESMF_SUCCESS) return

    arrayDouble = ESMF_ArrayCreate(distgrid, arraySpecDouble, name="arrayDouble", rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArrayGet(arrayDouble, farrayPtr=arrayDoubleData, rc=rc)
    if (rc /= ESMF_SUCCESS) return
    do j = 1, size(arrayDoubleData, 2)
      do i = 1, size(arrayDoubleData, 1)
        arrayDoubleData(i,j) = (localPet+1) * 37.0 * ((i-1)*size(arrayDoubleData,2) + (j-1))
      end do
    end do

    arrayDoubleRead = ESMF_ArrayCreate(distgrid, arraySpecDouble, name="arrayDouble", rc=rc)
    if (rc /= ESMF_SUCCESS) return
    call ESMF_ArrayGet(arrayDoubleRead, farrayPtr=arrayDoubleReadData, rc=rc)
    if (rc /= ESMF_SUCCESS) return

  end subroutine createArrays