Ignore:
Timestamp:
2016-11-17T17:16:37+01:00 (4 years ago)
Author:
jpalmier
Message:

JPALM — 17-11-2016 — CMIP6 diags for MEDUSA bugfix

File:
1 edited

Legend:

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

    r7227 r7254  
    389389      REAL(wp), POINTER, DIMENSION(:,:,:) :: expc3, expn3 
    390390      REAL(wp), POINTER, DIMENSION(:,:,:) :: fediss3, fescav3 
    391       REAL(wp), POINTER, DIMENSION(:,:,:) :: migrazp3, migrazd3, megrazp3, migrazd3, migrazz3 
     391      REAL(wp), POINTER, DIMENSION(:,:,:) :: migrazp3, migrazd3, megrazp3, megrazd3, megrazz3 
    392392      REAL(wp), POINTER, DIMENSION(:,:,:) :: o2sat3, pbsi3, pcal3, remoc3 
    393393      REAL(wp), POINTER, DIMENSION(:,:,:) :: pnlimj3, pnlimn3, pnlimfe3, pdlimj3, pdlimn3, pdlimfe3, pdlimsi3 
     
    739739!! skip SEAFLRXX, MED_XXXX, INTFLX_XX, INT_XX, ML_XXX, OCAL_XXX, FE_XXXX, MED_XZE, WIND diagnostics here 
    740740!! 
     741         IF( med_diag%RR_0100%dgsave ) THEN 
     742            CALL wrk_alloc( jpi, jpj,    ffastca2d   ) 
     743            ffastca2d(:,:)      = 0.0 !! 
     744         ENDIF 
     745 
    741746         IF( med_diag%ATM_PCO2%dgsave ) THEN 
    742747            CALL wrk_alloc( jpi, jpj,    f_pco2a2d   ) 
     
    9951000          !!  
    9961001          !! AXY (10/11/16): CMIP6 diagnostics, 2D 
    997           IF( med_diag%FGCO2%dgsave ) THEN 
     1002          !! JPALM -- 17-11-16 -- put fgco2 alloc out of diag request 
     1003          !!                   needed for coupling/passed through restart 
     1004          !! IF( med_diag%FGCO2%dgsave ) THEN 
    9981005             CALL wrk_alloc( jpi, jpj,   fgco2    ) 
    9991006             fgco2(:,:)      = 0.0 !! 
    1000           ENDIF 
     1007          !! ENDIF 
    10011008          IF( med_diag%INTDISSIC%dgsave ) THEN 
    10021009             CALL wrk_alloc( jpi, jpj,   intdissic    ) 
     
    18051812                  !! 
    18061813                  !! store 2D outputs 
     1814                  !! 
     1815                  !! JPALM -- 17-11-16 -- put fgco2 out of diag request 
     1816                  !!                    is needed for coupling; pass through restart 
     1817                  !! IF( med_diag%FGCO2%dgsave ) THEN 
     1818                     !! convert from  mol/m2/day to kg/m2/s 
     1819                     fgco2(ji,jj) = f_co2flux * fthk * CO2flux_conv  !! mmol-C/m3/d -> kg-CO2/m2/s 
     1820                  !! ENDIF 
    18071821                  IF ( lk_iomput ) THEN 
    18081822                      IF( med_diag%ATM_PCO2%dgsave ) THEN 
     
    18141828                      IF( med_diag%CO2FLUX%dgsave ) THEN 
    18151829                         f_co2flux2d(ji,jj) = f_co2flux * fthk           !! mmol/m3/d -> mmol/m2/d 
    1816                       ENDIF 
    1817                       !! AXY (10/11/16): CMIP6 equivalent 
    1818                       IF( med_diag%FGCO2%dgsave ) THEN 
    1819                          !! convert from  mol/m2/day to kg/m2/s 
    1820                          fgco2(ji,jj) = f_co2flux * fthk * CO2flux_conv  !! mmol-C/m3/d -> kg-CO2/m2/s 
    18211830                      ENDIF 
    18221831                      IF( med_diag%TCO2%dgsave ) THEN 
     
    18451854               !! AXY (11/11/16): CMIP6 oxygen saturation 3D diagnostic 
    18461855               IF ( med_diag%O2SAT3%dgsave ) THEN 
    1847                   oxy_sato( ztmp, zsal, f_o2sat3 ) 
     1856                  call oxy_sato( ztmp, zsal, f_o2sat3 ) 
    18481857                  o2sat3(ji, jj, jk) = f_o2sat3 
    18491858               ENDIF 
     
    46964705                     !!                 both outputs the CO2 flux in specified units and 
    46974706                     !!                 sends the resulting field to the coupler 
     4707                     !! JPALM (17/11/16): put CO2 flux (fgco2) alloc/unalloc/pass to zn  
     4708                     !!                 out of diag list request  
     4709                     CALL lbc_lnk( fgco2(:,:),'T',1. ) 
    46984710                     IF( med_diag%FGCO2%dgsave ) THEN 
    4699                          CALL lbc_lnk( fgco2(:,:),'T',1. ) 
    47004711                         CALL iom_put( "FGCO2"  , fgco2 ) 
    4701                          zb_co2_flx = zn_co2_flx 
    4702                          zn_co2_flx = fgco2 
    4703                          IF (lk_oasis) THEN 
    4704                             CO2Flux_out_cpl = zn_co2_flx 
    4705                          ENDIF 
    4706                          CALL wrk_dealloc( jpi, jpj,   fgco2   ) 
    4707                      ENDIF 
     4712                     ENDIF 
     4713                     !! JPALM (17/11/16): should mv this fgco2 part  
     4714                     !!                   out of lk_iomput loop 
     4715                     zb_co2_flx = zn_co2_flx 
     4716                     zn_co2_flx = fgco2 
     4717                     IF (lk_oasis) THEN 
     4718                        CO2Flux_out_cpl = zn_co2_flx 
     4719                     ENDIF 
     4720                     CALL wrk_dealloc( jpi, jpj,   fgco2   ) 
     4721                     !! --- 
    47084722                     IF( med_diag%OM_CAL%dgsave ) THEN 
    47094723                         CALL iom_put( "OM_CAL"  , f_omcal ) 
     
    47144728                     IF( med_diag%TCO2%dgsave ) THEN 
    47154729                         CALL iom_put( "TCO2"  , f_TDIC2d ) 
    4716                           CALL wrk_dealloc( jpi, jpj,   f_TDIC2d   ) 
     4730                         CALL wrk_dealloc( jpi, jpj,   f_TDIC2d   ) 
    47174731                     ENDIF 
    47184732                     IF( med_diag%TALK%dgsave ) THEN 
    47194733                         CALL iom_put( "TALK"  , f_TALK2d ) 
    4720                           CALL wrk_dealloc( jpi, jpj,    f_TALK2d  ) 
     4734                         CALL wrk_dealloc( jpi, jpj,    f_TALK2d  ) 
    47214735                     ENDIF 
    47224736                     IF( med_diag%KW660%dgsave ) THEN 
    47234737                         CALL iom_put( "KW660"  , f_kw6602d ) 
    4724                           CALL wrk_dealloc( jpi, jpj,   f_kw6602d   ) 
     4738                         CALL wrk_dealloc( jpi, jpj,   f_kw6602d   ) 
    47254739                     ENDIF 
    47264740                     IF( med_diag%ATM_PP0%dgsave ) THEN 
    47274741                         CALL iom_put( "ATM_PP0"  , f_pp02d ) 
    4728                           CALL wrk_dealloc( jpi, jpj,    f_pp02d  ) 
     4742                         CALL wrk_dealloc( jpi, jpj,    f_pp02d  ) 
    47294743                     ENDIF 
    47304744                     IF( med_diag%O2FLUX%dgsave ) THEN 
    47314745                         CALL iom_put( "O2FLUX"  , f_o2flux2d ) 
    4732                           CALL wrk_dealloc( jpi, jpj,   f_o2flux2d   ) 
     4746                         CALL wrk_dealloc( jpi, jpj,   f_o2flux2d   ) 
    47334747                     ENDIF 
    47344748                     IF( med_diag%O2SAT%dgsave ) THEN 
    47354749                         CALL iom_put( "O2SAT"  , f_o2sat2d ) 
    4736                           CALL wrk_dealloc( jpi, jpj,  f_o2sat2d    ) 
     4750                         CALL wrk_dealloc( jpi, jpj,  f_o2sat2d    ) 
    47374751                     ENDIF 
    47384752                     IF( med_diag%CAL_CCD%dgsave ) THEN 
     
    47554769                       IF( med_diag%DMS_ANDR%dgsave ) THEN 
    47564770                         CALL iom_put( "DMS_ANDR"  , dms_andr2d ) 
    4757                           CALL wrk_dealloc( jpi, jpj,   dms_andr2d   ) 
     4771                         CALL wrk_dealloc( jpi, jpj,   dms_andr2d   ) 
    47584772                       ENDIF 
    47594773                       IF( med_diag%DMS_SIMO%dgsave ) THEN 
    47604774                         CALL iom_put( "DMS_SIMO"  , dms_simo2d ) 
    4761                           CALL wrk_dealloc( jpi, jpj,    dms_simo2d  ) 
     4775                         CALL wrk_dealloc( jpi, jpj,    dms_simo2d  ) 
    47624776                       ENDIF 
    47634777                       IF( med_diag%DMS_ARAN%dgsave ) THEN 
    47644778                         CALL iom_put( "DMS_ARAN"  , dms_aran2d ) 
    4765                           CALL wrk_dealloc( jpi, jpj,   dms_aran2d   ) 
     4779                         CALL wrk_dealloc( jpi, jpj,   dms_aran2d   ) 
    47664780                       ENDIF 
    47674781                       IF( med_diag%DMS_HALL%dgsave ) THEN 
    47684782                         CALL iom_put( "DMS_HALL"  , dms_hall2d ) 
    4769                           CALL wrk_dealloc( jpi, jpj,   dms_hall2d   ) 
     4783                         CALL wrk_dealloc( jpi, jpj,   dms_hall2d   ) 
    47704784                       ENDIF 
    47714785                     ENDIF 
     
    48614875#   endif 
    48624876                     IF( med_diag%SDT__500%dgsave ) THEN 
    4863                          CALL iom_put( "SDT__500"  , fregen2d ) 
     4877                         CALL iom_put( "SDT__500"  , fslownflux ) 
    48644878                     ENDIF 
    48654879                     IF( med_diag%REG__500%dgsave ) THEN 
     
    57565770          IF( med_diag%INTDISSIC%dgsave ) THEN 
    57575771             CALL iom_put( "INTDISSIC"  , intdissic ) 
    5758              CALL wrk_dealloc( jpi, jpj, jpk, intdissic   ) 
     5772             CALL wrk_dealloc( jpi, jpj, intdissic   ) 
    57595773          ENDIF           
    57605774          IF( med_diag%INTDISSIN%dgsave ) THEN 
    57615775             CALL iom_put( "INTDISSIN"  , intdissin ) 
    5762              CALL wrk_dealloc( jpi, jpj, jpk, intdissin   ) 
     5776             CALL wrk_dealloc( jpi, jpj, intdissin   ) 
    57635777          ENDIF           
    57645778          IF( med_diag%INTDISSISI%dgsave ) THEN 
    57655779             CALL iom_put( "INTDISSISI"  , intdissisi ) 
    5766              CALL wrk_dealloc( jpi, jpj, jpk, intdissisi  ) 
     5780             CALL wrk_dealloc( jpi, jpj, intdissisi  ) 
    57675781          ENDIF           
    57685782          IF( med_diag%INTTALK%dgsave ) THEN 
    57695783             CALL iom_put( "INTTALK"  , inttalk ) 
    5770              CALL wrk_dealloc( jpi, jpj, jpk, inttalk     ) 
     5784             CALL wrk_dealloc( jpi, jpj, inttalk     ) 
    57715785          ENDIF           
    57725786          IF( med_diag%O2min%dgsave ) THEN 
    57735787             CALL iom_put( "O2min"  , o2min ) 
    5774              CALL wrk_dealloc( jpi, jpj, jpk, o2min       ) 
     5788             CALL wrk_dealloc( jpi, jpj, o2min       ) 
    57755789          ENDIF           
    57765790          IF( med_diag%ZO2min%dgsave ) THEN 
    57775791             CALL iom_put( "ZO2min"  , zo2min ) 
    5778              CALL wrk_dealloc( jpi, jpj, jpk, zo2min      ) 
     5792             CALL wrk_dealloc( jpi, jpj, zo2min      ) 
    57795793          ENDIF           
    57805794          !! 
Note: See TracChangeset for help on using the changeset viewer.