BOUNDARY: update variables for GLM-MHD.
- exchange boundaries for the magnetic field components and scalar potential for GLM-MHD; - slightly rewrite the subroutine bnd_copy();
This commit is contained in:
parent
bee4d07135
commit
5e102ed9f1
@ -544,7 +544,7 @@ module boundaries
|
|||||||
!===============================================================================
|
!===============================================================================
|
||||||
!
|
!
|
||||||
! bnd_copy: subroutine copies the interior of neighbor to update the
|
! bnd_copy: subroutine copies the interior of neighbor to update the
|
||||||
! boundaries of current block
|
! boundaries of the current block
|
||||||
!
|
!
|
||||||
!===============================================================================
|
!===============================================================================
|
||||||
!
|
!
|
||||||
@ -554,7 +554,13 @@ module boundaries
|
|||||||
use config , only : im, ib, ibl, ibu, ie, iel, ieu &
|
use config , only : im, ib, ibl, ibu, ie, iel, ieu &
|
||||||
, jm, jb, jbl, jbu, je, jel, jeu &
|
, jm, jb, jbl, jbu, je, jel, jeu &
|
||||||
, km, kb, kbl, kbu, ke, kel, keu
|
, km, kb, kbl, kbu, ke, kel, keu
|
||||||
use variables, only : nqt, nfl, ibx, iby, ibz
|
use variables, only : nqt, nfl
|
||||||
|
#ifdef MHD
|
||||||
|
use variables, only : ibx, iby, ibz
|
||||||
|
#ifdef GLM
|
||||||
|
use variables, only : iph
|
||||||
|
#endif /* GLM */
|
||||||
|
#endif /* MHD */
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
@ -571,44 +577,60 @@ module boundaries
|
|||||||
case(1)
|
case(1)
|
||||||
|
|
||||||
if (iside .eq. 1) then
|
if (iside .eq. 1) then
|
||||||
pdata%u(1:nfl,1:ibl ,1:jm,1:km) = u(1:nfl,iel:ie ,1:jm,1:km)
|
pdata%u( 1:nfl,1:ibl ,1:jm,1:km) = u( 1:nfl,iel:ie ,1:jm,1:km)
|
||||||
#ifdef MHD
|
#ifdef MHD
|
||||||
#ifdef FLUXCT
|
#ifdef FLUXCT
|
||||||
pdata%u( ibx,1:ibl-1,1:jm,1:km) = u( ibx,iel:ie-1,1:jm,1:km)
|
pdata%u(ibx ,1:ibl-1,1:jm,1:km) = u(ibx ,iel:ie-1,1:jm,1:km)
|
||||||
pdata%u( iby,1:ibl ,1:jm,1:km) = u( iby,iel:ie ,1:jm,1:km)
|
pdata%u(iby ,1:ibl ,1:jm,1:km) = u(iby ,iel:ie ,1:jm,1:km)
|
||||||
pdata%u( ibz,1:ibl ,1:jm,1:km) = u( ibz,iel:ie ,1:jm,1:km)
|
pdata%u(ibz ,1:ibl ,1:jm,1:km) = u(ibz ,iel:ie ,1:jm,1:km)
|
||||||
#endif /* FLUXCT */
|
#endif /* FLUXCT */
|
||||||
|
#ifdef GLM
|
||||||
|
pdata%u(ibx:ibz,1:ibl ,1:jm,1:km) = u(ibx:iby,iel:ie ,1:jm,1:km)
|
||||||
|
pdata%u(iph ,1:ibl ,1:jm,1:km) = u(iph ,iel:ie ,1:jm,1:km)
|
||||||
|
#endif /* GLM */
|
||||||
#endif /* MHD */
|
#endif /* MHD */
|
||||||
else
|
else
|
||||||
pdata%u(1:nfl,ieu:im ,1:jm,1:km) = u(1:nfl,ib:ibu ,1:jm,1:km)
|
pdata%u( 1:nfl,ieu:im,1:jm,1:km) = u( 1:nfl,ib:ibu,1:jm,1:km)
|
||||||
#ifdef MHD
|
#ifdef MHD
|
||||||
#ifdef FLUXCT
|
#ifdef FLUXCT
|
||||||
pdata%u( ibx,ieu:im ,1:jm,1:km) = u( ibx,ib:ibu ,1:jm,1:km)
|
pdata%u(ibx ,ieu:im,1:jm,1:km) = u(ibx ,ib:ibu,1:jm,1:km)
|
||||||
pdata%u( iby,ieu:im ,1:jm,1:km) = u( iby,ib:ibu ,1:jm,1:km)
|
pdata%u(iby ,ieu:im,1:jm,1:km) = u(iby ,ib:ibu,1:jm,1:km)
|
||||||
pdata%u( ibz,ieu:im ,1:jm,1:km) = u( ibz,ib:ibu ,1:jm,1:km)
|
pdata%u(ibz ,ieu:im,1:jm,1:km) = u(ibz ,ib:ibu,1:jm,1:km)
|
||||||
#endif /* FLUXCT */
|
#endif /* FLUXCT */
|
||||||
|
#ifdef GLM
|
||||||
|
pdata%u(ibx:ibz,ieu:im,1:jm,1:km) = u(ibx:ibz,ib:ibu,1:jm,1:km)
|
||||||
|
pdata%u(iph ,ieu:im,1:jm,1:km) = u(iph ,ib:ibu,1:jm,1:km)
|
||||||
|
#endif /* GLM */
|
||||||
#endif /* MHD */
|
#endif /* MHD */
|
||||||
end if
|
end if
|
||||||
|
|
||||||
case(2)
|
case(2)
|
||||||
|
|
||||||
if (iside .eq. 1) then
|
if (iside .eq. 1) then
|
||||||
pdata%u(1:nfl,1:im,1:jbl ,1:km) = u(1:nfl,1:im,jel:je ,1:km)
|
pdata%u( 1:nfl,1:im,1:jbl ,1:km) = u( 1:nfl,1:im,jel:je ,1:km)
|
||||||
#ifdef MHD
|
#ifdef MHD
|
||||||
#ifdef FLUXCT
|
#ifdef FLUXCT
|
||||||
pdata%u( ibx,1:im,1:jbl ,1:km) = u( ibx,1:im,jel:je ,1:km)
|
pdata%u(ibx ,1:im,1:jbl ,1:km) = u(ibx ,1:im,jel:je ,1:km)
|
||||||
pdata%u( iby,1:im,1:jbl-1,1:km) = u( iby,1:im,jel:je-1,1:km)
|
pdata%u(iby ,1:im,1:jbl-1,1:km) = u(iby ,1:im,jel:je-1,1:km)
|
||||||
pdata%u( ibz,1:im,1:jbl ,1:km) = u( ibz,1:im,jel:je ,1:km)
|
pdata%u(ibz ,1:im,1:jbl ,1:km) = u(ibz ,1:im,jel:je ,1:km)
|
||||||
#endif /* FLUXCT */
|
#endif /* FLUXCT */
|
||||||
|
#ifdef GLM
|
||||||
|
pdata%u(ibx:ibz,1:im,1:jbl ,1:km) = u(ibx:ibz,1:im,jel:je ,1:km)
|
||||||
|
pdata%u(iph ,1:im,1:jbl ,1:km) = u(iph ,1:im,jel:je ,1:km)
|
||||||
|
#endif /* GLM */
|
||||||
#endif /* MHD */
|
#endif /* MHD */
|
||||||
else
|
else
|
||||||
pdata%u(1:nfl,1:im,jeu:jm ,1:km) = u(1:nfl,1:im,jb:jbu ,1:km)
|
pdata%u( 1:nfl,1:im,jeu:jm,1:km) = u( 1:nfl,1:im,jb:jbu,1:km)
|
||||||
#ifdef MHD
|
#ifdef MHD
|
||||||
#ifdef FLUXCT
|
#ifdef FLUXCT
|
||||||
pdata%u( ibx,1:im,jeu:jm ,1:km) = u( ibx,1:im,jb:jbu ,1:km)
|
pdata%u(ibx ,1:im,jeu:jm,1:km) = u(ibx ,1:im,jb:jbu,1:km)
|
||||||
pdata%u( iby,1:im,jeu:jm ,1:km) = u( iby,1:im,jb:jbu ,1:km)
|
pdata%u(iby ,1:im,jeu:jm,1:km) = u(iby ,1:im,jb:jbu,1:km)
|
||||||
pdata%u( ibz,1:im,jeu:jm ,1:km) = u( ibz,1:im,jb:jbu ,1:km)
|
pdata%u(ibz ,1:im,jeu:jm,1:km) = u(ibz ,1:im,jb:jbu,1:km)
|
||||||
#endif /* FLUXCT */
|
#endif /* FLUXCT */
|
||||||
|
#ifdef GLM
|
||||||
|
pdata%u(ibx:ibz,1:im,jeu:jm,1:km) = u(ibx:ibz,1:im,jb:jbu,1:km)
|
||||||
|
pdata%u(iph ,1:im,jeu:jm,1:km) = u(iph ,1:im,jb:jbu,1:km)
|
||||||
|
#endif /* GLM */
|
||||||
#endif /* MHD */
|
#endif /* MHD */
|
||||||
end if
|
end if
|
||||||
|
|
||||||
@ -616,26 +638,31 @@ module boundaries
|
|||||||
case(3)
|
case(3)
|
||||||
|
|
||||||
if (iside .eq. 1) then
|
if (iside .eq. 1) then
|
||||||
kl = kel
|
pdata%u( 1:nfl,1:im,1:jm,1:kbl ) = u( 1:nfl,1:im,1:jm,kel:ke )
|
||||||
ku = ke
|
|
||||||
|
|
||||||
ks = 1
|
|
||||||
kt = kbl
|
|
||||||
|
|
||||||
pdata%u(1:nfl,1:im,1:jm,1:kbl ) = u(1:nfl,1:im,jel:je ,1:km)
|
|
||||||
#ifdef MHD
|
#ifdef MHD
|
||||||
#ifdef FLUXCT
|
#ifdef FLUXCT
|
||||||
pdata%u( ibx,1:im,1:jm,1:kbl ) = u( ibx,1:im,jel:je ,1:km)
|
pdata%u(ibx ,1:im,1:jm,1:kbl ) = u(ibx ,1:im,1:jm,kel:ke )
|
||||||
pdata%u( iby,1:im,1:jm,1:kbl ) = u( iby,1:im,jel:je-1,1:km)
|
pdata%u(iby ,1:im,1:jm,1:kbl-1) = u(iby ,1:im,1:jm,kel:ke-1)
|
||||||
pdata%u( ibz,1:im,1:jm,1:kbl-1) = u( ibz,1:im,jel:je ,1:km)
|
pdata%u(ibz ,1:im,1:jm,1:kbl ) = u(ibz ,1:im,1:jm,kel:ke )
|
||||||
#endif /* FLUXCT */
|
#endif /* FLUXCT */
|
||||||
|
#ifdef GLM
|
||||||
|
pdata%u(ibx:ibz,1:im,1:jm,1:kbl ) = u(ibx:ibz,1:im,1:jm,kel:ke )
|
||||||
|
pdata%u(iph ,1:im,1:jm,1:kbl ) = u(iph ,1:im,1:jm,kel:ke )
|
||||||
|
#endif /* GLM */
|
||||||
#endif /* MHD */
|
#endif /* MHD */
|
||||||
else
|
else
|
||||||
kl = kb
|
pdata%u( 1:nfl,1:im,1:jm,keu:km ) = u( 1:nfl,1:im,1:jm,kb:kbu)
|
||||||
ku = kbu
|
#ifdef MHD
|
||||||
|
#ifdef FLUXCT
|
||||||
ks = keu
|
pdata%u(ibx ,1:im,1:jm,keu:km ) = u(ibx ,1:im,1:jm,kb:kbu)
|
||||||
kt = km
|
pdata%u(iby ,1:im,1:jm,keu:km ) = u(iby ,1:im,1:jm,kb:kbu)
|
||||||
|
pdata%u(ibz ,1:im,1:jm,keu:km ) = u(ibz ,1:im,1:jm,kb:kbu)
|
||||||
|
#endif /* FLUXCT */
|
||||||
|
#ifdef GLM
|
||||||
|
pdata%u(ibx:ibz,1:im,1:jm,keu:km) = u(ibx:ibz,1:im,1:jm,kb:kbu)
|
||||||
|
pdata%u(iph ,1:im,1:jm,keu:km) = u(iph ,1:im,1:jm,kb:kbu)
|
||||||
|
#endif /* GLM */
|
||||||
|
#endif /* MHD */
|
||||||
end if
|
end if
|
||||||
#endif /* NDIMS == 3 */
|
#endif /* NDIMS == 3 */
|
||||||
|
|
||||||
|
@ -1009,6 +1009,8 @@ module problem
|
|||||||
check_ref = -1
|
check_ref = -1
|
||||||
end if
|
end if
|
||||||
|
|
||||||
|
check_ref = 1
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
!-------------------------------------------------------------------------------
|
!-------------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user