From fd6a52e71ab83dfd48d313a30f4b6c1b9b320df7 Mon Sep 17 00:00:00 2001 From: maul1609 Date: Wed, 21 Jun 2023 14:52:08 +0100 Subject: [PATCH] Squashed 'pamm/' changes from aba9b40..ecaea4c ecaea4c Merge commit 'f9f359251fe34ed1d0cc280be025a3c127e2c9e1' f9f3592 Squashed 'sfvt/' changes from acca9d8..7f04a90 git-subtree-dir: pamm git-subtree-split: ecaea4c2cb3ffac236ff034449ffee738d8ffd7a --- sfvt/Makefile | 6 +++--- sfvt/advection_1d.F90 | 18 +++++++++++++----- sfvt/advection_2d.F90 | 16 ++++++++++++---- sfvt/advection_3d.F90 | 24 ++++++++++++++++-------- 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/sfvt/Makefile b/sfvt/Makefile index 4470ee4..af3848d 100755 --- a/sfvt/Makefile +++ b/sfvt/Makefile @@ -77,11 +77,11 @@ advection_2d.$(OBJ) advection_3d.$(OBJ) osnf_code mpi_module.$(OBJ) : mpi_module.f90 osnf_code $(FOR) mpi_module.f90 -I$(OSNF_DIR) -cpp -DVAR_TYPE=$(VAR_TYPE) $(FFLAGS)mpi_module.$(OBJ) advection_1d.$(OBJ) : advection_1d.F90 osnf_code - $(FOR) advection_1d.F90 -cpp -I$(OSNF_DIR) $(FFLAGSOMP)advection_1d.$(OBJ) + $(FOR) advection_1d.F90 -cpp -DVAR_TYPE=$(VAR_TYPE) -I$(OSNF_DIR) $(FFLAGSOMP)advection_1d.$(OBJ) advection_2d.$(OBJ) : advection_2d.F90 osnf_code - $(FOR) advection_2d.F90 -cpp -I$(OSNF_DIR) $(FFLAGSOMP)advection_2d.$(OBJ) + $(FOR) advection_2d.F90 -cpp -DVAR_TYPE=$(VAR_TYPE) -I$(OSNF_DIR) $(FFLAGSOMP)advection_2d.$(OBJ) advection_3d.$(OBJ) : advection_3d.F90 osnf_code - $(FOR) advection_3d.F90 -I$(OSNF_DIR) $(FFLAGSOMP)advection_3d.$(OBJ) + $(FOR) advection_3d.F90 -cpp -DVAR_TYPE=$(VAR_TYPE) -I$(OSNF_DIR) $(FFLAGSOMP)advection_3d.$(OBJ) main.$(OBJ) : main.f90 variables.$(OBJ) mpi_module.$(OBJ) initialisation.$(OBJ) \ driver_code.$(OBJ) advection_1d.$(OBJ) advection_2d.$(OBJ) \ advection_3d.$(OBJ) diff --git a/sfvt/advection_1d.F90 b/sfvt/advection_1d.F90 index 9dc313b..0020106 100644 --- a/sfvt/advection_1d.F90 +++ b/sfvt/advection_1d.F90 @@ -4,7 +4,15 @@ !>advection code module advection_s_1d use numerics_type - + use mpi + implicit none +#if VAR_TYPE==0 + integer(i4b), parameter :: MPIREAL=MPI_REAL4 +#endif +#if VAR_TYPE==1 + integer(i4b), parameter :: MPIREAL=MPI_REAL8 +#endif + private public :: mpdata_1d, mpdata_vec_1d, first_order_upstream_1d real(wp), parameter :: small=1e-60_wp @@ -142,7 +150,7 @@ subroutine mpdata_1d(dt,dz,dzn,& ! has to be positive definite minlocal=minval(psi_in(1:kp)) #ifdef MPI - call mpi_allreduce(minlocal,minglobal,1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal,1,MPIREAL,MPI_MIN, comm3d,error) #else minglobal=minlocal #endif @@ -150,7 +158,7 @@ subroutine mpdata_1d(dt,dz,dzn,& psi_local_sum=sum(psi_in(1:kp)) #ifdef MPI - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) #else psi_sum=psi_local_sum #endif @@ -481,7 +489,7 @@ subroutine mpdata_vec_1d(dt,dz,dzn,& do n=1,nq minlocal=minval(psi_in(1:kp,n),1) #ifdef MPI - call mpi_allreduce(minlocal,minglobal(n),1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal(n),1,MPIREAL,MPI_MIN, comm3d,error) #else minglobal(n)=minlocal #endif @@ -490,7 +498,7 @@ subroutine mpdata_vec_1d(dt,dz,dzn,& psi_local_sum=sum(psi_in(1:kp,1)) #ifdef MPI - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) #else psi_sum=psi_local_sum #endif diff --git a/sfvt/advection_2d.F90 b/sfvt/advection_2d.F90 index b844b04..ec45477 100644 --- a/sfvt/advection_2d.F90 +++ b/sfvt/advection_2d.F90 @@ -4,6 +4,14 @@ !>advection code module advection_s_2d use numerics_type + use mpi + implicit none +#if VAR_TYPE==0 + integer(i4b), parameter :: MPIREAL=MPI_REAL4 +#endif +#if VAR_TYPE==1 + integer(i4b), parameter :: MPIREAL=MPI_REAL8 +#endif private public :: mpdata_2d, mpdata_vec_2d, first_order_upstream_2d @@ -163,7 +171,7 @@ subroutine mpdata_2d(dt,dx,dz,dxn,dzn,& ! has to be positive definite minlocal=minval(psi_in(1:kp,1:ip)) #ifdef MPI - call mpi_allreduce(minlocal,minglobal,1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal,1,MPIREAL,MPI_MIN, comm3d,error) #else minglobal=minlocal #endif @@ -171,7 +179,7 @@ subroutine mpdata_2d(dt,dx,dz,dxn,dzn,& psi_local_sum=sum(psi_in(1:kp,1:ip)) #ifdef MPI - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) #else psi_sum=psi_local_sum #endif @@ -613,7 +621,7 @@ subroutine mpdata_vec_2d(dt,dx,dz,dxn,dzn,& do n=1,nq minlocal=minval(psi_in(1:kp,1:ip,n)) #ifdef MPI - call mpi_allreduce(minlocal,minglobal(n),1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal(n),1,MPIREAL,MPI_MIN, comm3d,error) #else minglobal(n)=minlocal #endif @@ -622,7 +630,7 @@ subroutine mpdata_vec_2d(dt,dx,dz,dxn,dzn,& psi_local_sum=sum(psi_in(1:kp,1:ip,1)) #ifdef MPI - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) #else psi_sum=psi_local_sum #endif diff --git a/sfvt/advection_3d.F90 b/sfvt/advection_3d.F90 index 2737554..fb0b141 100644 --- a/sfvt/advection_3d.F90 +++ b/sfvt/advection_3d.F90 @@ -4,6 +4,14 @@ !>advection code for the dynamical cloud model module advection_s_3d use numerics_type + use mpi + implicit none +#if VAR_TYPE==0 + integer(i4b), parameter :: MPIREAL=MPI_REAL4 +#endif +#if VAR_TYPE==1 + integer(i4b), parameter :: MPIREAL=MPI_REAL8 +#endif private public :: mpdata_3d, mpdata_vec_3d, first_order_upstream_3d, adv_ref_state, & @@ -267,14 +275,14 @@ subroutine mpdata_3d(dt,dx,dy,dz,dxn,dyn,dzn,& ! has to be positive definite minlocal=min(minval(psi_in(:,:,:)),lbc,ubc) - call mpi_allreduce(minlocal,minglobal,1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal,1,MPIREAL,MPI_MIN, comm3d,error) psi_in=psi_in-minglobal lbc=lbc-minglobal ubc=ubc-minglobal psi_local_sum=sum(psi_in(1:kp,1:jp,1:ip)) - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) if(psi_sum.lt.small) then psi_in(:,:,:)=psi_in(:,:,:)+minglobal lbc=lbc+minglobal @@ -834,14 +842,14 @@ subroutine mpdata_vert_3d(dt,dz,dzn,& ! has to be positive definite minlocal=min(minval(psi_in(:,:,:)),lbc,ubc) - call mpi_allreduce(minlocal,minglobal,1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal,1,MPIREAL,MPI_MIN, comm3d,error) psi_in=psi_in-minglobal lbc=lbc-minglobal ubc=ubc-minglobal psi_local_sum=sum(psi_in(1:kp,1:jp,1:ip)) - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) if(psi_sum.lt.small) then psi_in(:,:,:)=psi_in(:,:,:)+minglobal lbc=lbc+minglobal @@ -1254,14 +1262,14 @@ subroutine mpdata_vec_3d(dt,dx,dy,dz,dxn,dyn,dzn,& ! has to be positive definite do n=1,nq minlocal=min(minval(psi_in(1:kp,1:jp,1:ip,n)),lbc(n),ubc(n)) - call mpi_allreduce(minlocal,minglobal(n),1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal(n),1,MPIREAL,MPI_MIN, comm3d,error) psi_in(:,:,:,n)=psi_in(:,:,:,n)-minglobal(n) lbc(n)=lbc(n)-minglobal(n) ubc(n)=ubc(n)-minglobal(n) enddo psi_local_sum=sum(psi_in(1:kp,1:jp,1:ip,1)) - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) if(psi_sum.lt.small) then do n=1,nq psi_in(:,:,:,n)=psi_in(:,:,:,n)+minglobal(n) @@ -1753,14 +1761,14 @@ subroutine mpdata_vec_vert_3d(dt,dz,dzn,& ! has to be positive definite do n=1,nq minlocal=min(minval(psi_in(1:kp,1:jp,1:ip,n)),lbc(n),ubc(n)) - call mpi_allreduce(minlocal,minglobal(n),1,MPI_REAL8,MPI_MIN, comm3d,error) + call mpi_allreduce(minlocal,minglobal(n),1,MPIREAL,MPI_MIN, comm3d,error) psi_in(:,:,:,n)=psi_in(:,:,:,n)-minglobal(n) lbc(n)=lbc(n)-minglobal(n) ubc(n)=ubc(n)-minglobal(n) enddo psi_local_sum=sum(psi_in(1:kp,1:jp,1:ip,1)) - call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPI_REAL8, MPI_SUM, comm3d, error) + call MPI_Allreduce(psi_local_sum, psi_sum, 1, MPIREAL, MPI_SUM, comm3d, error) if(psi_sum.lt.small) then do n=1,nq psi_in(:,:,:,n)=psi_in(:,:,:,n)+minglobal(n)