alloc_state_coarse Subroutine

private subroutine alloc_state_coarse(igrid, s, ixGmin1, ixGmin2, ixGmin3, ixGmax1, ixGmax2, ixGmax3)

Uses

  • proc~~alloc_state_coarse~2~~UsesGraph proc~alloc_state_coarse~2 alloc_state_coarse module~mod_global_parameters mod_global_parameters proc~alloc_state_coarse~2->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

allocate memory to one-level coarser physical state of igrid node

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: igrid
type(state) :: s
integer, intent(in) :: ixGmin1
integer, intent(in) :: ixGmin2
integer, intent(in) :: ixGmin3
integer, intent(in) :: ixGmax1
integer, intent(in) :: ixGmax2
integer, intent(in) :: ixGmax3

Calls

proc~~alloc_state_coarse~2~~CallsGraph proc~alloc_state_coarse~2 alloc_state_coarse proc~point_at_geometry~2 point_at_geometry proc~alloc_state_coarse~2->proc~point_at_geometry~2

Called by

proc~~alloc_state_coarse~2~~CalledByGraph proc~alloc_state_coarse~2 alloc_state_coarse proc~alloc_node~2 alloc_node proc~alloc_node~2->proc~alloc_state_coarse~2

Source Code

  subroutine alloc_state_coarse(igrid, s, ixGmin1,ixGmin2,ixGmin3,ixGmax1,&
     ixGmax2,ixGmax3)
    use mod_global_parameters
    type(state) :: s
    integer, intent(in) :: igrid, ixGmin1,ixGmin2,ixGmin3,ixGmax1,ixGmax2,&
       ixGmax3
    integer             :: ixGsmin1,ixGsmin2,ixGsmin3,ixGsmax1,ixGsmax2,&
       ixGsmax3
  
!    allocate(s%w(ixGmin1:ixGmax1,ixGmin2:ixGmax2,ixGmin3:ixGmax3,1:nw))
    s%w => bgc(1)%w(:,:,:,:,igrid)


    s%igrid=igrid
    s%w=0.d0
    s%ixGmin1=ixGmin1;s%ixGmin2=ixGmin2;s%ixGmin3=ixGmin3;s%ixGmax1=ixGmax1
    s%ixGmax2=ixGmax2;s%ixGmax3=ixGmax3;
     ixGsmin1 = ixGmin1-1; ixGsmax1 = ixGmax1; ixGsmin2 = ixGmin2-1
     ixGsmax2 = ixGmax2; ixGsmin3 = ixGmin3-1; ixGsmax3 = ixGmax3
    if(stagger_grid) then
      allocate(s%ws(ixGsmin1:ixGsmax1,ixGsmin2:ixGsmax2,ixGsmin3:ixGsmax3,&
         1:nws))
      s%ws=0.d0
      s%ixGsmin1=ixGsmin1;s%ixGsmin2=ixGsmin2;s%ixGsmin3=ixGsmin3
      s%ixGsmax1=ixGsmax1;s%ixGsmax2=ixGsmax2;s%ixGsmax3=ixGsmax3;
    end if
    if(B0fieldAllocCoarse) then
      allocate(s%B0(ixGmin1:ixGmax1,ixGmin2:ixGmax2,ixGmin3:ixGmax3,1:ndir,&
         0:ndim))
    end if
    ! coarse representatives take their geometry from bgeoc, see alloc_state;
    ! they need no extra layer, so their "extended" range is just ixG
    call point_at_geometry(s, bgeoc, igrid, ixGmin1,ixGmin2,ixGmin3,ixGmax1,&
       ixGmax2,ixGmax3, ixGmin1,ixGmin2,ixGmin3,ixGmax1,ixGmax2,ixGmax3)
    ! allocate physical boundary flag
    allocate(s%is_physical_boundary(2*ndim))

  end subroutine alloc_state_coarse