amr_1blk_guardcell调用
!! CALLS
!!
!! mpi_amr_local_surr_blks_lkup
!! mpi_amr_1blk_guardcell_c_to_f
!! mpi_amr_get_remote_block
!! amr_perm_to_1blk
!! amr_1blk_guardcell_srl
amr_perm_to_1blk
amr_1blk_guardcell_srl
调用
amr_1blk_bcset,
1.
amr_guardcell调用==》
amr_1blk_guardcell,而amr_1blk_guardcell调用了==》amr_perm_to_1blk把unk拷贝到unk1的
内部cell。
amr_perm_to_1blk中调用
!-----appropriate guardcell padding.
If (iopt == 1) Then
If (lcc) Then
If (lb <= lnblocks) Then
Do ivar=1,nvar
If (int_gcell_on_cc(ivar)) Then
unk1(ivar, &
1+nguard:nxb+nguard, &
1+nguard*k2d:nyb+nguard*k2d, &
1+nguard*k3d:nzb+nguard*k3d, &
idest) = &
unk(ivar, &
1+nguard0:nxb+nguard0, &
1+nguard0*k2d:nyb+nguard0*k2d, &
1+nguard0*k3d:nzb+nguard0*k3d, &
lb)
End If
End Do
2.
a
mr_1blk_guardcell然后调用
amr_1blk_guardcell_srl,
amr_1blk_guardcell_srl调用amr_1blk_bcset在amr_1blk_bcset中设置边界条件对unk1进行操作,把unk1的guard cell层的数据设置好
3.
amr_guardcell在调用amr_1blk_guardcell后调用下面片段。这样完成了边界条件的设置
这段代码嵌套在循环中,比如id:iu在每次循环时对应于
(1:nguard),(nguard+1:nxb+nguard),(nxb+nguard+1:nxb+2*nguard)
If (iopt == 1) Then
Do ivar=1,nvar
If (int_gcell_on_cc(ivar)) Then
unk(ivar,id:iu,jd:ju,kd:ku,lb) = &
unk1(ivar,id:iu,jd:ju,kd:ku,1)
Endif
Enddo