Skip to content
Snippets Groups Projects
Commit d157cc1c authored by Antoine Cyril David Hoffmann's avatar Antoine Cyril David Hoffmann :seedling:
Browse files

minor changes

parent bb7730bf
No related branches found
No related tags found
No related merge requests found
...@@ -51,7 +51,7 @@ MODULE array ...@@ -51,7 +51,7 @@ MODULE array
! REAL(xp), DIMENSION(:,:,:), ALLOCATABLE :: HF_phi_correction_operator ! REAL(xp), DIMENSION(:,:,:), ALLOCATABLE :: HF_phi_correction_operator
! Kinetic spectrum sum_kx,ky(|Napj(z)|^2), (ia,ip,ij,iz) (should be real) ! Kinetic spectrum sum_kx,ky(|Napj(z)|^2), (ia,ip,ij,iz) (should be real)
REAL(xp), DIMENSION(:,:,:,:), ALLOCATABLE :: Napjz COMPLEX(xp), DIMENSION(:,:,:,:), ALLOCATABLE :: Napjz
! particle density for electron and ions (iky,ikx,iz) ! particle density for electron and ions (iky,ikx,iz)
COMPLEX(xp), DIMENSION(:,:,:,:), ALLOCATABLE :: dens COMPLEX(xp), DIMENSION(:,:,:,:), ALLOCATABLE :: dens
......
...@@ -20,8 +20,9 @@ SUBROUTINE inital ...@@ -20,8 +20,9 @@ SUBROUTINE inital
!!!!!! Set the moments arrays Nepj, Nipj and phi!!!!!! !!!!!! Set the moments arrays Nepj, Nipj and phi!!!!!!
! through loading a previous state ! through loading a previous state
IF ( job2load .GE. 0 ) THEN IF ( job2load .GE. 0 ) THEN
CALL speak('Load moments') CALL speak('Load moments')
CALL load_moments ! get N_0 CALL load_moments ! get N_0
CALL apply_closure_model
CALL update_ghosts_moments CALL update_ghosts_moments
CALL solve_EM_fields ! compute phi_0=phi(N_0) CALL solve_EM_fields ! compute phi_0=phi(N_0)
CALL update_ghosts_EM CALL update_ghosts_EM
...@@ -324,7 +325,7 @@ END SUBROUTINE init_phi_ppj ...@@ -324,7 +325,7 @@ END SUBROUTINE init_phi_ppj
!!!!!!! Initialize an ionic Gaussian blob on top of the preexisting modes !!!!!!! Initialize an ionic Gaussian blob on top of the preexisting modes
!******************************************************************************! !******************************************************************************!
SUBROUTINE initialize_blob SUBROUTINE initialize_blob
USE grid, ONLY: local_na, local_np, local_nj, total_nkx, local_nky, local_nz,& USE grid, ONLY: local_na, local_np, local_nj, total_nkx, local_nky, local_nz, total_nz,&
AA_x, AA_y, parray, jarray,& AA_x, AA_y, parray, jarray,&
ngp,ngj,ngz, iky0, ieven, kxarray, kyarray, zarray ngp,ngj,ngz, iky0, ieven, kxarray, kyarray, zarray
USE fields, ONLY: moments USE fields, ONLY: moments
...@@ -335,9 +336,16 @@ SUBROUTINE initialize_blob ...@@ -335,9 +336,16 @@ SUBROUTINE initialize_blob
IMPLICIT NONE IMPLICIT NONE
REAL(xp) ::kx, ky, z, sigma_x, sigma_y, gain REAL(xp) ::kx, ky, z, sigma_x, sigma_y, gain
INTEGER :: ia,iky,ikx,iz,ip,ij, p, j INTEGER :: ia,iky,ikx,iz,ip,ij, p, j
sigma_y = 1.0 sigma_y = 0.5
sigma_x = sigma_y sigma_x = sigma_y
gain = 10.0 gain = 1.0
! One can increase the gain if we run 3D sim
IF(total_nz .GT. 1) THEN
sigma_y = 1.0
sigma_x = sigma_y
gain = 10.0
ENDIF
DO ia=1,local_na DO ia=1,local_na
DO iky=1,local_nky DO iky=1,local_nky
ky = kyarray(iky) ky = kyarray(iky)
......
...@@ -35,7 +35,7 @@ SUBROUTINE memory ...@@ -35,7 +35,7 @@ SUBROUTINE memory
CALL allocate_array( Sapj, 1,local_na, 1,local_np, 1,local_nj, 1,local_nky, 1,local_nkx, 1,local_nz) CALL allocate_array( Sapj, 1,local_na, 1,local_np, 1,local_nj, 1,local_nky, 1,local_nkx, 1,local_nz)
! 4D+ arrays ! 4D+ arrays
CALL allocate_array( napjz, 1,local_na, 1,local_np, 1,local_nj, 1,local_nz) CALL allocate_array( Napjz, 1,local_na, 1,local_np, 1,local_nj, 1,local_nz)
CALL allocate_array( dens, 1,local_na, 1,local_nky, 1,local_nkx, 1,local_nz) CALL allocate_array( dens, 1,local_na, 1,local_nky, 1,local_nkx, 1,local_nz)
CALL allocate_array( upar, 1,local_na, 1,local_nky, 1,local_nkx, 1,local_nz) CALL allocate_array( upar, 1,local_na, 1,local_nky, 1,local_nkx, 1,local_nz)
CALL allocate_array( uper, 1,local_na, 1,local_nky, 1,local_nkx, 1,local_nz) CALL allocate_array( uper, 1,local_na, 1,local_nky, 1,local_nkx, 1,local_nz)
......
...@@ -377,18 +377,18 @@ CONTAINS ...@@ -377,18 +377,18 @@ CONTAINS
USE array, ONLY : Napjz USE array, ONLY : Napjz
USE time_integration, ONLY : updatetlevel USE time_integration, ONLY : updatetlevel
IMPLICIT NONE IMPLICIT NONE
REAL(xp), DIMENSION(local_np,local_nj,local_nz) :: local_sum,global_sum, buffer REAL(xp), DIMENSION(local_np,local_nj,local_nz) :: local_sum, global_sum, buffer
INTEGER :: i_, root, count, ia, ip, ij, iky, ikx, iz INTEGER :: i_, root, count, ia, ip, ij, iky, ikx, iz
root = 0 root = 0
DO ia=1,local_na DO ia=1,local_na
! z-moment spectrum ! z-moment spectrum
! build local sum ! build local sum
local_sum = 0._xp local_sum = 0._xp
DO iz = 1,local_nz DO iz = 1,local_nz
DO ikx = 1,local_nkx DO ikx = 1,local_nkx
DO iky = 1,local_nky DO iky = 1,local_nky
DO ij = 1,local_nj DO ij = 1,local_nj
DO ip = 1,local_np DO ip = 1,local_np
local_sum(ip,ij,iz) = local_sum(ip,ij,iz) + & local_sum(ip,ij,iz) = local_sum(ip,ij,iz) + &
(moments(ia,ip+Ngp/2,ij+Ngj/2,iky,ikx,iz+Ngz/2,updatetlevel) & (moments(ia,ip+Ngp/2,ij+Ngj/2,iky,ikx,iz+Ngz/2,updatetlevel) &
* CONJG(moments(ia,ip+Ngp/2,ij+Ngj/2,iky,ikx,iz+Ngz/2,updatetlevel))) * CONJG(moments(ia,ip+Ngp/2,ij+Ngj/2,iky,ikx,iz+Ngz/2,updatetlevel)))
......
...@@ -2,7 +2,9 @@ MODULE restarts ...@@ -2,7 +2,9 @@ MODULE restarts
USE basic USE basic
USE futils, ONLY: openf, closef, getarr, getatt, isgroup,& USE futils, ONLY: openf, closef, getarr, getatt, isgroup,&
isdataset, getarrnd, putarrnd isdataset, getarrnd, putarrnd
USE grid USE grid, ONLY: local_Na,local_Na_offset,local_np,local_np_offset,&
local_nj,local_nj_offset,local_nky,local_nky_offset,local_nkx,local_nkx_offset,&
local_nz,local_nz_offset,ngp,ngj,ngz, total_nz, deltap
USE fields USE fields
USE diagnostics_par USE diagnostics_par
USE time_integration USE time_integration
...@@ -23,8 +25,8 @@ CONTAINS ...@@ -23,8 +25,8 @@ CONTAINS
INTEGER :: cstep_cp, jobnum_cp INTEGER :: cstep_cp, jobnum_cp
INTEGER :: n_ INTEGER :: n_
INTEGER :: deltap_cp INTEGER :: deltap_cp
INTEGER :: pmax_cp, jmax_cp, n0, Nkx_cp, Nky_cp, Nz_cp, Na_cp, Np_cp, Nj_cp INTEGER :: n0, Np_cp, Nj_cp, Nkx_cp, Nky_cp, Nz_cp, Na_cp
INTEGER :: ia,ip,ij,iky,ikx,iz, iacp,ipcp,ijcp,iycp,ixcp,izcp, ierr INTEGER :: ia,ip,ij,iky,ikx,iz,it, iacp,ipcp,ijcp,iycp,ixcp,izcp, ierr
INTEGER :: ipi,iji,izi INTEGER :: ipi,iji,izi
REAL(xp):: timer_tot_1,timer_tot_2 REAL(xp):: timer_tot_1,timer_tot_2
COMPLEX(xp), DIMENSION(:,:,:,:,:,:), ALLOCATABLE :: moments_cp COMPLEX(xp), DIMENSION(:,:,:,:,:,:), ALLOCATABLE :: moments_cp
...@@ -38,15 +40,13 @@ CONTAINS ...@@ -38,15 +40,13 @@ CONTAINS
CALL getatt(fidrst,"/data/input/grid" , "Nkx", Nkx_cp) CALL getatt(fidrst,"/data/input/grid" , "Nkx", Nkx_cp)
CALL getatt(fidrst,"/data/input/grid" , "Nky", Nky_cp) CALL getatt(fidrst,"/data/input/grid" , "Nky", Nky_cp)
CALL getatt(fidrst,"/data/input/grid" , "Nz", Nz_cp) CALL getatt(fidrst,"/data/input/grid" , "Nz", Nz_cp)
IF(Nz_cp .NE. Nz) & IF(Nz_cp .NE. total_nz) &
ERROR STOP "!! cannot change Nz in a restart, interp or reduction not implemented !!" ERROR STOP "!! cannot change Nz in a restart, interp or reduction not implemented !!"
CALL getatt(fidrst,"/data/input/grid" ,"deltap",deltap_cp) CALL getatt(fidrst,"/data/input/grid" ,"deltap",deltap_cp)
IF(deltap_cp .NE. deltap) & IF(deltap_cp .NE. deltap) &
ERROR STOP "!! cannot change deltap in a restart, not implemented !!" ERROR STOP "!! cannot change deltap in a restart, not implemented !!"
CALL getatt(fidrst,"/data/input/grid" , "pmax", pmax_cp) CALL getatt(fidrst,"/data/input/grid" , "Np", Np_cp)
Np_cp = pmax_cp/deltap_cp+1 CALL getatt(fidrst,"/data/input/grid" , "Nj", Nj_cp)
CALL getatt(fidrst,"/data/input/grid" , "jmax", jmax_cp)
Nj_cp = jmax_cp+1
CALL getatt(fidrst,"/data/input/model", "Na", Na_cp) CALL getatt(fidrst,"/data/input/model", "Na", Na_cp)
CALL getatt(fidrst,"/data/input/basic" , "start_iframe5d", n0) CALL getatt(fidrst,"/data/input/basic" , "start_iframe5d", n0)
! Find the last results of the checkpoint file by iteration ! Find the last results of the checkpoint file by iteration
...@@ -67,10 +67,10 @@ CONTAINS ...@@ -67,10 +67,10 @@ CONTAINS
CALL speak('.. restart from t = '//str(time)) CALL speak('.. restart from t = '//str(time))
! Read state of system from checkpoint file ! Read state of system from checkpoint file
! Brute force loading: load the full moments and take what is needed (RAM dangerous...) ! Brute force loading: load the full moments and take what is needed (RAM dangerous...)
! other possibility is to loop over slices ! (other possibility would be to loop over slices)
CALL allocate_array(moments_cp, 1,Na_cp, 1,Np_cp, 1,Nj_cp, 1,Nky_cp, 1,Nkx_cp, 1,Nz_cp) CALL allocate_array(moments_cp, 1,Na_cp, 1,Np_cp, 1,Nj_cp, 1,Nky_cp, 1,Nkx_cp, 1,Nz_cp)
WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments", n_ WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments", n_
CALL getarr(fidrst, dset_name, moments_cp(:,:,:,:,:,:)) CALL getarr(fidrst, dset_name, moments_cp)
moments = 0._xp; moments = 0._xp;
z: DO iz = 1,local_nz z: DO iz = 1,local_nz
...@@ -86,7 +86,7 @@ CONTAINS ...@@ -86,7 +86,7 @@ CONTAINS
p: DO ip=1,local_np p: DO ip=1,local_np
ipcp = ip + local_np_offset ipcp = ip + local_np_offset
ipi = ip + ngp/2 ipi = ip + ngp/2
a: DO ia=1,Na_cp a: DO ia=1,local_na
iacp = ia + local_na_offset iacp = ia + local_na_offset
! IF((iacp.LE.Na_cp).AND.(ipcp.LE.Np_cp).AND.(ijcp.LE.Nj_cp).AND.(iycp.LE.Nky_cp).AND.(ixcp.LE.Nkx_cp).AND.(izcp.LE.Nz_cp)) & ! IF((iacp.LE.Na_cp).AND.(ipcp.LE.Np_cp).AND.(ijcp.LE.Nj_cp).AND.(iycp.LE.Nky_cp).AND.(ixcp.LE.Nkx_cp).AND.(izcp.LE.Nz_cp)) &
moments(ia,ipi,iji,iky,ikx,izi,1) = moments_cp(iacp,ipcp,ijcp,iycp,ixcp,izcp) moments(ia,ipi,iji,iky,ikx,izi,1) = moments_cp(iacp,ipcp,ijcp,iycp,ixcp,izcp)
...@@ -96,6 +96,15 @@ CONTAINS ...@@ -96,6 +96,15 @@ CONTAINS
ENDDO y ENDDO y
ENDDO x ENDDO x
ENDDO z ENDDO z
! DO it = 1,4
! moments(1:local_Na,(1+ngp/2):(local_np+ngp/2),(1+ngj/2):(local_nj+ngj/2),1:local_nky,1:local_nkx,(1+ngz/2):(local_nz+ngz/2),it) =&
! moments_cp((1+local_Na_offset):(local_Na+local_Na_offset),&
! (1+local_np_offset):(local_np+local_np_offset),&
! (1+local_nj_offset):(local_nj+local_nj_offset),&
! (1+local_nky_offset):(local_nky+local_nky_offset),&
! (1+local_nkx_offset):(local_nkx+local_nkx_offset),&
! (1+local_nz_offset):(local_nz+local_nz_offset))
! ENDDO
!! deallocate the full moment variable !! deallocate the full moment variable
DEALLOCATE(moments_cp) DEALLOCATE(moments_cp)
CALL closef(fidrst) CALL closef(fidrst)
......
&BASIC &BASIC
nrun = 99999999 nrun = 99999999
dt = 0.01 dt = 0.01
tmax = 50 tmax = 25
maxruntime = 72000 maxruntime = 72000
job2load = -1 job2load = -1
/ /
&GRID &GRID
pmax = 4 pmax = 2
jmax = 2 jmax = 1
Nx = 128 Nx = 64
Lx = 200 Lx = 200
Ny = 48 Ny = 48
Ly = 60 Ly = 60
...@@ -63,7 +63,8 @@ ...@@ -63,7 +63,8 @@
/ /
&CLOSURE_PAR &CLOSURE_PAR
hierarchy_closure='truncation' hierarchy_closure='truncation'
dmax = -1 !hierarchy_closure='max_degree'
dmax = 2
nonlinear_closure='anti_laguerre_aliasing' !(truncation,full_sum,anti_laguerre_aliasing) nonlinear_closure='anti_laguerre_aliasing' !(truncation,full_sum,anti_laguerre_aliasing)
nmax = 0 nmax = 0
/ /
...@@ -92,7 +93,7 @@ ...@@ -92,7 +93,7 @@
mat_file = 'gk_sugama_P_20_J_10_N_150_kpm_8.0.h5' mat_file = 'gk_sugama_P_20_J_10_N_150_kpm_8.0.h5'
/ /
&INITIAL_CON &INITIAL_CON
INIT_OPT = 'phi' !(phi,blob) INIT_OPT = 'blob' !(phi,blob)
ACT_ON_MODES = 'donothing' ACT_ON_MODES = 'donothing'
init_background = 0.0 init_background = 0.0
init_noiselvl = 0.005 init_noiselvl = 0.005
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment