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 9285 for branches/NERC/dev_r5518_GO6_CO2_cmip/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90 – NEMO

Ignore:
Timestamp:
2018-01-26T13:27:36+01:00 (6 years ago)
Author:
jpalmier
Message:

JPALM --26-01-2018 -- change MEDUSA atm co2 input method. now reads a file a variable length

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_GO6_CO2_cmip/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r9257 r9285  
    8181                                            gdept_0, gdept_n,               & 
    8282                                            gdepw_0, gdepw_n,               & 
    83                                             nday_year, nsec_day, nyear,     & 
     83                                            nday_year, nsec_day,            & 
     84                                            nyear, nyear_len,               & 
    8485                                            rdt, tmask, mig, mjg, nimpp,    & 
    8586                                            njmpp  
     
    102103      !! JPALM (27-06-2016): add lk_oasis for CO2 and DMS coupling with atm 
    103104      USE sbc_oce,                    ONLY: lk_oasis 
    104       USE sms_medusa,                 ONLY: hist_pco2 
     105      USE sms_medusa,                 ONLY: hist_pco2, co2_yinit, co2_yend 
    105106      USE trc,                        ONLY: ln_rsttr, nittrc000, trn 
    106107      USE bio_medusa_init_mod,        ONLY: bio_medusa_init 
     
    294295      !! 
    295296      !! what's atmospheric pCO2 doing? (data start in 1859) 
    296       iyr1  = nyear - 1859 + 1 
     297      iyr1  = nyear  
    297298      iyr2  = iyr1 + 1 
    298       if (iyr1 .le. 1) then 
    299          !! before 1860 
    300          f_xco2a(:,:) = hist_pco2(1) 
    301       elseif (iyr2 .ge. 242) then 
    302          !! after 2099 
    303          f_xco2a(:,:) = hist_pco2(242) 
     299      if (iyr1 .le. co2_yinit) then 
     300         !! before 1850 
     301         f_xco2a(:,:) = 284.317   
     302      elseif (iyr2 .ge. co2_yend) then 
     303         !! after 2010 
     304         f_xco2a(:,:) = hist_pco2(co2_yend - co2_yinit +1) 
    304305      else 
    305306         !! just right 
     
    307308         fq1 = hist_pco2(iyr2) 
    308309         fq2 = real(nsec_day) / (60.0 * 60.0 * 24.0) 
     310         fq3 = (real(nday_year) - 1.0 + fq2) / real(nyear_len(1)) 
    309311         !! AXY (14/06/12): tweaked to make more sense (and be correct) 
    310 #  if defined key_bs_axy_yrlen 
    311          !! bugfix: for 360d year with HadGEM2-ES forcing 
    312          fq3 = (real(nday_year) - 1.0 + fq2) / 360.0   
    313 #  else 
    314          !! original use of 365 days (not accounting for leap year or  
    315          !! 360d year) 
    316          fq3 = (real(nday_year) - 1.0 + fq2) / 365.0 
    317 #  endif 
     312!!#  if defined key_bs_axy_yrlen 
     313!!         !! bugfix: for 360d year with HadGEM2-ES forcing 
     314!!         fq3 = (real(nday_year) - 1.0 + fq2) / 360.0   
     315!!#  else 
     316!!         !! original use of 365 days (not accounting for leap year or  
     317!!         !! 360d year) 
     318!!         fq3 = (real(nday_year) - 1.0 + fq2) / 365.0 
     319!!#  endif 
    318320         fq4 = (fq0 * (1.0 - fq3)) + (fq1 * fq3) 
    319321         f_xco2a(:,:) = fq4 
     
    322324      !! OCMIP pre-industrial pCO2 
    323325      !! f_xco2a(:,:) = 284.725  !! CMIP5 pre-industrial pCO2 
    324       f_xco2a = 284.317          !! CMIP6 pre-industrial pCO2  
     326      f_xco2a(:,:) = 284.317          !! CMIP6 pre-industrial pCO2  
    325327#  endif 
    326       !! IF(lwp) WRITE(numout,*) ' MEDUSA nyear     =', nyear 
    327       !! IF(lwp) WRITE(numout,*) ' MEDUSA nsec_day  =', real(nsec_day) 
    328       !! IF(lwp) WRITE(numout,*) ' MEDUSA nday_year =', real(nday_year) 
     328       IF(lwp) WRITE(numout,*) ' MEDUSA nyear     =', nyear 
     329       IF(lwp) WRITE(numout,*) ' MEDUSA nyear     =', real(nyear_len(1)) 
     330       IF(lwp) WRITE(numout,*) ' MEDUSA nsec_day  =', real(nsec_day) 
     331       IF(lwp) WRITE(numout,*) ' MEDUSA nday_year =', real(nday_year) 
    329332      !! AXY (29/01/14): remove surplus diagnostics 
    330       !! IF(lwp) WRITE(numout,*) ' MEDUSA fq0       =', fq0 
    331       !! IF(lwp) WRITE(numout,*) ' MEDUSA fq1       =', fq1 
    332       !! IF(lwp) WRITE(numout,*) ' MEDUSA fq2       =', fq2 
    333       !! IF(lwp) WRITE(numout,*) ' MEDUSA fq3       =', fq3 
    334       IF(lwp) WRITE(numout,*) ' MEDUSA atm pCO2  =', f_xco2a(1,1) 
     333      IF(lwp) WRITE(numout,*) ' MEDUSA fq0       =', fq0 
     334      IF(lwp) WRITE(numout,*) ' MEDUSA fq1       =', fq1 
     335      IF(lwp) WRITE(numout,*) ' MEDUSA fq2       =', fq2 
     336      IF(lwp) WRITE(numout,*) ' MEDUSA fq3       =', fq3 
     337       IF(lwp) WRITE(numout,*) ' MEDUSA atm pCO2  =', f_xco2a(1,1) 
    335338# endif 
    336339 
Note: See TracChangeset for help on using the changeset viewer.