Opened 11 years ago
Closed 9 years ago
#1252 closed Enhancement (fixed)
addition of rivers in the data reading for OFF_SRC
Reported by: | vichi | Owned by: | vichi |
---|---|---|---|
Priority: | low | Milestone: | |
Component: | OFF | Version: | v3.6 |
Severity: | Keywords: | ||
Cc: | cetlod |
Description
This is a feature required with the BFM but it may be useful for PISCES as well. In the BFM we have separated the input of freshwater for rivers and precipitation because this allows to avoid dilution of tracers in case there is a river and we assume the same concentration as in seawater.
It is thus required to read the variable sorunoff together with the other dtadyn variables.
We also suggest to make the indices of input data fields to be read a bit more dynamical.
These are the suggested changes:
diff a/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90 b/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90 index d641857..597763d 100644 --- a/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90 +++ b/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90 @@ -49,9 +49,10 @@ MODULE dtadyn CHARACTER(len=100) :: cn_dir !: Root directory for location of ssr files LOGICAL :: ln_dynwzv !: vertical velocity read in a file (T) or computed from u/v (F) LOGICAL :: ln_dynbbl !: bbl coef read in a file (T) or computed (F) LOGICAL :: ln_degrad !: degradation option enabled or not + LOGICAL :: ln_dynrnf !: read runoff data in file (T) or set to zero (F) - INTEGER , PARAMETER :: jpfld = 20 ! maximum number of fields to read + INTEGER , PARAMETER :: jpfld = 21 ! maximum number of fields to read INTEGER , SAVE :: jf_tem ! index of temperature INTEGER , SAVE :: jf_sal ! index of salinity INTEGER , SAVE :: jf_uwd ! index of u-wind @@ -63,6 +64,7 @@ MODULE dtadyn INTEGER , SAVE :: jf_qsr ! index of solar radiation INTEGER , SAVE :: jf_wnd ! index of wind speed INTEGER , SAVE :: jf_ice ! index of sea ice cover + INTEGER , SAVE :: jf_rnf ! index of river runoff INTEGER , SAVE :: jf_ubl ! index of u-bbl coef INTEGER , SAVE :: jf_vbl ! index of v-bbl coef INTEGER , SAVE :: jf_ahu ! index of u-diffusivity coef @@ -256,6 +258,8 @@ CONTAINS fmmflx(:,:) = sf_dyn(jf_fmf)%fnow(:,:,1) * tmask(:,:,1) ! downward salt flux (v3.5+) fr_i(:,:) = sf_dyn(jf_ice)%fnow(:,:,1) * tmask(:,:,1) ! Sea-ice fraction qsr (:,:) = sf_dyn(jf_qsr)%fnow(:,:,1) * tmask(:,:,1) ! solar radiation + IF ( ln_dynrnf ) & + rnf (:,:) = sf_dyn(jf_rnf)%fnow(:,:,1) * tmask(:,:,1) ! river runoffs ! ! bbl diffusive coef #if defined key_trabbl && ! defined key_c1d @@ -328,13 +332,13 @@ CONTAINS !! CHARACTER(len=100) :: cn_dir ! Root directory for location of core files TYPE(FLD_N), DIMENSION(jpfld) :: slf_d ! array of namelist informations on the fields to read - TYPE(FLD_N) :: sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd ! informations about the fields to be read + TYPE(FLD_N) :: sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd, sn_rnf ! informations about the fields to be read TYPE(FLD_N) :: sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl ! " " TYPE(FLD_N) :: sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_fmf ! " " !!---------------------------------------------------------------------- ! - NAMELIST/namdta_dyn/cn_dir, ln_dynwzv, ln_dynbbl, ln_degrad, & - & sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd, & + NAMELIST/namdta_dyn/cn_dir, ln_dynwzv, ln_dynbbl, ln_degrad, ln_dynrnf, & + & sn_tem, sn_sal, sn_mld, sn_emp, sn_ice, sn_qsr, sn_wnd, sn_rnf, & & sn_uwd, sn_vwd, sn_wwd, sn_avt, sn_ubl, sn_vbl, & & sn_ahu, sn_ahv, sn_ahw, sn_eiu, sn_eiv, sn_eiw, sn_fmf ! @@ -356,6 +360,7 @@ CONTAINS WRITE(numout,*) ' vertical velocity read from file (T) or computed (F) ln_dynwzv = ', ln_dynwzv WRITE(numout,*) ' bbl coef read from file (T) or computed (F) ln_dynbbl = ', ln_dynbbl WRITE(numout,*) ' degradation option enabled (T) or not (F) ln_degrad = ', ln_degrad + WRITE(numout,*) ' river runoff option enabled (T) or not (F) ln_dynrnf = ', ln_dynrnf WRITE(numout,*) ENDIF ! @@ -369,40 +374,49 @@ CONTAINS ENDIF jf_tem = 1 ; jf_sal = 2 ; jf_mld = 3 ; jf_emp = 4 ; jf_fmf = 5 ; jf_ice = 6 ; jf_qsr = 7 - jf_wnd = 8 ; jf_uwd = 9 ; jf_vwd = 10 ; jf_wwd = 11 ; jf_avt = 12 ; jfld = 12 + jf_wnd = 8 ; jf_uwd = 9 ; jf_vwd = 10 ; jf_wwd = 11 ; jf_avt = 12 ; jfld = jf_avt ! slf_d(jf_tem) = sn_tem ; slf_d(jf_sal) = sn_sal ; slf_d(jf_mld) = sn_mld slf_d(jf_emp) = sn_emp ; slf_d(jf_fmf ) = sn_fmf ; slf_d(jf_ice) = sn_ice slf_d(jf_qsr) = sn_qsr ; slf_d(jf_wnd) = sn_wnd ; slf_d(jf_avt) = sn_avt slf_d(jf_uwd) = sn_uwd ; slf_d(jf_vwd) = sn_vwd ; slf_d(jf_wwd) = sn_wwd + + ! + IF ( ln_dynrnf ) THEN + jf_rnf = jfld + 1 ; jfld = jf_rnf + slf_d(jf_rnf) = sn_rnf + ELSE + rnf (:,:) = 0._wp + ENDIF + ! IF( .NOT.ln_degrad ) THEN ! no degrad option IF( lk_traldf_eiv .AND. ln_dynbbl ) THEN ! eiv & bbl - jf_ubl = 13 ; jf_vbl = 14 ; jf_eiw = 15 ; jfld = 15 + jf_ubl = jfld + 1 ; jf_vbl = jfld + 2 ; jf_eiw = jfld + 3 ; jfld = jf_eiw slf_d(jf_ubl) = sn_ubl ; slf_d(jf_vbl) = sn_vbl ; slf_d(jf_eiw) = sn_eiw ENDIF IF( .NOT.lk_traldf_eiv .AND. ln_dynbbl ) THEN ! no eiv & bbl - jf_ubl = 13 ; jf_vbl = 14 ; jfld = 14 + jf_ubl = jfld + 1 ; jf_vbl = jfld + 2 ; jfld = jf_vbl slf_d(jf_ubl) = sn_ubl ; slf_d(jf_vbl) = sn_vbl ENDIF IF( lk_traldf_eiv .AND. .NOT.ln_dynbbl ) THEN ! eiv & no bbl - jf_eiw = 13 ; jfld = 13 ; slf_d(jf_eiw) = sn_eiw + jf_eiw = jfld + 1 ; jfld = jf_eiw ; slf_d(jf_eiw) = sn_eiw ENDIF ELSE - jf_ahu = 13 ; jf_ahv = 14 ; jf_ahw = 15 ; jfld = 15 + jf_ahu = jfld + 1 ; jf_ahv = jfld + 2 ; jf_ahw = jfld + 3 ; jfld = jf_ahw slf_d(jf_ahu) = sn_ahu ; slf_d(jf_ahv) = sn_ahv ; slf_d(jf_ahw) = sn_ahw IF( lk_traldf_eiv .AND. ln_dynbbl ) THEN ! eiv & bbl - jf_ubl = 16 ; jf_vbl = 17 - slf_d(jf_ubl) = sn_ubl ; slf_d(jf_vbl) = sn_vbl - jf_eiu = 18 ; jf_eiv = 19 ; jf_eiw = 20 ; jfld = 20 + jf_ubl = jfld + 1 ; jf_vbl = jfld + 2 ; + slf_d(jf_ubl) = sn_ubl ; slf_d(jf_vbl) = sn_vbl + jf_eiu = jfld + 3 ; jf_eiv = jfld + 4 ; jf_eiw = jfld + 5 ; jfld = jf_eiw slf_d(jf_eiu) = sn_eiu ; slf_d(jf_eiv) = sn_eiv ; slf_d(jf_eiw) = sn_eiw ENDIF IF( .NOT.lk_traldf_eiv .AND. ln_dynbbl ) THEN ! no eiv & bbl - jf_ubl = 16 ; jf_vbl = 17 ; jfld = 17 + jf_ubl = jfld + 1 ; jf_vbl = jfld + 2 ; jfld = jf_vbl slf_d(jf_ubl) = sn_ubl ; slf_d(jf_vbl) = sn_vbl ENDIF IF( lk_traldf_eiv .AND. .NOT.ln_dynbbl ) THEN ! eiv & no bbl - jf_eiu = 16 ; jf_eiv = 17 ; jf_eiw = 18 ; jfld = 18 + jf_eiu = jfld + 1 ; jf_eiv = jfld + 2 ; jf_eiw = jfld + 3 ; jfld = jf_eiw slf_d(jf_eiu) = sn_eiu ; slf_d(jf_eiv) = sn_eiv ; slf_d(jf_eiw) = sn_eiw ENDIF ENDIF diff --git a/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90 b/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90 index 9d64fcb..2efab39 100644 --- a/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90 +++ b/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90 @@ -430,6 +430,8 @@ CONTAINS & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux" , "Kg/m2/s", & ! (emp-rnf) & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sorunoff", "River runoffs" , "Kg/m2/s", & ! runoffs + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) CALL histdef( nid_T, "sosfldow", "downward salt flux" , "PSU/m2/s", & ! sfx & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) IF( .NOT. lk_vvl ) THEN @@ -641,6 +643,7 @@ CONTAINS ENDIF CALL histwrite( nid_T, "sossheig", it, sshn , ndim_hT, ndex_hT ) ! sea surface height CALL histwrite( nid_T, "sowaflup", it, ( emp-rnf ) , ndim_hT, ndex_hT ) ! upward water flux + CALL histwrite( nid_T, "sorunoff", it, rnf , ndim_hT, ndex_hT ) ! river runoffs CALL histwrite( nid_T, "sosfldow", it, sfx , ndim_hT, ndex_hT ) ! downward salt flux ! (includes virtual salt flux beneath ice ! in linear free surface case)
Commit History (2)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
6134 | lovato | 2015-12-18T16:01:55+01:00 | Add changes proposed in ticket #1252 and #1645 (related to runoff data sharing) |
4570 | vichi | 2014-03-25T18:47:41+01:00 | Add reading of river runoff data in off-line simulation, Ticket #1252 |
Change History (3)
comment:1 Changed 11 years ago by vichi
- Resolution set to fixed
- Status changed from new to closed
comment:2 Changed 11 years ago by vichi
- Resolution fixed deleted
- Status changed from closed to reopened
There are more changes needed to implement this feature.
Index: nemogcm.F90 =================================================================== --- nemogcm.F90 (revision 4614) +++ nemogcm.F90 (working copy) @@ -13,6 +13,7 @@ !! nemo_ctl : initialisation of algorithm flag !! nemo_closefile : close remaining files !!---------------------------------------------------------------------- + USE step_oce ! module used in the ocean time stepping module USE dom_oce ! ocean space domain variables USE oce ! dynamics and tracers variables USE c1d ! 1D configuration @@ -50,6 +51,8 @@ USE trc USE trcnam USE trcrst + USE sbcrnf, ONLY: sbc_rnf ! + USE sbc_oce, ONLY: ln_rnf IMPLICIT NONE PRIVATE @@ -95,6 +98,11 @@ ! CALL iom_init( "nemo" ) ! iom_put initialization (must be done after nemo_init for AGRIF+XIOS+OASIS) ! + ! + ! Initialize arrays of runoffs and read data from the namelist + ! + IF ( ln_rnf ) CALL sbc_rnf(istp) + ! DO WHILE ( istp <= nitend .AND. nstop == 0 ) ! time stepping ! IF( istp /= nit000 ) CALL day ( istp ) ! Calendar (day was already called at nit000 in day_init)
comment:3 Changed 9 years ago by lovato
- Resolution set to fixed
- Status changed from reopened to closed
Changes were applied in revision r6134.
Added in [4570]