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 7766 for branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC – NEMO

Ignore:
Timestamp:
2017-03-07T19:30:03+01:00 (7 years ago)
Author:
jpalmier
Message:

JPALM -- adapted MEDUSA_SBC to coupled mode, and merged this branch with RICHARD s fixes_part2 branch

Location:
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC
Files:
2 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/sms_medusa.F90

    r6810 r7766  
    445445      !!---------------------------------------------------------------------- 
    446446      USE lib_mpp , ONLY: ctl_warn 
    447       INTEGER ::   ierr(7)        ! Local variables 
     447      INTEGER ::   ierr(8)        ! Local variables 
    448448      !!---------------------------------------------------------------------- 
    449449      ierr(:) = 0 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r7703 r7766  
    533533      foxy_cons(:,:) = 0.0      !! oxygen consumption 
    534534      foxy_anox(:,:) = 0.0      !! unrealised oxygen consumption 
     535      !! 
    535536# endif 
    536537      ftot_n(:,:)   = 0.0       !! N inventory  
     
    571572      f_riv_c(:,:)   = 0.0      !! riverine C   input  
    572573      f_riv_alk(:,:) = 0.0      !! riverine alk input  
     574      !!  
     575      !! Jpalm -- 06-03-2017 -- Forgotten var to init 
     576      f_omarg(:,:) = 0.0        !! 
     577      f_omcal(:,:) = 0.0  
     578      xFree(:,:) = 0.0          !! state variables for iron-ligand system 
     579      fcomm_resp(:,:) = 0.0  
     580      fprn_ml(:,:) = 0.0        !! mixed layer PP diagnostics 
     581      fprd_ml(:,:) = 0.0        !! mixed layer PP diagnostics 
     582 
    573583      !! 
    574584      !! allocate and initiate 2D diag 
     
    724734         ENDIF      
    725735!! 
    726 !! skip FDT_XXXX, RG_XXXXF, FDS_XXXX, RGSXXXXF diagnostics here 
     736!! skip FDT_XXXX, RG_XXXXF, FDS_XXXX, RGS_XXXXF diagnostics here 
    727737!! 
    728738         IF( med_diag%REMINN%dgsave ) THEN 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcdms_medusa.F90

    r6719 r7766  
    55   !!====================================================================== 
    66   !! History : 
    7    !!  -   !  2014-08  (J. Palmiéri - A. Yool)    added for UKESM1 project 
     7   !!  -   !  2014-08  (J. Palmieri - A. Yool)    added for UKESM1 project 
    88   !!---------------------------------------------------------------------- 
    99#if defined key_medusa && defined key_roam 
     
    4444      !! 
    4545      !! Title  : Calculates DMS ocean surface concentration 
    46       !! Author : Julien Palmiéri and Andrew Yool 
     46      !! Author : Julien Palmieri and Andrew Yool 
    4747      !! Date   : 08/08/14  
    4848      !! 
     
    118118! 
    119119! AXY (13/03/15): Simo & Dachs (2002) 
    120         fq1 = (-1 * log(mld)) + 5.7 
     120        fq1 = (-1.0 * log(mld)) + 5.7 
    121121        fq2 = (55.8 * cmr) + 0.6 
    122122        if (cmr < 0.02) then 
     
    136136!         
    137137! AXY (13/03/15): Halloran et al. (2010) 
    138         fq1 = (-1 * log(mld)) + 5.7 
     138        fq1 = (-1.0 * log(mld)) + 5.7 
    139139        fq2 = (55.8 * cmr) + 0.6 
    140140        fq3 = (90.0 / mld) 
     
    179179 
    180180 
     181 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90

    r7709 r7766  
    8484      &    xburial,                                           & 
    8585      &  jriver_n,jriver_si,jriver_c,jriver_alk,jriver_dep,   & 
    86       &    friver_dep,                                        & 
    8786      &  xsdiss,                                              & 
    88       &  vsed,xhr,                                            & 
    8987      &  sedlam,sedlostpoc,jpkb,jdms,jdms_input,jdms_model 
    9088#if defined key_roam 
    9189      NAMELIST/natroam/ xthetaphy,xthetazoo,xthetanit,        & 
    92       &    xthetarem,xo2min,                                  & 
    93       &    f3_pH,f3_h2co3,f3_hco3,f3_co3,f3_omcal,f3_omarg,   & 
    94       &    f2_ccd_cal,f2_ccd_arg 
     90      &    xthetarem,xo2min  
    9591#endif 
    9692      NAMELIST/natopt/xkg0,xkr0,xkgp,xkrp,xlg,xlr,rpig 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcopt_medusa.F90

    r5841 r7766  
    156156 
    157157      ! Euphotic layer depth 
     158      !! Jpalm -- 06-03-2017 -- add init xze, to avoid halo problems within the 
     159      !!                        writing process 
     160      xze(:,:) = 0.0 
    158161      DO jj = 1, jpj 
    159162         DO ji = 1, jpi 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsed_medusa.F90

    r6844 r7766  
    4141 
    4242   PUBLIC   trc_sed_medusa     ! called in ??? 
    43    PUBLIC   trc_sed_medusa_sbc       
     43   PUBLIC   trc_sed_medusa_sbc      
     44   PUBLIC   trc_sed_medusa_dust  
    4445 
    4546   !! * Module variables 
     
    126127 
    127128      !! AXY (20/11/14): alter this to report on first MEDUSA call 
    128       !! IF( kt == nit000 ) THEN 
    129129      IF( kt == nittrc000 ) THEN 
    130130         IF(lwp) WRITE(numout,*) 
     
    133133    IF(lwp) WRITE(numout,*) ' kt =',kt 
    134134      ENDIF 
    135  
    136       !! AXY (04/11/13): replace this with a call in trc_ini_medusa 
    137       !! AXY (25/02/10) 
    138       !! call routine for populating CCD array if this is the first time-step 
    139       !! IF( kt == nittrc000 ) CALL medusa_ccd( kt ) 
    140  
    141       !! AXY (04/11/13): replace this with a call in trc_ini_medusa 
    142       !! AXY (26/01/12) 
    143       !! call routine for populating river arrays if this is the first time-step 
    144       !! IF( kt == nittrc000 ) CALL medusa_river( kt ) 
    145  
    146       !! AXY (10/02/09) 
    147       !!IF( (jnt == 1) .and. (bdustfer) )  CALL trc_sed_medusa_sbc( kt ) 
    148  
    149       !! JPALM -- 31-03-2016 -- rewrite trc_sed_medusa_sbc. 
    150       !! IF (kt == nittrc000 ) CALL trc_sed_medusa_sbc  
    151  
    152       !! JPALM -- 20-07-2016 -- adapt dust forcing fields reading and conversion 
    153       !!                     To read dust dep in kg-dust/m2/s instead of g-Fe/m2/month  
    154       !!                     So all forcings and coupling dust dep are in the same SI units 
    155       !!                     and then convert in mmol-Fe/m2/day 
    156  
    157       IF( bdustfer ) THEN 
    158         !! IF( kt == nittrc000 .OR. ( kt /= nittrc000 .AND. ntimes_dust > 1 ) ) THEN 
    159             CALL fld_read( kt, 1, sf_dust ) 
    160             dust(:,:) = sf_dust(1)%fnow(:,:,1) 
    161          !! ENDIF 
    162       ELSEIF (lk_oasis) THEN 
    163          dust = Dust_in_cpl 
    164       ELSE 
    165          dust(:,:) = 0.0 
    166       ENDIF 
    167       !! 
    168       zirondep(:,:) = 0.e0     !! Initialisation of deposition variables 
    169       zirondep(:,:) = dust(:,:) * Fe_dust_mratio / xfe_mass * 1.e6 * 86400.  !! mmol-Fe/m2/d 
    170        
    171       !! JPALM -- 20-07-2016 -- Zirondep and zsidep are not used. 
    172       !!                     So comment out the following lines. but keep them 
    173       !!                     as we may want to used them later on 
    174       !!================================================      
    175       !! 
    176       !! zirondep(:,:,:) = 0.e0     !! Initialisation of deposition variables 
    177       !! zsidep  (:,:)   = 0.e0 
    178       !! 
    179       !! Iron and Si deposition at the surface 
    180       !! ------------------------------------- 
    181       !! 
    182       !! DO jj = 1, jpj 
    183       !!    DO ji = 1, jpi 
    184       !!       zirondep(ji,jj,1) = (dustsolub * dust(ji,jj) / (55.85 * rmtss) + 3.e-10 / ryyss) & 
    185       !!       & * rfact2 / fse3t(ji,jj,1) 
    186       !!       zsidep  (ji,jj)   = 8.8 * 0.075 * dust(ji,jj) * rfact2 / & 
    187       !!       & (fse3t(ji,jj,1) * 28.1 * rmtss) 
    188       !!    END DO 
    189       !! END DO 
    190135 
    191136      ! sedimentation of detrital nitrogen : upstream scheme 
     
    412357   END SUBROUTINE trc_sed_medusa_sbc 
    413358 
     359   !! ====================================================================== 
     360   !! ====================================================================== 
     361   !! ====================================================================== 
     362 
     363   !! AXY & JPALM (28/02/17) 
     364 
     365   SUBROUTINE trc_sed_medusa_dust( kt ) 
     366      !!--------------------------------------------------------------------- 
     367      !!                     ***  ROUTINE trc_sed_medusa_dust  *** 
     368      !! 
     369      !! ** Purpose : compute current dust *before* trc_bio_medusa call 
     370      !! 
     371      !! ** Method  : does what it says on the tin 
     372      !!--------------------------------------------------------------------- 
     373      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
     374 
     375      !! AXY (20/11/14): alter this to report on first MEDUSA call 
     376      IF( kt == nittrc000 ) THEN 
     377         IF(lwp) WRITE(numout,*) 
     378         IF(lwp) WRITE(numout,*) ' trc_sed_medusa_dust: MEDUSA dust timestep' 
     379         IF(lwp) WRITE(numout,*) ' ~~~~~~~' 
     380    IF(lwp) WRITE(numout,*) ' kt =',kt 
     381      ENDIF 
     382 
     383      !! AXY (04/11/13): replace this with a call in trc_ini_medusa 
     384      !! AXY (25/02/10) 
     385      !! call routine for populating CCD array if this is the first time-step 
     386      !! IF( kt == nittrc000 ) CALL medusa_ccd( kt ) 
     387 
     388      !! AXY (04/11/13): replace this with a call in trc_ini_medusa 
     389      !! AXY (26/01/12) 
     390      !! call routine for populating river arrays if this is the first time-step 
     391      !! IF( kt == nittrc000 ) CALL medusa_river( kt ) 
     392 
     393      !! AXY (10/02/09) 
     394      !! IF( (jnt == 1) .and. (bdustfer) )  CALL trc_sed_medusa_sbc( kt ) 
     395 
     396      !! JPALM -- 31-03-2016 -- rewrite trc_sed_medusa_sbc. 
     397      !! IF (kt == nittrc000 ) CALL trc_sed_medusa_sbc  
     398 
     399      !! JPALM -- 20-07-2016 -- adapt dust forcing fields reading and conversion 
     400      !!                     To read dust dep in kg-dust/m2/s instead of g-Fe/m2/month  
     401      !!                     So all forcings and coupling dust dep are in the same SI units 
     402      !!                     and then convert in mmol-Fe/m2/day 
     403 
     404      IF( bdustfer ) THEN 
     405            CALL fld_read( kt, 1, sf_dust ) 
     406            dust(:,:) = sf_dust(1)%fnow(:,:,1) 
     407      ELSEIF (lk_oasis) THEN 
     408         dust = Dust_in_cpl 
     409      ELSE 
     410         dust(:,:) = 0.0 
     411      ENDIF 
     412      !! 
     413      zirondep(:,:) = 0.e0     !! Initialisation of deposition variables 
     414      zirondep(:,:) = dust(:,:) * Fe_dust_mratio / xfe_mass * 1.e6 * 86400.  !! mmol-Fe/m2/d 
     415       
     416      !! JPALM -- 20-07-2016 -- Zirondep and zsidep are not used. 
     417      !!                     So comment out the following lines. but keep them 
     418      !!                     as we may want to used them later on 
     419      !!================================================      
     420      !! 
     421      !! zirondep(:,:,:) = 0.e0     !! Initialisation of deposition variables 
     422      !! zsidep  (:,:)   = 0.e0 
     423      !! 
     424      !! Iron and Si deposition at the surface 
     425      !! ------------------------------------- 
     426      !! 
     427      !! DO jj = 1, jpj 
     428      !!    DO ji = 1, jpi 
     429      !!       zirondep(ji,jj,1) = (dustsolub * dust(ji,jj) / (55.85 * rmtss) + 3.e-10 / ryyss) & 
     430      !!       & * rfact2 / fse3t(ji,jj,1) 
     431      !!       zsidep  (ji,jj)   = 8.8 * 0.075 * dust(ji,jj) * rfact2 / & 
     432      !!       & (fse3t(ji,jj,1) * 28.1 * rmtss) 
     433      !!    END DO 
     434      !! END DO 
     435 
     436   END SUBROUTINE trc_sed_medusa_dust 
     437 
    414438#else 
    415439   !!====================================================================== 
     
    425449   !!====================================================================== 
    426450END MODULE  trcsed_medusa 
     451 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsms_medusa.F90

    r5841 r7766  
    5858      ENDIF 
    5959 
    60       CALL trc_avg_medusa( kt )   ! rolling average module 
     60      CALL trc_avg_medusa( kt ) ! rolling average module 
    6161# if defined key_debug_medusa 
    62          IF(lwp) WRITE(numout,*) ' MEDUSA done trc_avg_medusa' 
    63          CALL flush(numout) 
     62      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_avg_medusa' 
     63      CALL flush(numout) 
     64# endif 
     65       
     66      CALL trc_opt_medusa( kt ) ! optical model 
     67# if defined key_debug_medusa 
     68      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_opt_medusa' 
     69      CALL flush(numout) 
    6470# endif 
    6571 
    66       CALL trc_opt_medusa( kt )   ! optical model 
     72      !! AXY & JPALM (28/02/17): call dust before trc_bio_medusa (because of coupling) 
     73      CALL trc_sed_medusa_dust( kt ) ! dust submodel 
    6774# if defined key_debug_medusa 
    68          IF(lwp) WRITE(numout,*) ' MEDUSA done trc_opt_medusa' 
    69          CALL flush(numout) 
     75      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_sed_medusa_dust' 
     76      CALL flush(numout) 
    7077# endif 
    7178 
     
    7582      CALL flush(numout) 
    7683# else 
    77       CALL trc_bio_medusa( kt )   ! biological model 
    78 # if defined key_debug_medusa 
    79          IF(lwp) WRITE(numout,*) ' MEDUSA done trc_bio_medusa' 
    80          CALL flush(numout) 
    81 # endif 
    82  
    83       CALL trc_sed_medusa( kt )   ! sedimentation model 
    84 # if defined key_debug_medusa 
    85          IF(lwp) WRITE(numout,*) ' MEDUSA done trc_sed_medusa' 
    86          CALL flush(numout) 
    87 # endif 
     84      CALL trc_bio_medusa( kt ) ! biological model 
     85#  if defined key_debug_medusa 
     86      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_bio_medusa' 
     87      CALL flush(numout) 
     88#  endif 
     89       
     90      CALL trc_sed_medusa( kt ) ! sedimentation model 
     91#  if defined key_debug_medusa 
     92      IF(lwp) WRITE(numout,*) ' MEDUSA done trc_sed_medusa' 
     93      CALL flush(numout) 
     94#  endif 
    8895# endif 
    8996 
     
    103110   !!====================================================================== 
    104111END MODULE trcsms_medusa 
     112 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcrst.F90

    r7498 r7766  
    686686      !!---------------------------------------------------------------------- 
    687687      INTEGER  :: jk, jn 
    688       REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift 
     688      REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift, areasf 
    689689      REAL(wp), DIMENSION(jpi,jpj) :: zvol 
    690690      !!---------------------------------------------------------------------- 
     
    696696      ENDIF 
    697697      ! 
    698          zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1) 
     698      zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1) 
     699      areasf = glob_sum(zvol(:,:)) 
    699700      DO jn = 1, jptra 
    700701         ztraf = glob_sum( tra(:,:,1,jn) * zvol(:,:) ) 
     
    705706            CALL mpp_max( zmax )      ! max over the global domain 
    706707         END IF 
    707          zmean  = ztraf / areatot 
     708         zmean  = ztraf / areasf 
    708709         IF(lwp) WRITE(numout,9001) jn, TRIM( ctrcnm(jn) ), zmean, zmin, zmax 
    709710      END DO 
     
    734735      zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1) 
    735736      ztraf = glob_sum( dgtr(:,:) * zvol(:,:) ) 
    736       areasf = glob_sum(e1e2t(:,:) * tmask(:,:,1) ) 
     737      !! areasf = glob_sum(e1e2t(:,:) * tmask(:,:,1) ) 
     738      areasf = glob_sum(zvol(:,:)) 
    737739      zmin  = MINVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) ) 
    738740      zmax  = MAXVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) ) 
     
    741743         CALL mpp_max( zmax )      ! max over the global domain 
    742744      END IF 
    743       zmean  = ztraf / areatot 
     745      zmean  = ztraf / areasf 
    744746      IF(lwp) WRITE(numout,9002) TRIM( names ), zmean, zmin, zmax 
    745747      ! 
  • branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r7709 r7766  
    146146            ztrai = ztrai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:)   ) 
    147147         END DO 
    148          IF( lwp ) WRITE(numstr,9300) kt,  ztrai / areatot 
     148         IF( numstr /= -1 ) WRITE(numstr,9300) kt,  ztrai / areatot 
    1491499300     FORMAT(i10,e18.10) 
    150150      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.