New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 6715 for branches/NERC – NEMO

Changeset 6715 for branches/NERC


Ignore:
Timestamp:
2016-06-16T18:58:14+02:00 (8 years ago)
Author:
jpalmier
Message:

JPALM -- 16-06-2016 -- MEDUSA branch update :

-- pass co2 flux and dms_surf through restart for atm coupling.
-- introduce CFC cycle for dynamic evolution comparison
-- add Tim Graham Age tracer
-- include MEDUSA Q10 modif
-- svn-key removed
-- still need debug stage

Location:
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC
Files:
6 added
15 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90

    r5735 r6715  
    4949      TYPE(DIAG), DIMENSION(jp_cfc_2d) :: cfcdia2d 
    5050      !! 
    51       NAMELIST/namcfcdate/ ndate_beg, nyear_res 
     51      NAMELIST/namcfcdate/ ndate_beg, nyear_res, simu_type  
    5252      NAMELIST/namcfcdia/  cfcdia2d     ! additional diagnostics 
    5353      !!---------------------------------------------------------------------- 
     
    7272         WRITE(numout,*) '    initial calendar date (aammjj) for CFC  ndate_beg = ', ndate_beg 
    7373         WRITE(numout,*) '    restoring time constant (year)          nyear_res = ', nyear_res 
     74         IF (simu_type==1) THEN 
     75            WRITE(numout,*) ' CFC running on SPIN-UP mode             simu_type = ', simu_type 
     76         ELSEIF (simu_type==2) THEN 
     77            WRITE(numout,*) ' CFC running on HINDCAST/PROJECTION mode simu_type = ', simu_type 
     78         ENDIF 
    7479      ENDIF 
    7580      nyear_beg = ndate_beg / 10000 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90

    r6216 r6715  
    3232   INTEGER , PUBLIC            ::   jpyear         ! Number of years read in CFC1112 file 
    3333   INTEGER , PUBLIC            ::   ndate_beg      ! initial calendar date (aammjj) for CFC 
     34   INTEGER , PUBLIC            ::   simu_type      ! Kind of simulation: 1- Spin-up  
     35                                                   !                     2- Hindcast/projection 
    3436   INTEGER , PUBLIC            ::   nyear_res      ! restoring time constant (year) 
    3537   INTEGER , PUBLIC            ::   nyear_beg      ! initial year (aa)  
     
    8082      ! 
    8183      INTEGER  ::   ji, jj, jn, jl, jm, js 
    82       INTEGER  ::   iyear_beg, iyear_end 
     84      INTEGER  ::   iyear_beg, iyear_end,iyear_tmp 
    8385      INTEGER  ::   im1, im2, ierr 
    8486      REAL(wp) ::   ztap, zdtap         
     
    104106      ! Temporal interpolation 
    105107      ! ---------------------- 
    106       iyear_beg = nyear - 1900 
     108      !! JPALM -- 15-06-2016 -- define 2 kind of CFC run. 
     109      !!                     we want to make cycle experiments,  
     110      !!                     to periodically compare the ocean dynamic within 
     111      !!                     1- the SPIN-UP and 2- Hincast/Projections 
     112      !!                     -- main difference is the way to define the year of 
     113      !!                     simulation, that determine the atm pCFC. 
     114      !!                     1-- Spin-up: our atm forcing is of 30y we cycle on. 
     115      !!                     So we do 90y CFC cycles to be in good 
     116      !!                     correspondance with the atmosphere 
     117      !!                     2-- Hindcast/proj, instead of nyear-1900 we keep 
     118      !!                     the 2 last digit, and enable 3 cycle from 1800 to 2100.   
     119      !!---------------------------------------------------------------------- 
     120      !! 1 -- SPIN-UP 
     121      IF (simu_type==1) THEN 
     122         iyear_tmp = nyear - nyear_res  !! JPALM -- in our spin-up, nyear_res is 1000 
     123         iyear_beg = MOD( iyear_tmp , 90 ) 
     124         !! JPALM -- the pCFC file only got 78 years. 
     125         !!       So if iyear_beg > 78 then we set pCFC to 0 
     126         !!             iyear_beg = 0 as well -- must try to avoid obvious problems 
     127         !!             as Pcfc is set to 0.00 up to year 32, let set iyear_beg to year 10 
     128         !!          else, must add 30 to iyear_beg to match with P_cfc indices 
     129         !!--------------------------------------- 
     130         IF ((iyear_beg > 77) .OR. (iyear_beg==0)) THEN 
     131            iyear_beg = 10 
     132         ELSE  
     133            iyear_beg = iyear_beg + 30 
     134         ENDIF 
     135      !! 
     136      !! 2 -- Hindcast/proj 
     137      ELSEIF (simu_type==2) THEN 
     138         iyear_beg = MOD(nyear, 100) 
     139         IF (iyear_beg < 9)  iyear_beg = iyear_beg + 100 
     140         !! JPALM -- Same than previously, if iyear_beg is out of P_cfc range, 
     141         !!       we want to set p_CFC to 0.00 --> set iyear_beg = 10 
     142         IF ((iyear_beg < 30) .OR. (iyear_beg > 107)) iyear_beg = 10              
     143      ENDIF 
     144      !! 
    107145      IF ( nmonth <= 6 ) THEN 
    108146         iyear_beg = iyear_beg - 1 
     
    246284      !! ** Purpose : sets constants for CFC model 
    247285      !!--------------------------------------------------------------------- 
    248       INTEGER :: jn 
     286      INTEGER :: jl, jn 
    249287 
    250288      ! coefficient for CFC11  
     
    286324      sca(4,2) =  -0.067430 
    287325 
    288       !IF( ln_rsttr ) THEN 
    289       !   IF(lwp) WRITE(numout,*) 
    290       !   IF(lwp) WRITE(numout,*) ' Read specific variables from CFC model ' 
    291       !   IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
    292       !   ! 
    293       !   DO jn = jp_cfc0, jp_cfc1 
    294       !      CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) )  
    295       !   END DO 
    296       !ENDIF 
     326      !!--------------------------------------------- 
     327      !! JPALM -- re-initialize CFC fields and diags if restart a CFC cycle, 
     328      !!       Or if out of P_cfc range 
     329      IF (simu_type==1) THEN 
     330         iyear_tmp = nyear - nyear_res  !! JPALM -- in our spin-up, nyear_res is 1000 
     331         iyear_beg = MOD( iyear_tmp , 90 ) 
     332         !!--------------------------------------- 
     333         IF ((iyear_beg > 77) .OR. (iyear_beg==0)) THEN 
     334            qtr_cfc(:,:,:) = 0._wp 
     335            IF(lwp) THEN 
     336               WRITE(numout,*)  
     337               WRITE(numout,*) 'restart a CFC cycle or out of P_cfc year bounds zero --' 
     338               WRITE(numout,*) '                          --    set qtr_CFC = 0.00   --' 
     339               WRITE(numout,*) '                          --   set qint_CFC = 0.00   --' 
     340               WRITE(numout,*) '                          --   set trn(CFC) = 0.00   --' 
     341            ENDIF 
     342            qtr_cfc(:,:,:) = 0._wp 
     343            qint_cfc(:,:,:) = 0._wp 
     344            DO jl = 1, jp_cfc 
     345              jn = jp_cfc0 + jl - 1 
     346              trn(:,:,:,jn) = 0._wp 
     347              trb(:,:,:,jn) = 0._wp 
     348            END DO 
     349         ENDIF 
     350      !! 
     351      !! 2 -- Hindcast/proj 
     352      ELSEIF (simu_type==2) THEN 
     353         iyear_beg = MOD(nyear, 100) 
     354         IF (iyear_beg < 9)  iyear_beg = iyear_beg + 100 
     355         IF ((iyear_beg < 30) .OR. (iyear_beg > 107)) THEN 
     356            qtr_cfc(:,:,:) = 0._wp 
     357            IF(lwp) THEN 
     358               WRITE(numout,*) 
     359               WRITE(numout,*) 'restart a CFC cycle or out of P_cfc year bounds zero --' 
     360               WRITE(numout,*) '                          --    set qtr_CFC = 0.00   --' 
     361               WRITE(numout,*) '                          --   set qint_CFC = 0.00   --' 
     362               WRITE(numout,*) '                          --   set trn(CFC) = 0.00   --' 
     363            ENDIF 
     364            qtr_cfc(:,:,:) = 0._wp 
     365            qint_cfc(:,:,:) = 0._wp 
     366            DO jl = 1, jp_cfc 
     367              jn = jp_cfc0 + jl - 1 
     368              trn(:,:,:,jn) = 0._wp 
     369              trb(:,:,:,jn) = 0._wp 
     370            END DO 
     371         ENDIF 
     372      ENDIF 
     373 
    297374      IF(lwp) WRITE(numout,*) 
    298375      ! 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/gas_transfer.F90

    r5841 r6715  
    2424   !!---------------------------------------------------------------------- 
    2525   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)  
    26    !! $Id: trcbio.F90 1146 2008-06-25 11:42:56Z rblod $  
     26   !! $Id$ 
    2727   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    2828   !!---------------------------------------------------------------------- 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/mocsy_wrapper.F90

    r5841 r6715  
    2828   !!---------------------------------------------------------------------- 
    2929   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)  
    30    !! $Id: trcbio.F90 1146 2008-06-25 11:42:56Z rblod $  
     30   !! $Id$ 
    3131   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    3232   !!---------------------------------------------------------------------- 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90

    r6466 r6715  
    4949   REAL(wp) ::  xthetam   !:  maximum Chl to C ratio for non-diatoms       
    5050   REAL(wp) ::  xthetamd  !:  maximum Chl to C ratio for diatoms     
     51   REAL(wp) ::  jq10      !:  specific Q10 value (jphy==2)     
    5152!! 
    5253!! Diatom silicon parameters 
     
    237238   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_din  !: 2D avg DIN   (now) 
    238239   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_din  !: 2D avg DIN   (after) 
     240!! 
     241!! 2D fields needing to be knows at first tstp for coupling with atm - UKEMS(Jpalm,14-06-2016) 
     242   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_co2_flx  !: 2D avg fx co2 (before) 
     243   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_co2_flx  !: 2D avg fx co2 (now) 
     244   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_co2_flx  !: 2D avg fx co2 (after) 
     245   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zb_dms_srf  !: 2D avg fx co2 (before) 
     246   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: zn_dms_srf  !: 2D avg fx co2 (now) 
     247   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   :: za_dms_srf  !: 2D avg fx co2 (after) 
     248 
    239249#endif 
    240250 
     
    469479         &      zb_dms_din(jpi,jpj)  , zn_dms_din(jpi,jpj)  ,       &         
    470480         &      za_dms_din(jpi,jpj)  ,                           STAT=ierr(4) ) 
     481      !* 2D fields needing to be knows at first tstp for coupling with atm - 
     482      !UKEMSi (Jpalm,14-06-2016)  
     483      ALLOCATE( zb_co2_flx(jpi,jpj)  , zn_co2_flx(jpi,jpj)  ,       & 
     484         &      za_co2_flx(jpi,jpj)  ,                              & 
     485         &      zb_dms_srf(jpi,jpj)  , zn_dms_srf(jpi,jpj)  ,       &            
     486         &      za_dms_srf(jpi,jpj)  ,                           STAT=ierr(5) ) 
    471487# endif 
    472488      !* 2D fields of miscellaneous parameters 
     
    474490         &      riv_n(jpi,jpj)                              ,       & 
    475491         &      riv_si(jpi,jpj)      , riv_c(jpi,jpj)       ,       & 
    476          &      riv_alk(jpi,jpj)     , friver_dep(jpk,jpk)  ,    STAT=ierr(5) ) 
     492         &      riv_alk(jpi,jpj)     , friver_dep(jpk,jpk)  ,    STAT=ierr(6) ) 
    477493      !* 2D and 3D fields of light parameters 
    478494      ALLOCATE( neln(jpi,jpj)        , xze(jpi,jpj)         ,       & 
    479          &      xpar(jpi,jpj,jpk)    ,                           STAT=ierr(6) ) 
     495         &      xpar(jpi,jpj,jpk)    ,                           STAT=ierr(7) ) 
    480496      !* 2D and 3D fields of sediment-associated parameters 
    481497      ALLOCATE( dminl(jpi,jpj)       , dmin3(jpi,jpj,jpk)   ,       & 
     
    484500         &      fbodf(jpi,jpj)       , fbods(jpi,jpj)       ,       & 
    485501         &      ffln(jpi,jpj,jpk)    , fflf(jpi,jpj,jpk)    ,       & 
    486          &      ffls(jpi,jpj,jpk)    , cmask(jpi,jpj)       ,    STAT=ierr(7) )  
     502         &      ffls(jpi,jpj,jpk)    , cmask(jpi,jpj)       ,    STAT=ierr(8) )  
    487503#endif 
    488504      ! 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcavg_medusa.F90

    r5841 r6715  
    2828   !!---------------------------------------------------------------------- 
    2929   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)  
    30    !! $Id: trcbio.F90 1146 2008-06-25 11:42:56Z rblod $  
     30   !! $Id$ 
    3131   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    3232   !!---------------------------------------------------------------------- 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r6509 r6715  
    175175      REAL(wp) ::    loc_T,fun_T,xvpnT,xvpdT 
    176176      INTEGER  ::    ieppley 
     177      !! AXY (16/05/11): per Katya's prompting, add in new T-dependence 
     178      !!                 for phytoplankton growth only (i.e. no change 
     179      !!                 for remineralisation) 
     180      REAL(wp) ::    fun_Q10 
    177181      !! AXY (01/03/10): add in mixed layer PP diagnostics 
    178182      REAL(wp), DIMENSION(jpi,jpj) ::  fprn_ml,fprd_ml 
     
    316320      !! AXY (13/03/15): add in other DMS calculations 
    317321      REAL(wp) ::    dms_andr, dms_simo, dms_aran, dms_hall 
     322#  if defined key_oasis3 
     323      REAL(wp), DIMENSION(jpi,jpj) :: pco2a_2d(ji,jj)        !! use 2D atm pCO2 from atm coupling 
     324#  endif 
     325 
    318326# endif 
    319327      !!  
     
    353361      REAL(wp), POINTER, DIMENSION(:,:  ) :: mdetc2d, gmidc2d, gmedc2d, f_pco2a2d, f_pco2w2d, f_co2flux2d 
    354362      REAL(wp), POINTER, DIMENSION(:,:  ) :: f_TDIC2d, f_TALK2d, f_kw6602d, f_pp02d, f_o2flux2d, f_o2sat2d 
    355       REAL(wp), POINTER, DIMENSION(:,:  ) :: dms_surf2d, dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d 
     363      REAL(wp), POINTER, DIMENSION(:,:  ) :: dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d, dms_surf2d 
    356364      REAL(wp), POINTER, DIMENSION(:,:  ) :: iben_n2d, iben_fe2d, iben_c2d, iben_si2d, iben_ca2d, oben_n2d 
    357365      REAL(wp), POINTER, DIMENSION(:,:  ) :: oben_fe2d, oben_c2d, oben_si2d, oben_ca2d, sfr_ocal2d 
    358366      REAL(wp), POINTER, DIMENSION(:,:  ) :: sfr_oarg2d, lyso_ca2d  
     367 
    359368# endif 
    360369      !! 2D var for diagnostics. 
     
    814823      ENDIF 
    815824      IF( med_diag%CO2FLUX%dgsave ) THEN 
    816          CALL wrk_alloc( jpi, jpj,    f_co2flux2d   ) 
     825         CALL wrk_alloc( jpi, jpj,   f_co2flux2d    ) 
    817826         f_co2flux2d(:,:)      = 0.0      !! 
    818827      ENDIF 
     
    897906      IF (jdms .eq. 1) THEN 
    898907         IF( med_diag%DMS_SURF%dgsave ) THEN 
    899             CALL wrk_alloc( jpi, jpj,  dms_surf2d     ) 
    900          dms_surf2d(:,:)      = 0.0      !! 
     908            CALL wrk_alloc( jpi, jpj,   dms_surf2d    ) 
     909            dms_surf2d(:,:)      = 0.0      !! 
    901910         ENDIF 
    902911         IF( med_diag%DMS_ANDR%dgsave ) THEN 
    903912            CALL wrk_alloc( jpi, jpj,   dms_andr2d    ) 
    904          dms_andr2d(:,:)      = 0.0      !! 
     913            dms_andr2d(:,:)      = 0.0      !! 
    905914         ENDIF 
    906915         IF( med_diag%DMS_SIMO%dgsave ) THEN 
    907916            CALL wrk_alloc( jpi, jpj,  dms_simo2d     ) 
    908          dms_simo2d(:,:)      = 0.0      !! 
     917            dms_simo2d(:,:)      = 0.0      !! 
    909918         ENDIF 
    910919         IF( med_diag%DMS_ARAN%dgsave ) THEN 
    911920            CALL wrk_alloc( jpi, jpj,   dms_aran2d    ) 
    912          dms_aran2d(:,:)      = 0.0      !! 
     921            dms_aran2d(:,:)      = 0.0      !! 
    913922         ENDIF 
    914923         IF( med_diag%DMS_HALL%dgsave ) THEN 
    915924            CALL wrk_alloc( jpi, jpj,   dms_hall2d    ) 
    916          dms_hall2d(:,:)      = 0.0      !! 
     925            dms_hall2d(:,:)      = 0.0      !! 
    917926         ENDIF 
    918927      ENDIF    
     
    10421051                  !! OPEN wet point IF..THEN loop 
    10431052                  if (tmask(ji,jj,jk).eq.1) then 
     1053#  if defined key_oasis3 
     1054                     f_pco2a = pco2a_2d(ji,jj)        !! use 2D atm pCO2 from atm coupling 
     1055#  endif 
    10441056                     !! do carbonate chemistry 
    10451057                     !! 
     
    13711383                  !! 
    13721384                  f_wind  = wndm(ji,jj) 
     1385#  if defined key_oasis3 
     1386                  f_pco2a = pco2a_2d(ji,jj)        !! use 2D atm pCO2 from atm coupling 
     1387#  endif 
     1388 
    13731389                  !! 
    13741390                  !! AXY (23/06/15): as part of an effort to update the carbonate chemistry 
     
    17061722               loc_T   = tsn(ji,jj,jk,jp_tem) 
    17071723               fun_T   = 1.066**(1.0 * loc_T) 
     1724               !! AXY (16/05/11): add in new Q10 (1.5, not 2.0) for 
     1725               !phytoplankton 
     1726               !!                 growth; remin. unaffected 
     1727               fun_Q10 = jq10**((loc_T - 0.0) / 10.0) 
    17081728               if (jphy.eq.1) then 
    17091729                  xvpnT = xvpn * fun_T 
    17101730                  xvpdT = xvpd * fun_T 
     1731               elseif (jphy.eq.2) then 
     1732                  xvpnT = xvpn * fun_Q10 
     1733                  xvpdT = xvpd * fun_Q10 
    17111734               else 
    17121735                  xvpnT = xvpn 
     
    21262149                  fddc = xmdc * fun_T * zdtc 
    21272150# endif 
     2151               elseif (jmd.eq.2) then 
     2152                  !! AXY (16/05/13): add in Q10-based parameterisation (def in nmlst) 
     2153                  !! temperature-dependent 
     2154                  fdd  = xmd  * fun_Q10 * zdet 
     2155#if defined key_roam 
     2156                  fddc = xmdc * fun_Q10 * zdtc 
     2157#endif 
    21282158               else 
    21292159                  !! temperature-independent 
     
    43274357                     IF( med_diag%CO2FLUX%dgsave ) THEN 
    43284358                         CALL iom_put( "CO2FLUX"  , f_co2flux2d ) 
    4329                           CALL wrk_dealloc( jpi, jpj,   f_co2flux2d   ) 
     4359                         zb_co2_flx = zn_co2_flx 
     4360                         zn_co2_flx = f_co2flux2d 
     4361                         CALL wrk_dealloc( jpi, jpj,   f_co2flux2d   ) 
    43304362                     ENDIF 
    43314363                     IF( med_diag%OM_CAL%dgsave ) THEN 
     
    43684400                       IF( med_diag%DMS_SURF%dgsave ) THEN 
    43694401                         CALL iom_put( "DMS_SURF"  , dms_surf2d ) 
    4370                           CALL wrk_dealloc( jpi, jpj,   dms_surf2d   ) 
     4402                         zb_dms_srf = zn_dms_srf 
     4403                         zn_dms_srf = dms_surf2d 
     4404                         CALL wrk_dealloc( jpi, jpj,   dms_surf2d   )  
    43714405                       ENDIF 
    43724406                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcini_medusa.F90

    r6173 r6715  
    258258      IF(lwp) WRITE(numout,*) ' trc_ini_medusa: average fields for DMS initialised to zero' 
    259259      IF(lwp) CALL flush(numout) 
    260  
     260      !! 
     261      !!--------------------------------------------------------------------- 
     262      !!JPALM (14-06-2016): init dms and co2 flux for coupling with atm (UKESM) 
     263      !!--------------------------------------------------------------------- 
     264      !! 
     265      zb_co2_flx(:,:)  = 0.0  !! CHN 
     266      zn_co2_flx(:,:)  = 0.0 
     267      za_co2_flx(:,:)  = 0.0 
     268      zb_dms_srf(:,:)  = 0.0  !! CHD 
     269      zn_dms_srf(:,:)  = 0.0 
     270      za_dms_srf(:,:)  = 0.0 
     271      !! 
     272      IF(lwp) WRITE(numout,*) ' trc_ini_medusa: DMS and CO2 flux (UKESM) initialised to zero' 
     273      IF(lwp) CALL flush(numout) 
     274      !! 
    261275      !!---------------------------------------------------------------------- 
    262276      !! AXY (04/11/13): initialise fields previously done by trc_sed_medusa 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90

    r5937 r6715  
    6565      ! 
    6666      NAMELIST/natbio/ xxi,xaln,xald,jphy,xvpn,xvpd,          & 
    67       &    xsin0,xnsi0,xuif,jliebig,                          & 
     67      &    xsin0,xnsi0,xuif,jliebig, jq10,                    & 
    6868      &    xthetam,xthetamd,xnln,xnld,xsld,xfln,xfld,         & 
    6969      &  xgmi,xgme,xkmi,xkme,xphi,xbetan,xbetac,xkc,          & 
     
    586586            WRITE(numout,*) & 
    587587            &   ' phytoplankton growth is *temperature-dependent*            jphy        = ', jphy 
     588         elseif (jphy.eq.2) then 
     589            WRITE(numout,*) & 
     590            &   ' phytoplankton growth is *temperature-dependent(Q10)*       jphy        = ', jphy 
    588591         elseif (jphy.eq.0) then 
    589592            WRITE(numout,*) & 
     
    598601         WRITE(numout,*)     & 
    599602         &   ' maximum Chl to C ratio for diatoms,                        xthetamd    = ', xthetamd 
     603         WRITE(numout,*)     & 
     604         &   ' specific Q10 value (jphy==2),                                  jq10    = ', jq10 
    600605!! 
    601606!! Diatom silicon parameters 
     
    746751            WRITE(numout,*) & 
    747752            &   ' detritus remineralisation is *temperature-dependent*       jmd         = ', jmd 
     753         elseif (jmd.eq.2) then 
     754            WRITE(numout,*) & 
     755            &   ' detritus remineralisation is *temperature-dependent(Q10)*  jmd         = ', jmd 
    748756         elseif (jmd.eq.0) then 
    749757            WRITE(numout,*) & 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/par_trc.F90

    r5841 r6715  
    1818   USE par_medusa    ! MEDUSA model 
    1919   USE par_idtra     ! Idealize tracer 
     20   USE par_age       ! AGE  tracer 
    2021 
    2122   IMPLICIT NONE 
     
    2728   ! Passive tracers : Total size 
    2829   ! ---------------               ! total number of passive tracers, of 2d and 3d output and trend arrays 
    29    INTEGER, PUBLIC,  PARAMETER ::   jptra    =  jp_pisces     + jp_cfc     + jp_c14b    + jp_my_trc    + jp_medusa    + jp_idtra 
    30    INTEGER, PUBLIC,  PARAMETER ::   jpdia2d  =  jp_pisces_2d  + jp_cfc_2d  + jp_c14b_2d + jp_my_trc_2d + jp_medusa_2d + jp_idtra_2d 
    31    INTEGER, PUBLIC,  PARAMETER ::   jpdia3d  =  jp_pisces_3d  + jp_cfc_3d  + jp_c14b_3d + jp_my_trc_3d + jp_medusa_3d + jp_idtra_3d 
     30   INTEGER, PUBLIC,  PARAMETER ::   jptra    =  jp_pisces     + jp_cfc     + jp_c14b    + jp_my_trc    + jp_medusa    + jp_idtra     + jp_age 
     31   INTEGER, PUBLIC,  PARAMETER ::   jpdia2d  =  jp_pisces_2d  + jp_cfc_2d  + jp_c14b_2d + jp_my_trc_2d + jp_medusa_2d + jp_idtra_2d  + jp_age_2d 
     32   INTEGER, PUBLIC,  PARAMETER ::   jpdia3d  =  jp_pisces_3d  + jp_cfc_3d  + jp_c14b_3d + jp_my_trc_3d + jp_medusa_3d + jp_idtra_3d  + jp_age_3d 
    3233   !                     ! total number of sms diagnostic arrays 
    33    INTEGER, PUBLIC,  PARAMETER ::   jpdiabio =  jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_my_trc_trd + jp_medusa_trd + jp_idtra_trd 
     34   INTEGER, PUBLIC,  PARAMETER ::   jpdiabio =  jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_my_trc_trd + jp_medusa_trd + jp_idtra_trd + jp_age_trd 
    3435    
    3536   !  1D configuration ("key_c1d") 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r6645 r6715  
    2727   USE trcini_medusa   ! MEDUSA   initialisation 
    2828   USE trcini_idtra    ! idealize tracer initialisation 
     29   USE trcini_age      ! AGE      initialisation 
    2930   USE trcdta          ! initialisation from files 
    3031   USE daymod          ! calendar manager 
     
    107108      IF( lk_cfc     )       CALL trc_ini_cfc          ! CFC     tracers 
    108109      IF( lk_c14b    )       CALL trc_ini_c14b         ! C14 bomb  tracer 
     110      IF( lk_age     )       CALL trc_ini_age          ! AGE       tracer 
    109111      IF( lk_my_trc  )       CALL trc_ini_my_trc       ! MY_TRC  tracers 
    110112 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcnam.F90

    r6201 r6715  
    2828   USE trcnam_medusa     ! MEDUSA namelist 
    2929   USE trcnam_idtra      ! Idealise tracer namelist 
     30   USE trcnam_age        ! AGE SMS namelist 
    3031   USE trd_oce        
    3132   USE trdtrc_oce 
     
    5758      !! ** Method  : - read passive tracer namelist  
    5859      !!              - read namelist of each defined SMS model 
    59       !!                ( (PISCES, CFC, MY_TRC, MEDUSA, IDTRA ) 
     60      !!                ( (PISCES, CFC, MY_TRC, MEDUSA, IDTRA, Age ) 
    6061      !!--------------------------------------------------------------------- 
    6162      INTEGER  ::   jn, jk                     ! dummy loop indice 
     
    276277      IF (lwp) write (numout,*) 'Jpalm - debug' 
    277278      IF (lwp) write (numout,*) 'CALL trc_nam_cfc -- OK' 
    278       IF (lwp) write (numout,*) 'in trc_nam - CALL trc_nam OK' 
     279      IF (lwp) write (numout,*) 'in trc_nam - just before CALL trc_nam_c14' 
    279280      IF (lwp) write (numout,*) ' ' 
    280281# endif 
     
    283284      ELSE                    ;   IF(lwp) WRITE(numout,*) '          C14 not used' 
    284285      ENDIF 
    285  
     286      ! 
     287# if defined key_debug_medusa 
     288      CALL flush(numout) 
     289      IF (lwp) write (numout,*) '------------------------------' 
     290      IF (lwp) write (numout,*) 'Jpalm - debug' 
     291      IF (lwp) write (numout,*) 'CALL trc_nam_c14 -- OK' 
     292      IF (lwp) write (numout,*) 'in trc_nam - just before CALL trc_nam_age' 
     293      IF (lwp) write (numout,*) ' ' 
     294# endif 
     295      ! 
     296      IF( lk_age     ) THEN  ;   CALL trc_nam_age         ! AGE     tracer 
     297      ELSE                   ;   IF(lwp) WRITE(numout,*) '          AGE not used' 
     298      ENDIF 
     299      ! 
     300# if defined key_debug_medusa 
     301      CALL flush(numout) 
     302      IF (lwp) write (numout,*) '------------------------------' 
     303      IF (lwp) write (numout,*) 'Jpalm - debug' 
     304      IF (lwp) write (numout,*) 'CALL trc_nam_age -- OK' 
     305      IF (lwp) write (numout,*) 'in trc_nam - CALL trc_nam -- OK' 
     306      IF (lwp) write (numout,*) ' ' 
     307# endif 
     308      ! 
    286309      IF( lk_my_trc  ) THEN   ;   CALL trc_nam_my_trc      ! MY_TRC  tracers 
    287310      ELSE                    ;   IF(lwp) WRITE(numout,*) '          MY_TRC not used' 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r6268 r6715  
    239239         zn_dms_din(:,:)  = 0.0 
    240240      ENDIF 
     241      !!   
     242      !! JPALM 14-06-2016 -- add CO2 flux and DMS surf through the restart 
     243      !!                  -- needed for the coupling with atm 
     244      IF( iom_varid( numrtr, 'B_DMS_srf', ldstop = .FALSE. ) > 0 ) THEN 
     245         IF(lwp) WRITE(numout,*) 'DMS surf concentration - reading in ...' 
     246         CALL iom_get( numrtr, jpdom_autoglo, 'B_DMS_srf',  zb_dms_srf(:,:)  ) 
     247         CALL iom_get( numrtr, jpdom_autoglo, 'N_DMS_srf',  zn_dms_srf(:,:)  ) 
     248      ELSE 
     249         IF(lwp) WRITE(numout,*) 'DMS surf concentration - setting to zero ...' 
     250         zb_dms_srf(:,:)  = 0.0   !! DMS 
     251         zn_dms_srf(:,:)  = 0.0 
     252      ENDIF 
     253      !! 
     254      IF( iom_varid( numrtr, 'B_CO2_flx', ldstop = .FALSE. ) > 0 ) THEN 
     255         IF(lwp) WRITE(numout,*) 'CO2 air-sea flux - reading in ...' 
     256         CALL iom_get( numrtr, jpdom_autoglo, 'B_CO2_flx',  zb_co2_flx(:,:)  ) 
     257         CALL iom_get( numrtr, jpdom_autoglo, 'N_CO2_flx',  zn_co2_flx(:,:)  ) 
     258      ELSE 
     259         IF(lwp) WRITE(numout,*) 'CO2 air-sea flux - setting to zero ...' 
     260         zb_co2_flx(:,:)  = 0.0   !! CO2 flx 
     261         zn_co2_flx(:,:)  = 0.0 
     262      ENDIF 
    241263      !! 
    242264      !! calculate stats on these fields 
     
    247269      call trc_rst_dia_stat(zn_dms_qsr(:,:), 'DMS, QSR') 
    248270      call trc_rst_dia_stat(zn_dms_din(:,:), 'DMS, DIN') 
     271      call trc_rst_dia_stat(zn_dms_srf(:,:), 'DMS surf') 
     272      call trc_rst_dia_stat(zn_co2_flx(:,:), 'CO2 flux') 
    249273#endif 
    250274      ! 
     
    366390      CALL iom_rstput( kt, nitrst, numrtw, 'B_DMS_DIN',  zb_dms_din(:,:)  ) 
    367391      CALL iom_rstput( kt, nitrst, numrtw, 'N_DMS_DIN',  zn_dms_din(:,:)  ) 
     392         !! JPALM 14-06-2016 -- add CO2 flux and DMS surf through the restart 
     393         !!                  -- needed for the coupling with atm 
     394      CALL iom_rstput( kt, nitrst, numrtw, 'B_DMS_srf',  zb_dms_srf(:,:)  ) 
     395      CALL iom_rstput( kt, nitrst, numrtw, 'N_DMS_srf',  zn_dms_srf(:,:)  ) 
     396      CALL iom_rstput( kt, nitrst, numrtw, 'B_CO2_flx',  zb_co2_flx(:,:)  ) 
     397      CALL iom_rstput( kt, nitrst, numrtw, 'N_CO2_flx',  zn_co2_flx(:,:)  ) 
    368398      !! 
    369399      !! calculate stats on these fields 
     
    374404      call trc_rst_dia_stat(zn_dms_qsr(:,:), 'DMS, QSR') 
    375405      call trc_rst_dia_stat(zn_dms_din(:,:), 'DMS, DIN') 
     406      call trc_rst_dia_stat(zn_dms_srf(:,:), 'DMS surf') 
     407      call trc_rst_dia_stat(zn_co2_flx(:,:), 'CO2 flux') 
    376408      !!  
    377409#endif 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcsms.F90

    r6261 r6715  
    2020   USE trcsms_cfc         ! CFC 11 & 12 
    2121   USE trcsms_c14b        ! C14b tracer  
     22   USE trcsms_age         ! AGE tracer  
    2223   USE trcsms_my_trc      ! MY_TRC  tracers 
    2324   USE prtctl_trc         ! Print control for debbuging 
     
    6465      IF( lk_cfc     )   CALL trc_sms_cfc    ( kt )    ! surface fluxes of CFC 
    6566# if defined key_debug_medusa 
    66          IF(lwp) WRITE(numout,*) '--trcsms : CFC OK --  continue -- ' 
     67         IF(lwp) WRITE(numout,*) '--trcsms : CFC OK --  next C14 -- ' 
    6768      CALL flush(numout) 
    6869# endif 
    6970      IF( lk_c14b    )   CALL trc_sms_c14b   ( kt )    ! surface fluxes of C14 
     71# if defined key_debug_medusa 
     72         IF(lwp) WRITE(numout,*) '--trcsms : C14 OK --  next C14 -- ' 
     73      CALL flush(numout) 
     74# endif 
     75      IF( lk_age     )   CALL trc_sms_age    ( kt )    ! AGE tracer 
     76# if defined key_debug_medusa 
     77         IF(lwp) WRITE(numout,*) '--trcsms : Age OK --  Continue  -- ' 
     78      CALL flush(numout) 
     79# endif 
    7080      IF( lk_my_trc  )   CALL trc_sms_my_trc ( kt )    ! MY_TRC  tracers 
    7181 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcwri.F90

    r6047 r6715  
    2424   USE trcwri_medusa 
    2525   USE trcwri_idtra 
     26   USE trcwri_age 
    2627 
    2728   IMPLICIT NONE 
     
    6061      ! --------------------------------------- 
    6162      IF( lk_pisces  )   CALL trc_wri_pisces     ! PISCES  
     63      IF( lk_medusa  )   CALL trc_wri_medusa     ! MESDUSA 
     64      IF( lk_idtra   )   CALL trc_wri_idtra       ! Idealize tracers 
    6265      IF( lk_cfc     )   CALL trc_wri_cfc        ! surface fluxes of CFC 
    6366      IF( lk_c14b    )   CALL trc_wri_c14b       ! surface fluxes of C14 
     67      IF( lk_age     )   CALL trc_wri_age        ! AGE tracer 
    6468      IF( lk_my_trc  )   CALL trc_wri_my_trc     ! MY_TRC  tracers 
    65       ! 
    66 # if defined key_debug_medusa 
    67       CALL flush(numout) 
    68       IF (lwp) write (numout,*) '------------------------------' 
    69       IF (lwp) write (numout,*) 'Jpalm - debug' 
    70       IF (lwp) write (numout,*) 'Just before call trc_wri_medusa' 
    71       IF (lwp) write (numout,*) ' ' 
    72       CALL flush(numout) 
    73 # endif 
    74       ! 
    75       IF( lk_medusa  )   CALL trc_wri_medusa     ! MESDUSA 
    76       ! 
    77 # if defined key_debug_medusa 
    78       CALL flush(numout) 
    79       IF (lwp) write (numout,*) '------------------------------' 
    80       IF (lwp) write (numout,*) 'Jpalm - debug' 
    81       IF (lwp) write (numout,*) 'CALL trc_wri_medusa -- OK' 
    82       IF (lwp) write (numout,*) ' ' 
    83       CALL flush(numout) 
    84 # endif 
    85       ! 
    86       IF( lk_idtra   )   CALL trc_wri_idtra       ! Idealize tracers 
    87       ! 
    88 # if defined key_debug_medusa 
    89       CALL flush(numout) 
    90       IF (lwp) write (numout,*) '------------------------------' 
    91       IF (lwp) write (numout,*) 'Jpalm - debug' 
    92       IF (lwp) write (numout,*) 'CALL trc_wri_idtra -- OK' 
    93       IF (lwp) write (numout,*) ' ' 
    94       CALL flush(numout) 
    95 # endif 
    9669      ! 
    9770      IF( nn_timing == 1 )  CALL timing_stop('trc_wri') 
Note: See TracChangeset for help on using the changeset viewer.