Skip to content

Commit

Permalink
manual and damout
Browse files Browse the repository at this point in the history
Manual for v4.1
Adaptive time step for reservoir operation
  • Loading branch information
bigasmountain committed Jan 25, 2023
1 parent d6289c2 commit 972d94b
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 10 deletions.
1 change: 1 addition & 0 deletions adm/Mkinclude_Mac_ifort
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ CP = /bin/cp
# UseCDF: use netCDF, UseMPI: Use MPI
# SinglePrec: SinglePrecisionMode
# NoAtom: Bit-identical simulation (deactivate OpenMP loop with OMP_Atomic)

DCDF=-DUseCDF_CMF
#DMPI=-DUseMPI_CMF
DSINGLE=-DSinglePrec_CMF
Expand Down
Binary file not shown.
5 changes: 4 additions & 1 deletion src/cmf_ctrl_damout_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ SUBROUTINE CMF_DAMOUT_INIT
USE YOS_CMF_INPUT, ONLY: NX, NY, LRESTART, LPTHOUT
USE YOS_CMF_MAP, ONLY: I2VECTOR, I1NEXT, NSEQALL, NSEQMAX
USE YOS_CMF_PROG, ONLY: P2RIVSTO, P2DAMSTO, D2DAMINF
USE YOS_CMF_MAP, ONLY: NPTHOUT, NPTHLEV, PTH_UPST, PTH_DOWN, PTH_ELV !! bifurcation pass
USE YOS_CMF_MAP, ONLY: NPTHOUT, NPTHLEV, PTH_UPST, PTH_DOWN, PTH_ELV , I2MASK!! bifurcation pass

! reed setting from CDAMFILE
IMPLICIT NONE
Expand Down Expand Up @@ -154,6 +154,7 @@ SUBROUTINE CMF_DAMOUT_INIT
ISEQ=I2VECTOR(IX,IY)
DamSeq(IDAM)=ISEQ
I1DAM(ISEQ)=1
I2MASK(ISEQ,1)=2 !! reservoir grid. skipped for adaptive time step
END DO
CLOSE(NDAMFILE)
!==========
Expand All @@ -164,13 +165,15 @@ SUBROUTINE CMF_DAMOUT_INIT
JSEQ=I1NEXT(ISEQ)
IF( I1DAM(JSEQ)==1 .or. I1DAM(JSEQ)==11 )THEN !! if downstream is dam
I1DAM(ISEQ)=10 !! mark upstream of dam grid by "10"
I2MASK(ISEQ,1)=1 !! reservoir upstream grid. skipped for adaptive time step
ENDIF
ENDIF

IF( I1DAM(ISEQ)==1 .and. I1NEXT(ISEQ)>0 )THEN !! if target is dam grid
JSEQ=I1NEXT(ISEQ)
IF( I1DAM(JSEQ)==1 .or. I1DAM(JSEQ)==11 )THEN !! if downstream is dam
I1DAM(ISEQ)=11 !! mark upstream of dam grid by "11"
I2MASK(ISEQ,1)=2 !! reservoir grid (cascading). skipped for adaptive time step
ENDIF
ENDIF
END DO
Expand Down
5 changes: 3 additions & 2 deletions src/cmf_ctrl_maps_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -590,12 +590,13 @@ SUBROUTINE CMF_TOPO_INIT
D2NXTDST(:,:) =0._JPRB
D2RIVLEN(:,:) =0._JPRB
D2RIVWTH(:,:) =0._JPRB
D2RIVHGT(:,:) =0._JPRB
D2FLDHGT(:,:,:)=0._JPRB
D2RIVMAN(:,:) =0._JPRB
D2MEANSL(:,:) =0._JPRB
D2DWNELV(:,:) =0._JPRB
D2GDWDLY(:,:) =0._JPRB
I2MASK(:,:) =0._JPIM !! mask for calculation (only for IFS slopemix)
I2MASK(:,:) =0._JPIM !! mask for calculation (IFS slopemix: Kinemacti Wave for Mask=1; Reservoir: dam=2, dam upstream=1)

!============================
! *** 2. Read topo map
Expand Down Expand Up @@ -929,7 +930,7 @@ SUBROUTINE SET_SLOPEMIX !! only used in IFS0
I0=0
I1=0
DO ISEQ=1,NSEQALL
IF (I2MASK(ISEQ,1) == 1 ) THEN
IF (I2MASK(ISEQ,1) == 1 ) THEN !! kinematic wave applied
I1=I1+1
ENDIF
IF (I2MASK(ISEQ,1) == 0 ) THEN
Expand Down
18 changes: 11 additions & 7 deletions src/cmf_ctrl_physics_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ SUBROUTINE CMF_PHYSICS_ADVANCE
SUBROUTINE CALC_ADPSTP
USE YOS_CMF_INPUT, ONLY: PGRV, PDSTMTH, PCADP
USE YOS_CMF_MAP, ONLY: D2NXTDST
USE YOS_CMF_MAP, ONLY: NSEQALL,NSEQRIV
USE YOS_CMF_MAP, ONLY: NSEQALL,NSEQRIV,I2MASK
USE YOS_CMF_DIAG, ONLY: D2RIVDPH
#ifdef UseMPI_CMF
USE CMF_CTRL_MPI_MOD, ONLY: CMF_MPI_ADPSTP
Expand All @@ -149,17 +149,21 @@ SUBROUTINE CALC_ADPSTP
DT_MIN=DT_DEF
!$OMP PARALLEL DO REDUCTION(MIN:DT_MIN)
DO ISEQ=1, NSEQRIV
DDPH=MAX(D2RIVDPH(ISEQ,1),0.01_JPRB )
DDST=D2NXTDST(ISEQ,1)
DT_MIN=min( DT_MIN, PCADP*DDST * (PGRV*DDPH)**(-0.5) )
IF( I2MASK(ISEQ,1)==0 )THEN
DDPH=MAX(D2RIVDPH(ISEQ,1),0.01_JPRB )
DDST=D2NXTDST(ISEQ,1)
DT_MIN=min( DT_MIN, PCADP*DDST * (PGRV*DDPH)**(-0.5) )
ENDIF
END DO
!$OMP END PARALLEL DO

!$OMP PARALLEL DO REDUCTION(MIN:DT_MIN)
DO ISEQ=NSEQRIV+1, NSEQALL
DDPH=MAX(D2RIVDPH(ISEQ,1),0.01_JPRB )
DDST=PDSTMTH
DT_MIN=min( DT_MIN, PCADP*DDST * (PGRV*DDPH)**(-0.5) )
IF( I2MASK(ISEQ,1)==0 )THEN
DDPH=MAX(D2RIVDPH(ISEQ,1),0.01_JPRB )
DDST=PDSTMTH
DT_MIN=min( DT_MIN, PCADP*DDST * (PGRV*DDPH)**(-0.5) )
ENDIF
END DO
!$OMP END PARALLEL DO

Expand Down

0 comments on commit 972d94b

Please sign in to comment.