Changeset 10729


Ignore:
Timestamp:
2019-02-28T13:16:49+01:00 (17 months ago)
Author:
dford
Message:

Minor bug fixes to using observation operator with FABM-ERSEM. See https://code.metoffice.gov.uk/trac/utils/ticket/174.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r10388 r10729  
    908908      USE par_fabm                 ! FABM parameters 
    909909      USE fabm, ONLY: & 
    910          & fabm_get_bulk_diagnostic_data 
     910         & fabm_get_interior_diagnostic_data 
    911911#endif 
    912912#if defined key_spm 
     
    996996#elif defined key_fabm 
    997997               ! Add all chlorophyll groups from ERSEM 
    998                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_chl1) + trn(:,:,:,jp_fabm_chl2) + & 
    999                   &                trn(:,:,:,jp_fabm_chl3) + trn(:,:,:,jp_fabm_chl4) 
     998               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_chl1) + trn(:,:,:,jp_fabm_m1+jp_fabm_chl2) + & 
     999                  &                trn(:,:,:,jp_fabm_m1+jp_fabm_chl3) + trn(:,:,:,jp_fabm_m1+jp_fabm_chl4) 
    10001000#else 
    10011001               CALL ctl_stop( ' Trying to run plchltot observation operator', & 
     
    10341034#elif defined key_fabm 
    10351035               ! Add all chlorophyll groups from ERSEM 
    1036                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_chl1) + trn(:,:,:,jp_fabm_chl2) + & 
    1037                   &                trn(:,:,:,jp_fabm_chl3) + trn(:,:,:,jp_fabm_chl4) 
     1036               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_chl1) + trn(:,:,:,jp_fabm_m1+jp_fabm_chl2) + & 
     1037                  &                trn(:,:,:,jp_fabm_m1+jp_fabm_chl3) + trn(:,:,:,jp_fabm_m1+jp_fabm_chl4) 
    10381038#else 
    10391039               CALL ctl_stop( ' Trying to run pchltot observation operator', & 
     
    10501050#elif defined key_fabm 
    10511051               ! Nitrate from ERSEM 
    1052                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_n3n) 
     1052               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_n3n) 
    10531053#else 
    10541054               CALL ctl_stop( ' Trying to run pno3 observation operator', & 
     
    10651065#elif defined key_fabm 
    10661066               ! Silicate from ERSEM 
    1067                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_n5s) 
     1067               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_n5s) 
    10681068#else 
    10691069               CALL ctl_stop( ' Trying to run psi4 observation operator', & 
     
    10801080#elif defined key_fabm 
    10811081               ! Phosphate from ERSEM 
    1082                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_n1p) 
     1082               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_n1p) 
    10831083#else 
    10841084               CALL ctl_stop( ' Trying to run ppo4 observation operator', & 
     
    10951095#elif defined key_fabm 
    10961096               ! Dissolved inorganic carbon from ERSEM 
    1097                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_o3c) 
     1097               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_o3c) 
    10981098#else 
    10991099               CALL ctl_stop( ' Trying to run pdic observation operator', & 
     
    11101110#elif defined key_fabm 
    11111111               ! Alkalinity from ERSEM 
    1112                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_o3a) 
     1112               zprofvar(:,:,:,1) = fabm_get_interior_diagnostic_data(model, jp_fabm_o3ta) 
    11131113#else 
    11141114               CALL ctl_stop( ' Trying to run palk observation operator', & 
     
    11251125#elif defined key_fabm 
    11261126               ! pH from ERSEM 
    1127                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_o3ph) 
     1127               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_o3ph) 
    11281128#else 
    11291129               CALL ctl_stop( ' Trying to run pph observation operator', & 
     
    11401140#elif defined key_fabm 
    11411141               ! Oxygen from ERSEM 
    1142                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_o2o) 
     1142               zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_o2o) 
    11431143#else 
    11441144               CALL ctl_stop( ' Trying to run po2 observation operator', & 
     
    11761176         CALL wrk_alloc( jpi, jpj, zsurfvar ) 
    11771177         CALL wrk_alloc( jpi, jpj, zsurfmask ) 
     1178#if defined key_fabm 
     1179         CALL wrk_alloc( jpi, jpj, jpk, pco2_3d ) 
     1180#endif 
    11781181 
    11791182         DO jtype = 1, nsurftypes 
     
    12211224#elif defined key_fabm 
    12221225               ! Add all surface chlorophyll groups from ERSEM 
    1223                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl1) + trn(:,:,1,jp_fabm_chl2) + & 
    1224                   &            trn(:,:,1,jp_fabm_chl3) + trn(:,:,1,jp_fabm_chl4) 
     1226               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl1) + trn(:,:,1,jp_fabm_m1+jp_fabm_chl2) + & 
     1227                  &            trn(:,:,1,jp_fabm_m1+jp_fabm_chl3) + trn(:,:,1,jp_fabm_m1+jp_fabm_chl4) 
    12251228#else 
    12261229               CALL ctl_stop( ' Trying to run slchltot observation operator', & 
     
    12381241#elif defined key_fabm 
    12391242               ! Diatom surface chlorophyll from ERSEM 
    1240                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl1) 
     1243               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl1) 
    12411244#else 
    12421245               CALL ctl_stop( ' Trying to run slchldia observation operator', & 
     
    12541257#elif defined key_fabm 
    12551258               ! Add all non-diatom surface chlorophyll groups from ERSEM 
    1256                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl2) + & 
    1257                   &            trn(:,:,1,jp_fabm_chl3) + trn(:,:,1,jp_fabm_chl4) 
     1259               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl2) + & 
     1260                  &            trn(:,:,1,jp_fabm_m1+jp_fabm_chl3) + trn(:,:,1,jp_fabm_m1+jp_fabm_chl4) 
    12581261#else 
    12591262               CALL ctl_stop( ' Trying to run slchlnon observation operator', & 
     
    12711274#elif defined key_fabm 
    12721275               ! Dinoflagellate surface chlorophyll from ERSEM 
    1273                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl4) 
     1276               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl4) 
    12741277#else 
    12751278               CALL ctl_stop( ' Trying to run slchldin observation operator', & 
     
    12871290#elif defined key_fabm 
    12881291               ! Add diatom and dinoflagellate surface chlorophyll from ERSEM 
    1289                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl1) + trn(:,:,1,jp_fabm_chl4) 
     1292               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl1) + trn(:,:,1,jp_fabm_m1+jp_fabm_chl4) 
    12901293#else 
    12911294               CALL ctl_stop( ' Trying to run slchlmic observation operator', & 
     
    13031306#elif defined key_fabm 
    13041307               ! Nanophytoplankton surface chlorophyll from ERSEM 
    1305                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl2) 
     1308               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl2) 
    13061309#else 
    13071310               CALL ctl_stop( ' Trying to run slchlnan observation operator', & 
     
    13191322#elif defined key_fabm 
    13201323               ! Picophytoplankton surface chlorophyll from ERSEM 
    1321                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl3) 
     1324               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl3) 
    13221325#else 
    13231326               CALL ctl_stop( ' Trying to run slchlpic observation operator', & 
     
    13351338#elif defined key_fabm 
    13361339               ! Add all surface chlorophyll groups from ERSEM 
    1337                zsurfvar(:,:) = trn(:,:,1,jp_fabm_chl1) + trn(:,:,1,jp_fabm_chl2) + & 
    1338                   &            trn(:,:,1,jp_fabm_chl3) + trn(:,:,1,jp_fabm_chl4) 
     1340               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_chl1) + trn(:,:,1,jp_fabm_m1+jp_fabm_chl2) + & 
     1341                  &            trn(:,:,1,jp_fabm_m1+jp_fabm_chl3) + trn(:,:,1,jp_fabm_m1+jp_fabm_chl4) 
    13391342#else 
    13401343               CALL ctl_stop( ' Trying to run schltot observation operator', & 
     
    13521355#elif defined key_fabm 
    13531356               ! Add all surface phytoplankton carbon groups from ERSEM 
    1354                zsurfvar(:,:) = trn(:,:,1,jp_fabm_p1c) + trn(:,:,1,jp_fabm_p2c) + & 
    1355                   &            trn(:,:,1,jp_fabm_p3c) + trn(:,:,1,jp_fabm_p4c) 
     1357               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_p1c) + trn(:,:,1,jp_fabm_m1+jp_fabm_p2c) + & 
     1358                  &            trn(:,:,1,jp_fabm_m1+jp_fabm_p3c) + trn(:,:,1,jp_fabm_m1+jp_fabm_p4c) 
    13561359#else 
    13571360               CALL ctl_stop( ' Trying to run slphytot observation operator', & 
     
    13691372#elif defined key_fabm 
    13701373               ! Diatom surface phytoplankton carbon from ERSEM 
    1371                zsurfvar(:,:) = trn(:,:,1,jp_fabm_p1c) 
     1374               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_p1c) 
    13721375#else 
    13731376               CALL ctl_stop( ' Trying to run slphydia observation operator', & 
     
    13851388#elif defined key_fabm 
    13861389               ! Add all non-diatom surface phytoplankton carbon groups from ERSEM 
    1387                zsurfvar(:,:) = trn(:,:,1,jp_fabm_p2c) + & 
    1388                   &            trn(:,:,1,jp_fabm_p3c) + trn(:,:,1,jp_fabm_p4c) 
     1390               zsurfvar(:,:) = trn(:,:,1,jp_fabm_m1+jp_fabm_p2c) + & 
     1391                  &            trn(:,:,1,jp_fabm_m1+jp_fabm_p3c) + trn(:,:,1,jp_fabm_m1+jp_fabm_p4c) 
    13891392#else 
    13901393               CALL ctl_stop( ' Trying to run slphynon observation operator', & 
     
    14181421#elif defined key_fabm 
    14191422               ! First, get pCO2 from FABM 
    1420                pco2_3d(:,:,:) = fabm_get_bulk_diagnostic_data(model, jp_fabm_o3pc) 
     1423               pco2_3d(:,:,:) = fabm_get_interior_diagnostic_data(model, jp_fabm_o3pc) 
    14211424               zsurfvar(:,:) = pco2_3d(:,:,1) 
    14221425               ! Now, convert pCO2 to fCO2, based on SST in K. This follows the standard methodology of: 
     
    14571460               zsurfvar(:,:) = f2_pco2w(:,:) 
    14581461#elif defined key_fabm 
    1459                pco2_3d(:,:,:) = fabm_get_bulk_diagnostic_data(model, jp_fabm_o3pc) 
     1462               pco2_3d(:,:,:) = fabm_get_interior_diagnostic_data(model, jp_fabm_o3pc) 
    14601463               zsurfvar(:,:) = pco2_3d(:,:,1) 
    14611464#else 
     
    14911494         CALL wrk_dealloc( jpi, jpj, zsurfvar ) 
    14921495         CALL wrk_dealloc( jpi, jpj, zsurfmask ) 
     1496#if defined key_fabm 
     1497         CALL wrk_dealloc( jpi, jpj, jpk, pco2_3d ) 
     1498#endif 
    14931499 
    14941500      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.