Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update to cama v4.21 #295

Merged
merged 5 commits into from
Sep 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CaMa/src/cmf_calc_diag_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,10 @@ SUBROUTINE CMF_DIAG_AVERAGE
D2RUNOFF_AVG(:,:) = D2RUNOFF_AVG(:,:) / DBLE(NADD)
D2ROFSUB_AVG(:,:) = D2ROFSUB_AVG(:,:) / DBLE(NADD)
IF ( LDAMOUT ) THEN
D2DAMINF_AVG(:,:) = D2DAMINF_AVG(:,:) / DBLE(NADD)
D2DAMINF_AVG(:,:) = D2DAMINF_AVG(:,:) / DBLE(NADD)
ENDIF
IF ( LWEVAP ) THEN
D2WEVAPEX_AVG(:,:) = D2WEVAPEX_AVG(:,:) / DBLE(NADD)
D2WEVAPEX_AVG(:,:) = D2WEVAPEX_AVG(:,:) / DBLE(NADD)
ENDIF
D1PTHFLW_AVG(:,:) = D1PTHFLW_AVG(:,:) /DBLE(NADD)
END SUBROUTINE CMF_DIAG_AVERAGE
Expand Down
7 changes: 4 additions & 3 deletions CaMa/src/cmf_calc_outflw_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -267,9 +267,10 @@ SUBROUTINE CMF_CALC_INFLOW
ENDDO
!$OMP END PARALLEL DO

D2RIVINF(:,:)=P2RIVINF(:,:) !! needed for SinglePrecisionMode
D2FLDINF(:,:)=P2FLDINF(:,:)

!D2RIVINF(:,:)=P2RIVINF(:,:) !! needed for SinglePrecisionMode
!D2FLDINF(:,:)=P2FLDINF(:,:)
D2RIVINF(1:NSEQALL,1)=P2RIVINF(1:NSEQALL,1)
D2FLDINF(1:NSEQALL,1)=P2FLDINF(1:NSEQALL,1)
END SUBROUTINE CMF_CALC_INFLOW
!####################################################################
END MODULE CMF_CALC_OUTFLW_MOD
8 changes: 5 additions & 3 deletions CaMa/src/cmf_ctrl_forcing_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ SUBROUTINE CMF_INPMAT_INIT_CDF(LECMF2LAKEC)
!* Find levels dimension
CALL NCERROR( NF90_INQUIRE_VARIABLE(NCID,VARID,dimids=VDIMIDS),'getting levI dimensions ')
CALL NCERROR( NF90_INQUIRE_DIMENSION(NCID,VDIMIDS(1),len=INPNI),'getting time len ')
write(LOGNAM,*) 'Alocating INP*I: NXIN, NYIN, INPNI =', NXIN, NYIN, INPNI
write(LOGNAM,*) 'Allocating INP*I: NXIN, NYIN, INPNI =', NXIN, NYIN, INPNI
allocate( INPXI(NXIN,NYIN,INPNI),INPYI(NXIN,NYIN,INPNI),INPAI(NXIN,NYIN,INPNI) )

write(LOGNAM,*)'INIT_MAP: inpaI:',TRIM(CINPMAT)
Expand Down Expand Up @@ -550,9 +550,11 @@ SUBROUTINE CMF_FORCING_GET_CDF(PBUFF)
IRECINP=INT( (KMIN-ROFCDF%NSTART)*60_JPIM,JPIM ) / INT(DTIN,JPIM) + 1 !! (second from netcdf start time) / (input time step)

!*** 2. read runoff
CALL NCERROR( NF90_GET_VAR(ROFCDF%NCID,ROFCDF%NVARID(1),PBUFF(:,:,1),(/1,1,IRECINP/),(/NXIN,NYIN,1/)),'READING RUNOFF 1 ' )
CALL NCERROR( NF90_GET_VAR(ROFCDF%NCID,ROFCDF%NVARID(1),PBUFF(:,:,1),&
(/1,1,IRECINP/),(/NXIN,NYIN,1/)),'READING RUNOFF 1 ' )
IF ( ROFCDF%NVARID(2) .NE. -1 ) THEN
CALL NCERROR( NF90_GET_VAR(ROFCDF%NCID,ROFCDF%NVARID(2),PBUFF(:,:,2),(/1,1,IRECINP/),(/NXIN,NYIN,1/)),'READING RUNOFF 2' )
CALL NCERROR( NF90_GET_VAR(ROFCDF%NCID,ROFCDF%NVARID(2),PBUFF(:,:,2) &
,(/1,1,IRECINP/),(/NXIN,NYIN,1/)),'READING RUNOFF 2' )
ENDIF
write(LOGNAM,*) "CMF::FORCING_GET_CDF: read runoff:",IYYYYMMDD,IHHMM,IRECINP

Expand Down
2 changes: 1 addition & 1 deletion CaMa/src/cmf_ctrl_levee_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ SUBROUTINE CMF_LEVEE_FLDSTG

!$OMP PARALLEL DO REDUCTION(+:P0GLBSTOPRE2,P0GLBSTONEW2,P0GLBRIVSTO,P0GLBFLDSTO,P0GLBLEVSTO,P0GLBFLDARE)
DO ISEQ=1, NSEQALL
!
DSTOALL = P2RIVSTO(ISEQ,1) + P2FLDSTO(ISEQ,1) + P2LEVSTO(ISEQ,1)
DWTHINC = D2GRAREA(ISEQ,1) * D2RIVLEN(ISEQ,1)**(-1.) * DFRCINC !! width of each layer [m]
IF( DSTOALL > P2RIVSTOMAX(ISEQ,1) )THEN
Expand Down
9 changes: 6 additions & 3 deletions CaMa/src/cmf_ctrl_maps_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ MODULE CMF_CTRL_MAPS_MOD
character(LEN=256) :: CRIVCLINC !! river map netcdf
character(LEN=256) :: CRIVPARNC !! river parameter netcdf (WIDTH,HEIGHT, Manning, ground wateer delay)
character(LEN=256) :: CMEANSLNC !! mean sea level netCDF
character(LEN=256) :: CMPIREGNC !! MPI Region netCDF
character(LEN=256) :: CMPIREGNC !! MPI region map in netcdf

NAMELIST/NMAP/ CNEXTXY, CGRAREA, CELEVTN, CNXTDST, CRIVLEN, CFLDHGT, &
CRIVWTH, CRIVHGT, CRIVMAN, CPTHOUT, CGDWDLY, CMEANSL, &
Expand Down Expand Up @@ -313,8 +313,11 @@ SUBROUTINE CALC_REGION !! evenly allocate pixels to mpi nodes (updated in v4.
!
integer(KIND=JPIM),SAVE :: IX,IY
integer(KIND=JPIM),SAVE :: IREGION
#ifdef UseMPI_CMF
#ifdef UseCDF_CMF
integer(KIND=JPIM) :: NCID,VARID
INTEGER(KIND=JPIM) :: NCID
INTEGER(KIND=JPIM) :: VARID
#endif
#endif
!$OMP THREADPRIVATE (IX)
!================================================
Expand Down Expand Up @@ -381,7 +384,7 @@ SUBROUTINE CALC_REGION !! evenly allocate pixels to mpi nodes (updated in v4.

write(LOGNAM,*) 'CALC_REGION: REGIONALL= ', REGIONALL
write(LOGNAM,*) 'CALC_REGION: NSEQMAX=' , NSEQMAX

WRITE(LOGNAM,*) 'CALC_REGION: NSEQALL=' , NSEQALL
END SUBROUTINE CALC_REGION
!==========================================================
!+
Expand Down
111 changes: 80 additions & 31 deletions CaMa/src/cmf_ctrl_mpi_mod.F90
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MODULE CMF_CTRL_MPI_MOD
!! contains nothing is UseMPI_CMF is not defined
!! contains nothing if UseMPI_CMF is not defined
#ifdef UseMPI_CMF
!==========================================================
!* PURPOSE: modules related to MPI usage
Expand All @@ -19,7 +19,11 @@ MODULE CMF_CTRL_MPI_MOD
! See the License for the specific language governing permissions and limitations under the License.
!==========================================================
!** shared variables in module
#ifdef IFS_CMF
USE MPL_MODULE
#else
USE MPI
#endif
USE PARKIND1, only: JPIM, JPRB, JPRM, JPRD
USE YOS_CMF_INPUT, only: LOGNAM
USE YOS_CMF_MAP, only: REGIONALL, REGIONTHIS, MPI_COMM_CAMA
Expand All @@ -37,11 +41,23 @@ MODULE CMF_CTRL_MPI_MOD
! -- CMF_DRV_END : Finalize CaMa-Flood
!
!####################################################################
#ifdef IFS_CMF
SUBROUTINE CMF_MPI_INIT(ICOMM_CMF)
IMPLICIT NONE

INTEGER(KIND=JPIM),OPTIONAL,INTENT(IN) :: ICOMM_CMF
#else
SUBROUTINE CMF_MPI_INIT
IMPLICIT NONE
#endif
!================================================
!*** 0. MPI specific setting
REGIONTHIS=1
#ifdef IFS_CMF
MPI_COMM_CAMA=ICOMM_CMF
REGIONALL=MPL_NPROC(MPI_COMM_CAMA)
REGIONTHIS=MPL_MYRANK(MPI_COMM_CAMA)
#else
CALL MPI_Init(ierr)

MPI_COMM_CAMA=MPI_COMM_WORLD
Expand All @@ -50,7 +66,7 @@ SUBROUTINE CMF_MPI_INIT

REGIONALL =Nproc
REGIONTHIS=Nid+1

#endif
! For BUGFIX: Check MPI / OpenMPI is working or not.
! Write to standard output (log file is not opened yet)
!!!!!#ifdef _OPENMP
Expand Down Expand Up @@ -79,17 +95,23 @@ END SUBROUTINE CMF_MPI_END

!####################################################################
SUBROUTINE CMF_MPI_AllReduce_R2MAP(R2MAP)
USE YOS_CMF_INPUT, only: NX,NY
USE YOS_CMF_INPUT, only: RMIS,NX,NY
IMPLICIT NONE
!* input/output
real(KIND=JPRM),intent(inout) :: R2MAP(NX,NY)
!* local variable
real(KIND=JPRM) :: R2TMP(NX,NY)
!================================================
! gather to master node
R2TMP(:,:)=1.E30
CALL MPI_AllReduce(R2MAP,R2TMP,NX*NY,MPI_REAL4,MPI_MIN,MPI_COMM_CAMA,ierr)
R2MAP(:,:)=R2TMP(:,:)
! gather to master node
#ifdef IFS_CMF
CALL MPL_ALLREDUCE(R2MAP,CDOPER='MIN',KCOMM=MPI_COMM_CAMA,KERROR=ierr)
#else
R2TMP(:,:)=RMIS
CALL MPI_AllReduce(R2MAP,R2TMP,NX*NY,MPI_REAL4,MPI_MIN,MPI_COMM_CAMA,ierr)
R2MAP(:,:)=R2TMP(:,:)
#endif


END SUBROUTINE CMF_MPI_AllReduce_R2MAP
!####################################################################

Expand All @@ -98,39 +120,48 @@ END SUBROUTINE CMF_MPI_AllReduce_R2MAP

!####################################################################
SUBROUTINE CMF_MPI_AllReduce_R1PTH(R1PTH)
USE YOS_CMF_INPUT, ONLY: RMIS
USE YOS_CMF_MAP, only: NPTHOUT, NPTHLEV
IMPLICIT NONE
!* input/output
real(KIND=JPRM),intent(inout) :: R1PTH(NPTHOUT,NPTHLEV)
!* local variable
real(KIND=JPRM) :: R1PTMP(NPTHOUT,NPTHLEV)
!================================================
! gather to master node
R1PTMP(:,:)=1.E30
CALL MPI_AllReduce(R1PTH,R1PTMP,NPTHOUT*NPTHLEV,MPI_REAL4,MPI_MIN,MPI_COMM_CAMA,ierr)
R1PTH(:,:)=R1PTMP(:,:)
! gather to master node
#ifdef IFS_CMF
CALL MPL_ALLREDUCE(R1PTH,CDOPER='MIN',KCOMM=MPI_COMM_CAMA,KERROR=ierr)
#else
R1PTMP(:,:)=RMIS
CALL MPI_AllReduce(R1PTH,R1PTMP,NPTHOUT*NPTHLEV,MPI_REAL4,MPI_MIN,MPI_COMM_CAMA,ierr)
R1PTH(:,:)=R1PTMP(:,:)
#endif
END SUBROUTINE CMF_MPI_AllReduce_R1PTH
!####################################################################


!####################################################################
SUBROUTINE CMF_MPI_AllReduce_D2MAP(D2MAP)
! only used in netCDF restart file. (cannot be compiled due to a bug in MacOS mpif90)
USE YOS_CMF_INPUT, only: NX,NY
USE YOS_CMF_INPUT, only: DMIS, NX,NY
IMPLICIT NONE
!* input/output
real(KIND=JPRB),intent(inout) :: D2MAP(NX,NY)
!* local variable
real(KIND=JPRB) :: D2TMP(NX,NY)
!================================================
! gather to master node
D2TMP(:,:)=1.E30
#ifdef IFS_CMF
CALL MPL_ALLREDUCE(D2MAP,CDOPER='MIN',KCOMM=MPI_COMM_CAMA,KERROR=ierr)
#else
D2TMP(:,:)=DMIS
#ifdef SinglePrec_CMF
CALL MPI_AllReduce(D2MAP,D2TMP,NX*NY,MPI_REAL4,MPI_MIN,MPI_COMM_CAMA,ierr)
#else
CALL MPI_AllReduce(D2MAP,D2TMP,NX*NY,MPI_REAL8,MPI_MIN,MPI_COMM_CAMA,ierr)
#endif
D2MAP(:,:)=D2TMP(:,:)
#endif
END SUBROUTINE CMF_MPI_AllReduce_D2MAP
!####################################################################

Expand All @@ -139,17 +170,21 @@ END SUBROUTINE CMF_MPI_AllReduce_D2MAP
!####################################################################
SUBROUTINE CMF_MPI_AllReduce_P2MAP(P2MAP)
! only used in netCDF restart file. (cannot be compiled due to a bug in MacOS mpif90)
USE YOS_CMF_INPUT, only: NX,NY
USE YOS_CMF_INPUT, ONLY: DMIS, NX,NY
IMPLICIT NONE
!* input/output
real(KIND=JPRD),intent(inout) :: P2MAP(NX,NY)
!* local variable
real(KIND=JPRD) :: P2TMP(NX,NY)
!================================================
! gather to master node
P2TMP(:,:)=1.E30
#ifdef IFS_CMF
CALL MPL_ALLREDUCE(P2MAP,CDOPER='MIN',KCOMM=MPI_COMM_CAMA,KERROR=ierr)
#else
P2TMP(:,:)=DMIS
CALL MPI_AllReduce(P2MAP,P2TMP,NX*NY,MPI_REAL8,MPI_MIN,MPI_COMM_CAMA,ierr)
P2MAP(:,:)=P2TMP(:,:)
#endif
END SUBROUTINE CMF_MPI_AllReduce_P2MAP
!####################################################################

Expand All @@ -158,7 +193,9 @@ END SUBROUTINE CMF_MPI_AllReduce_P2MAP

!####################################################################
SUBROUTINE CMF_MPI_AllReduce_D1PTH(D1PTH)
USE YOS_CMF_INPUT, ONLY: DMIS
USE YOS_CMF_MAP, only: NPTHOUT, NPTHLEV, PTH_UPST, PTH_DOWN

IMPLICIT NONE
!* input/output
real(KIND=JPRB),intent(inout) :: D1PTH(NPTHOUT,NPTHLEV)
Expand All @@ -167,25 +204,29 @@ SUBROUTINE CMF_MPI_AllReduce_D1PTH(D1PTH)
integer(KIND=JPIM) :: IPTH
!================================================
! gather to master node
DO IPTH=1,NPTHOUT
IF (PTH_UPST(IPTH)<=0 .or. PTH_DOWN(IPTH)<=0 ) THEN
D1PTH(IPTH,:)=1.E20
ENDIF
ENDDO
D1PTMP(:,:)=1.E30
DO IPTH=1,NPTHOUT
IF (PTH_UPST(IPTH)<=0 .OR. PTH_DOWN(IPTH)<=0 ) THEN
D1PTH(IPTH,:)=DMIS
ENDIF
END DO
#ifdef IFS_CMF
CALL MPL_ALLREDUCE(D1PTH,CDOPER='MIN',KCOMM=MPI_COMM_CAMA,KERROR=ierr)
#else
D1PTMP(:,:)=DMIS
#ifdef SinglePrec_CMF
!! CALL MPI_Reduce(D1PTH,D1PTMP,NPTHOUT*NPTHLEV,MPI_REAL4,MPI_MIN,0,MPI_COMM_CAMA,ierr)
CALL MPI_AllReduce(D1PTH,D1PTMP,NPTHOUT*NPTHLEV,MPI_REAL4,MPI_MIN,MPI_COMM_CAMA,ierr)
#else
CALL MPI_AllReduce(D1PTH,D1PTMP,NPTHOUT*NPTHLEV,MPI_REAL8,MPI_MIN,MPI_COMM_CAMA,ierr)
#endif
D1PTH(:,:)=D1PTMP(:,:)
#endif
END SUBROUTINE CMF_MPI_AllReduce_D1PTH
!####################################################################


!####################################################################
SUBROUTINE CMF_MPI_AllReduce_P1PTH(P1PTH)
USE YOS_CMF_INPUT, ONLY: DMIS
USE YOS_CMF_MAP, only: NPTHOUT, NPTHLEV, PTH_UPST, PTH_DOWN
IMPLICIT NONE
!* input/output
Expand All @@ -195,14 +236,18 @@ SUBROUTINE CMF_MPI_AllReduce_P1PTH(P1PTH)
integer(KIND=JPIM) :: IPTH
!================================================
! gather to master node
DO IPTH=1,NPTHOUT
IF (PTH_UPST(IPTH)<=0 .or. PTH_DOWN(IPTH)<=0 ) THEN
P1PTH(IPTH,:)=1.E20
ENDIF
ENDDO
P1PTMP(:,:)=1.E30
CALL MPI_AllReduce(P1PTH,P1PTMP,NPTHOUT*NPTHLEV,MPI_REAL8,MPI_MIN,MPI_COMM_CAMA,ierr)
P1PTH(:,:)=P1PTMP(:,:)
DO IPTH=1,NPTHOUT
IF (PTH_UPST(IPTH)<=0 .OR. PTH_DOWN(IPTH)<=0 ) THEN
P1PTH(IPTH,:)=DMIS
ENDIF
END DO
#ifdef IFS_CMF
CALL MPL_ALLREDUCE(P1PTH,CDOPER='MIN',KCOMM=MPI_COMM_CAMA,KERROR=ierr)
#else
P1PTMP(:,:)=DMIS
CALL MPI_AllReduce(P1PTH,P1PTMP,NPTHOUT*NPTHLEV,MPI_REAL8,MPI_MIN,MPI_COMM_CAMA,ierr)
P1PTH(:,:)=P1PTMP(:,:)
#endif
END SUBROUTINE CMF_MPI_AllReduce_P1PTH
!####################################################################

Expand All @@ -219,8 +264,12 @@ SUBROUTINE CMF_MPI_ADPSTP(DT_MIN)
!================================================
!*** MPI: use same DT in all node
DT_LOC=DT_MIN

#ifdef IFS_CMF
DT_OUT=DT_LOC
CALL MPL_ALLREDUCE(DT_OUT,CDOPER='MIN',KCOMM=MPI_COMM_CAMA,KERROR=ierr)
#else
CALL MPI_AllReduce(DT_LOC, DT_OUT, 1, MPI_DOUBLE_PRECISION, MPI_MIN, MPI_COMM_CAMA,ierr)
#endif
DT_MIN=DT_OUT
write(LOGNAM,'(A,2F10.2)') "ADPSTP (MPI_AllReduce): DT_LOC->DTMIN", DT_LOC, DT_MIN

Expand Down
4 changes: 2 additions & 2 deletions CaMa/src/cmf_ctrl_nmlist_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -226,8 +226,8 @@ SUBROUTINE CMF_CONFIG_NMLIST
PMINSLP=1.E-5 !! minimum slope (kinematic wave)

IMIS=-9999_JPIM
RMIS=-1.0E36_JPRM
DMIS=-1.0E36_JPRB
RMIS=1.E20_JPRM
DMIS=1.E20_JPRB

CSUFBIN='.bin'
CSUFVEC='.vec'
Expand Down
1 change: 1 addition & 0 deletions CaMa/src/cmf_ctrl_vars_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ SUBROUTINE CMF_DIAG_INIT
ALLOCATE(D2WINFILTEX_AVG(NSEQMAX,1))
D2WINFILTEX_AVG(:,:)=0._JPRB
ENDIF

NADD=0

!*** 2b time-average 1D Diagnostics (bifurcation channel)
Expand Down
11 changes: 7 additions & 4 deletions CaMa/src/cmf_opt_outflw_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ SUBROUTINE CMF_CALC_OUTFLW_KINEMIX
D2FLDOUT(ISEQ,1) = DARE_F * DVEL_F
D2FLDOUT(ISEQ,1) = MIN( D2FLDOUT(ISEQ,1)*1._JPRD, P2FLDSTO(ISEQ,1)/DT )
ENDIF
ENDIF
ENDIF
ENDDO
!$OMP END PARALLEL DO

Expand Down Expand Up @@ -371,7 +371,8 @@ SUBROUTINE CMF_CALC_OUTPRE
DFLW = D2RIVDPH(ISEQ,1)
DAREA = D2RIVWTH(ISEQ,1) * DFLW
IF( DAREA>1.E-5 )THEN
D2RIVOUT_PRE(ISEQ,1) = DAREA * ( D2RIVMAN(ISEQ,1)**(-1.) * DFLW**(2./3.) * abs(DSLOPE)**(0.5) )
D2RIVOUT_PRE(ISEQ,1) = DAREA * ( D2RIVMAN(ISEQ,1)**(-1.) * &
DFLW**(2./3.) * abs(DSLOPE)**(0.5) )
IF( DSLOPE<0._JPRB ) D2RIVOUT_PRE(ISEQ,1)=-D2RIVOUT_PRE(ISEQ,1)
ELSE
D2RIVOUT_PRE(ISEQ,1) = 0._JPRB
Expand All @@ -381,7 +382,8 @@ SUBROUTINE CMF_CALC_OUTPRE
DARE_F = P2FLDSTO(ISEQ,1) * D2RIVLEN(ISEQ,1)**(-1.)
DARE_F = MAX( DARE_F - D2FLDDPH(ISEQ,1)*D2RIVWTH(ISEQ,1), 0._JPRB ) !! remove above river channel area
IF( DARE_F>1.E-5 )THEN
D2FLDOUT_PRE(ISEQ,1) = DARE_F * ( PMANFLD**(-1.) * DFLW_F**(2./3.) * abs(DSLOPE_F)**(0.5) )
D2FLDOUT_PRE(ISEQ,1) = DARE_F * ( PMANFLD**(-1.) * &
DFLW_F**(2./3.) * abs(DSLOPE_F)**(0.5))
IF( DSLOPE_F<0._JPRB ) D2FLDOUT_PRE(ISEQ,1)=-D2FLDOUT_PRE(ISEQ,1)
ELSE
D2FLDOUT_PRE(ISEQ,1) = 0._JPRB
Expand All @@ -402,7 +404,8 @@ SUBROUTINE CMF_CALC_OUTPRE
DFLW = MAX(DFLW,0._JPRB)

IF( DFLW>1.E-5 )THEN
D1PTHFLW_PRE(IPTH,ILEV) = PTH_WTH(IPTH,ILEV) * DFLW * ( PTH_MAN(ILEV)**(-1.) * DFLW**(2./3.) * abs(DSLOPE)**(0.5) )
D1PTHFLW_PRE(IPTH,ILEV) = PTH_WTH(IPTH,ILEV) * DFLW * &
( PTH_MAN(ILEV)**(-1.) * DFLW**(2./3.) * abs(DSLOPE)**(0.5) )
IF( DSLOPE<0._JPRB ) D1PTHFLW_PRE(IPTH,ILEV)=-D1PTHFLW_PRE(IPTH,ILEV)
ELSE
D1PTHFLW_PRE(IPTH,ILEV) = 0._JPRB
Expand Down
Loading