copy_stencilHeader Subroutine

private subroutine copy_stencilHeader(left, right)

This function provides copy assigment for tem_stencilHeader_type

Arguments

Type IntentOptional Attributes Name
type(tem_stencilHeader_type), intent(out) :: left

tem_stencilHeader to copy to

type(tem_stencilHeader_type), intent(in) :: right

tem_stencilHeader to copy from


Called by

proc~~copy_stencilheader~~CalledByGraph proc~copy_stencilheader copy_stencilHeader interface~assignment(=) assignment(=) interface~assignment(=)->proc~copy_stencilheader

Source Code

  subroutine copy_stencilHeader(left, right)
    ! -------------------------------------------------------------------- !
    !> tem_stencilHeader to copy to
    type(tem_stencilHeader_type), intent(out) :: left
    !> tem_stencilHeader to copy from
    type(tem_stencilHeader_type), intent(in) :: right
    ! -------------------------------------------------------------------- !

    left%label = right%label
    left%QQ = right%QQ
    left%QQN = right%QQN
    left%nDims = right%nDims

    if ( allocated(right%cxDir) ) then
      allocate(left%cxDir(size(right%cxDir,1),size(right%cxDir,2)))
      left%cxDir = right%cxDir
    end if

    if ( allocated(right%cxDirRK) ) then
      allocate(left%cxDirRK(size(right%cxDirRK,1),size(right%cxDirRK,2)))
      left%cxDirRK = right%cxDirRK
    end if

    if ( allocated(right%cxDirInv) ) then
      allocate(left%cxDirInv(size(right%cxDirInv)))
      left%cxDirInv = right%cxDirInv
    end if

    if ( allocated(right%cxcx) ) then
      allocate(left%cxcx(size(right%cxcx,1),size(right%cxcx,2)))
      left%cxcx = right%cxcx
    end if

    if ( allocated(right%map) ) then
      allocate(left%map(size(right%map)))
      left%map = right%map
    end if

    if ( allocated(right%map2treeDef) ) then
      allocate(left%map2treeDef(size(right%map2treeDef)))
      left%map2treeDef = right%map2treeDef
    end if

    left%restPosition      = right%restPosition
    left%depStencil        = right%depStencil
    left%useAll            = right%useAll
    left%requireNeighNeigh = right%requireNeighNeigh
    left%requireAll        = right%requireAll

    left%nElems = right%nElems

    if ( allocated(right%elemLvl) ) then
      allocate( left%elemLvl(lbound(right%elemLvl,1):ubound(right%elemLvl,1)) )
      left%elemLvl = right%elemLvl
    end if

    left%elem = right%elem
  end subroutine copy_stencilHeader