Skip to content

Commit

Permalink
Merge pull request CoLM-SYSU#295 from zhongwangwei/master
Browse files Browse the repository at this point in the history
update to cama v4.21
  • Loading branch information
CoLM-SYSU authored Sep 4, 2024
2 parents d4cc739 + f65042f commit 14208df
Show file tree
Hide file tree
Showing 14 changed files with 208 additions and 144 deletions.
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

0 comments on commit 14208df

Please sign in to comment.