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)