From 8a9087ec14a7fd861859ac0cbb231d62d262fa13 Mon Sep 17 00:00:00 2001 From: Antoine Hoffmann <antoine.hoffmann@epfl.ch> Date: Fri, 11 Aug 2023 13:41:10 +0200 Subject: [PATCH] Advancing ExB implementation --- Makefile | 9 +++++---- src/ExB_shear_flow_mod.F90 | 18 +++++++++++------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index e808a162..d8f9cd13 100644 --- a/Makefile +++ b/Makefile @@ -147,7 +147,8 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o $(OBJDIR)/auxval.o : src/auxval.F90 \ $(OBJDIR)/fourier_mod.o $(OBJDIR)/memory.o $(OBJDIR)/model_mod.o \ $(OBJDIR)/geometry_mod.o $(OBJDIR)/grid_mod.o $(OBJDIR)/numerics_mod.o \ - $(OBJDIR)/parallel_mod.o $(OBJDIR)/processing_mod.o $(OBJDIR)/CLA_mod.o + $(OBJDIR)/parallel_mod.o $(OBJDIR)/processing_mod.o $(OBJDIR)/CLA_mod.o \ + $(OBJDIR)/ExB_shear_flow_mod.o $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/auxval.F90 -o $@ $(OBJDIR)/basic_mod.o : src/basic_mod.F90 \ @@ -227,7 +228,7 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/geometry_mod.F90 -o $@ $(OBJDIR)/ghosts_mod.o : src/ghosts_mod.F90 \ - $(OBJDIR)/basic_mod.o $(OBJDIR)/fields_mod.o $(OBJDIR)/grid_mod.o \ + $(OBJDIR)/basic_mod.o $(OBJDIR)/fields_mod.o $(OBJDIR)/grid_mod.o\ $(OBJDIR)/geometry_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/time_integration_mod.o $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/ghosts_mod.F90 -o $@ @@ -256,7 +257,7 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o $(OBJDIR)/memory.o : src/memory.F90 $ \ $(OBJDIR)/array_mod.o $(OBJDIR)/basic_mod.o $(OBJDIR)/collision_mod.o\ - $(OBJDIR)/fields_mod.o $(OBJDIR)/model_mod.o $(OBJDIR)/time_integration_mod.o \ + $(OBJDIR)/fields_mod.o $(OBJDIR)/model_mod.o $(OBJDIR)/time_integration_mod.o \ $(OBJDIR)/grid_mod.o $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/memory.F90 -o $@ @@ -327,7 +328,7 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o $(OBJDIR)/array_mod.o $(OBJDIR)/numerics_mod.o $(OBJDIR)/fields_mod.o \ $(OBJDIR)/ghosts_mod.o $(OBJDIR)/moments_eq_rhs_mod.o $(OBJDIR)/solve_EM_fields.o\ $(OBJDIR)/utility_mod.o $(OBJDIR)/model_mod.o $(OBJDIR)/time_integration_mod.o \ - $(OBJDIR)/CLA_mod.o + $(OBJDIR)/CLA_mod.o $(OBJDIR)/ExB_shear_flow_mod.o $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/stepon.F90 -o $@ $(OBJDIR)/tesend.o : src/tesend.F90 \ diff --git a/src/ExB_shear_flow_mod.F90 b/src/ExB_shear_flow_mod.F90 index 508449fe..649f9966 100644 --- a/src/ExB_shear_flow_mod.F90 +++ b/src/ExB_shear_flow_mod.F90 @@ -39,7 +39,7 @@ CONTAINS SUBROUTINE Apply_ExB_shear_flow USE basic, ONLY: chrono_ExBs, start_chrono, stop_chrono USE grid, ONLY: local_nky, kxarray, update_grids, & - local_nkx, deltakx, kx_min, kx_max + total_nkx, deltakx, kx_min, kx_max USE prec_const, ONLY: PI USE geometry, ONLY: gxx,gxy,inv_hatB2, evaluate_magn_curv USE numerics, ONLY: evaluate_EM_op, evaluate_kernels @@ -55,13 +55,17 @@ CONTAINS IF(shiftnow_ExB(iky)) THEN print*, "SHIFT ARRAYS" ! shift all fields - DO ikx = 1,local_nkx + DO ikx = 1,total_nkx ikx_s = ikx + jump_ExB(iky) - IF( (kxarray(iky,ikx) .GE. kx_min) .AND. (kxarray(iky,ikx) .LE. kx_max) ) THEN + ! We test if the shifted modes are still in contained in our resolution + ! IF( (kxarray(iky,ikx)-sky_ExB(iky) .GE. kx_min) .AND. (kxarray(iky,ikx)-sky_ExB(iky) .LE. kx_max) ) THEN + IF ( ((ikx_s .GT. 0 ) .AND. (ikx_s .LE. total_nkx )) .AND. & + (((ikx .LE. (total_nkx/2+1)) .AND. (ikx_s .LE. (total_nkx/2+1))) .OR. & + ((ikx .GT. (total_nkx/2+1)) .AND. (ikx_s .GT. (total_nkx/2+1)))) ) THEN moments(:,:,:,iky,ikx,:,:) = moments(:,:,:,iky,ikx_s,:,:) phi(iky,ikx,:) = phi(iky,ikx_s,:) psi(iky,ikx,:) = psi(iky,ikx_s,:) - ELSE + ELSE ! if it is not, it is lost (~dissipation for high modes) moments(:,:,:,iky,ikx,:,:) = 0._xp phi(iky,ikx,:) = 0._xp psi(iky,ikx,:) = 0._xp @@ -76,9 +80,9 @@ CONTAINS CALL update_grids(sky_ExB,gxx,gxy,inv_hatB2) ! update the EM op., the kernels and the curvature op. - CALL evaluate_kernels - CALL evaluate_EM_op - CALL evaluate_magn_curv + ! CALL evaluate_kernels + ! CALL evaluate_EM_op + ! CALL evaluate_magn_curv CALL stop_chrono(chrono_ExBs) END SUBROUTINE Apply_ExB_shear_flow -- GitLab