Merge branch 'master' into reconnection

This commit is contained in:
Grzegorz Kowal 2021-09-20 08:47:56 -03:00
commit c73354b573

View File

@ -69,7 +69,6 @@ module evolution
! coefficients controlling the decay of scalar potential ѱ
!
real(kind=8) , save :: glm_alpha = 5.0d-01
real(kind=8) , save :: decay = 7.788007830714049d-01
! time variables
!
@ -98,6 +97,10 @@ module evolution
!
real(kind=8), dimension(3), save :: errs
! GLM variables
!
real(kind=8), dimension(:), allocatable, save :: adecay, aglm
! by default everything is private
!
private
@ -140,7 +143,8 @@ module evolution
! include external procedures
!
use parameters, only : get_parameter
use coordinates, only : toplev, adx, ady, adz
use parameters , only : get_parameter
! local variables are not implicit by default
!
@ -281,20 +285,19 @@ module evolution
end select
! proceed if everything is fine
!
if (status == 0) then
! calculate the decay factor for magnetic field divergence scalar source term
!
decay = exp(- glm_alpha * cfl)
end if ! status
! reset recent error history
!
errs = 1.0d+00
! GLM coefficients for all refinement levels
!
allocate(adecay(toplev), aglm(toplev))
#if NDIMS == 3
aglm(:) = - glm_alpha / min(adx(:), ady(:), adz(:))
#else /* NDIMS == 3 */
aglm(:) = - glm_alpha / min(adx(:), ady(:))
#endif /* NDIMS == 3 */
#ifdef PROFILE
! stop accounting time for module initialization/finalization
!
@ -345,6 +348,9 @@ module evolution
call start_timer(imi)
#endif /* PROFILE */
if (allocated(adecay)) deallocate(adecay)
if (allocated(aglm)) deallocate(aglm)
! reset the status flag
!
status = 0
@ -682,7 +688,7 @@ module evolution
use blocks , only : block_data, list_data
use boundaries, only : boundary_fluxes
use equations , only : ibp
use equations , only : ibp, cmax
use sources , only : update_sources
implicit none
@ -722,10 +728,12 @@ module evolution
end do
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
@ -761,8 +769,8 @@ module evolution
use blocks , only : block_data, list_data
use boundaries, only : boundary_fluxes
use equations , only : ibp
use sources , only : update_sources
use equations , only : ibp, cmax
use sources , only : update_sources
implicit none
@ -833,10 +841,12 @@ module evolution
end do
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
@ -876,7 +886,7 @@ module evolution
use blocks , only : block_data, list_data, get_dblocks
use boundaries , only : boundary_fluxes
use coordinates, only : nc => ncells, nb, ne
use equations , only : errors, nf, ibp
use equations , only : errors, nf, ibp, cmax
#ifdef MPI
use mpitools , only : reduce_maximum
#endif /* MPI */
@ -1100,13 +1110,21 @@ module evolution
pdata%u => pdata%uu(:,:,:,:,1)
! update ψ with its source term
!
if (ibp > 0) pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
end if
call update_variables(tm, dtm)
#ifdef PROFILE
@ -1138,7 +1156,7 @@ module evolution
use blocks , only : block_data, list_data
use boundaries, only : boundary_fluxes
use equations , only : ibp
use equations , only : ibp, cmax
use sources , only : update_sources
implicit none
@ -1243,10 +1261,12 @@ module evolution
end do
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
@ -1284,7 +1304,7 @@ module evolution
use blocks , only : block_data, list_data
use boundaries, only : boundary_fluxes
use equations , only : ibp
use equations , only : ibp, cmax
use sources , only : update_sources
implicit none
@ -1407,10 +1427,12 @@ module evolution
end do
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
@ -1448,7 +1470,7 @@ module evolution
use blocks , only : block_data, list_data
use boundaries, only : boundary_fluxes
use equations , only : ibp
use equations , only : ibp, cmax
use sources , only : update_sources
implicit none
@ -1615,10 +1637,12 @@ module evolution
end do
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
@ -1656,7 +1680,7 @@ module evolution
use blocks , only : block_data, list_data, get_dblocks
use boundaries , only : boundary_fluxes
use coordinates, only : nc => ncells, nb, ne
use equations , only : errors, nf, ibp
use equations , only : errors, nf, ibp, cmax
#ifdef MPI
use mpitools , only : reduce_maximum
#endif /* MPI */
@ -1983,10 +2007,12 @@ module evolution
call update_variables(tm, dtm)
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do
@ -2021,7 +2047,7 @@ module evolution
use blocks , only : block_data, list_data
use boundaries, only : boundary_fluxes
use equations , only : ibp
use equations , only : ibp, cmax
use sources , only : update_sources
implicit none
@ -2157,10 +2183,12 @@ module evolution
end do
if (ibp > 0) then
adecay(:) = exp(aglm(:) * cmax * dt)
pdata => list_data
do while (associated(pdata))
pdata%u(ibp,:,:,:) = decay * pdata%u(ibp,:,:,:)
pdata%u(ibp,:,:,:) = adecay(pdata%meta%level) * pdata%u(ibp,:,:,:)
pdata => pdata%next
end do