From d157cc1c43fc4db952da207dcccdea056df7551e Mon Sep 17 00:00:00 2001 From: Antoine Hoffmann <antoine.hoffmann@epfl.ch> Date: Tue, 4 Apr 2023 10:56:35 +0200 Subject: [PATCH] minor changes --- src/array_mod.F90 | 2 +- src/inital.F90 | 16 +++++++++++---- src/memory.F90 | 2 +- src/processing_mod.F90 | 8 ++++---- src/restarts_mod.F90 | 31 +++++++++++++++++++---------- testcases/zpinch_example/fort.90 | 0 testcases/zpinch_example/fort_00.90 | 13 ++++++------ 7 files changed, 45 insertions(+), 27 deletions(-) delete mode 100644 testcases/zpinch_example/fort.90 diff --git a/src/array_mod.F90 b/src/array_mod.F90 index 74916783..12f7b152 100644 --- a/src/array_mod.F90 +++ b/src/array_mod.F90 @@ -51,7 +51,7 @@ MODULE array ! REAL(xp), DIMENSION(:,:,:), ALLOCATABLE :: HF_phi_correction_operator ! 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) COMPLEX(xp), DIMENSION(:,:,:,:), ALLOCATABLE :: dens diff --git a/src/inital.F90 b/src/inital.F90 index cfc88cb4..6a1eca0e 100644 --- a/src/inital.F90 +++ b/src/inital.F90 @@ -20,8 +20,9 @@ SUBROUTINE inital !!!!!! Set the moments arrays Nepj, Nipj and phi!!!!!! ! through loading a previous state IF ( job2load .GE. 0 ) THEN - CALL speak('Load moments') + CALL speak('Load moments') CALL load_moments ! get N_0 + CALL apply_closure_model CALL update_ghosts_moments CALL solve_EM_fields ! compute phi_0=phi(N_0) CALL update_ghosts_EM @@ -324,7 +325,7 @@ END SUBROUTINE init_phi_ppj !!!!!!! Initialize an ionic Gaussian blob on top of the preexisting modes !******************************************************************************! 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,& ngp,ngj,ngz, iky0, ieven, kxarray, kyarray, zarray USE fields, ONLY: moments @@ -335,9 +336,16 @@ SUBROUTINE initialize_blob IMPLICIT NONE REAL(xp) ::kx, ky, z, sigma_x, sigma_y, gain INTEGER :: ia,iky,ikx,iz,ip,ij, p, j - sigma_y = 1.0 + sigma_y = 0.5 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 iky=1,local_nky ky = kyarray(iky) diff --git a/src/memory.F90 b/src/memory.F90 index d32069b6..d6729c8c 100644 --- a/src/memory.F90 +++ b/src/memory.F90 @@ -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) ! 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( 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) diff --git a/src/processing_mod.F90 b/src/processing_mod.F90 index be8ed50b..911f2871 100644 --- a/src/processing_mod.F90 +++ b/src/processing_mod.F90 @@ -377,18 +377,18 @@ CONTAINS USE array, ONLY : Napjz USE time_integration, ONLY : updatetlevel 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 root = 0 DO ia=1,local_na ! z-moment spectrum ! build local sum local_sum = 0._xp - DO iz = 1,local_nz + DO iz = 1,local_nz DO ikx = 1,local_nkx DO iky = 1,local_nky - DO ij = 1,local_nj - DO ip = 1,local_np + DO ij = 1,local_nj + DO ip = 1,local_np local_sum(ip,ij,iz) = local_sum(ip,ij,iz) + & (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))) diff --git a/src/restarts_mod.F90 b/src/restarts_mod.F90 index 142231aa..8dc162fa 100644 --- a/src/restarts_mod.F90 +++ b/src/restarts_mod.F90 @@ -2,7 +2,9 @@ MODULE restarts USE basic USE futils, ONLY: openf, closef, getarr, getatt, isgroup,& 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 diagnostics_par USE time_integration @@ -23,8 +25,8 @@ CONTAINS INTEGER :: cstep_cp, jobnum_cp INTEGER :: n_ INTEGER :: deltap_cp - INTEGER :: pmax_cp, jmax_cp, n0, Nkx_cp, Nky_cp, Nz_cp, Na_cp, Np_cp, Nj_cp - INTEGER :: ia,ip,ij,iky,ikx,iz, iacp,ipcp,ijcp,iycp,ixcp,izcp, ierr + INTEGER :: n0, Np_cp, Nj_cp, Nkx_cp, Nky_cp, Nz_cp, Na_cp + INTEGER :: ia,ip,ij,iky,ikx,iz,it, iacp,ipcp,ijcp,iycp,ixcp,izcp, ierr INTEGER :: ipi,iji,izi REAL(xp):: timer_tot_1,timer_tot_2 COMPLEX(xp), DIMENSION(:,:,:,:,:,:), ALLOCATABLE :: moments_cp @@ -38,15 +40,13 @@ CONTAINS CALL getatt(fidrst,"/data/input/grid" , "Nkx", Nkx_cp) CALL getatt(fidrst,"/data/input/grid" , "Nky", Nky_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 !!" CALL getatt(fidrst,"/data/input/grid" ,"deltap",deltap_cp) IF(deltap_cp .NE. deltap) & ERROR STOP "!! cannot change deltap in a restart, not implemented !!" - CALL getatt(fidrst,"/data/input/grid" , "pmax", pmax_cp) - Np_cp = pmax_cp/deltap_cp+1 - CALL getatt(fidrst,"/data/input/grid" , "jmax", jmax_cp) - Nj_cp = jmax_cp+1 + CALL getatt(fidrst,"/data/input/grid" , "Np", Np_cp) + CALL getatt(fidrst,"/data/input/grid" , "Nj", Nj_cp) CALL getatt(fidrst,"/data/input/model", "Na", Na_cp) CALL getatt(fidrst,"/data/input/basic" , "start_iframe5d", n0) ! Find the last results of the checkpoint file by iteration @@ -67,10 +67,10 @@ CONTAINS CALL speak('.. restart from t = '//str(time)) ! Read state of system from checkpoint file ! 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) 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; z: DO iz = 1,local_nz @@ -86,7 +86,7 @@ CONTAINS p: DO ip=1,local_np ipcp = ip + local_np_offset ipi = ip + ngp/2 - a: DO ia=1,Na_cp + a: DO ia=1,local_na 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)) & moments(ia,ipi,iji,iky,ikx,izi,1) = moments_cp(iacp,ipcp,ijcp,iycp,ixcp,izcp) @@ -96,6 +96,15 @@ CONTAINS ENDDO y ENDDO x 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(moments_cp) CALL closef(fidrst) diff --git a/testcases/zpinch_example/fort.90 b/testcases/zpinch_example/fort.90 deleted file mode 100644 index e69de29b..00000000 diff --git a/testcases/zpinch_example/fort_00.90 b/testcases/zpinch_example/fort_00.90 index fb603223..2f9ce8c3 100644 --- a/testcases/zpinch_example/fort_00.90 +++ b/testcases/zpinch_example/fort_00.90 @@ -1,14 +1,14 @@ &BASIC nrun = 99999999 dt = 0.01 - tmax = 50 + tmax = 25 maxruntime = 72000 job2load = -1 / &GRID - pmax = 4 - jmax = 2 - Nx = 128 + pmax = 2 + jmax = 1 + Nx = 64 Lx = 200 Ny = 48 Ly = 60 @@ -63,7 +63,8 @@ / &CLOSURE_PAR hierarchy_closure='truncation' - dmax = -1 + !hierarchy_closure='max_degree' + dmax = 2 nonlinear_closure='anti_laguerre_aliasing' !(truncation,full_sum,anti_laguerre_aliasing) nmax = 0 / @@ -92,7 +93,7 @@ mat_file = 'gk_sugama_P_20_J_10_N_150_kpm_8.0.h5' / &INITIAL_CON - INIT_OPT = 'phi' !(phi,blob) + INIT_OPT = 'blob' !(phi,blob) ACT_ON_MODES = 'donothing' init_background = 0.0 init_noiselvl = 0.005 -- GitLab