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 13575 – NEMO

Changeset 13575


Ignore:
Timestamp:
2020-10-09T12:29:11+02:00 (3 years ago)
Author:
dford
Message:

Update syntax for FABM v1, fix bug getting pH from FABM-ERSEM, and fix ifort compilation error in obs_write. See https://code.metoffice.gov.uk/trac/utils/ticket/366.

Location:
branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS
Files:
2 edited

Legend:

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

    r13393 r13575  
    11291129#elif defined key_fabm 
    11301130      USE par_fabm                 ! FABM parameters 
    1131       USE fabm, ONLY: & 
    1132          & fabm_get_interior_diagnostic_data 
    11331131#endif 
    11341132#if defined key_spm 
     
    13411339#elif defined key_fabm 
    13421340               ! Alkalinity from ERSEM 
    1343                zprofvar(:,:,:,1) = fabm_get_interior_diagnostic_data(model, jp_fabm_o3ta) 
     1341               zprofvar(:,:,:,1) = model%get_interior_diagnostic_data(jp_fabm_o3ta) 
    13441342#else 
    13451343               CALL ctl_stop( ' Trying to run palk observation operator', & 
     
    13561354#elif defined key_fabm 
    13571355               ! pH from ERSEM 
    1358                zprofvar(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_o3ph) 
     1356               zprofvar(:,:,:,1) = model%get_interior_diagnostic_data(jp_fabm_o3ph) 
    13591357#else 
    13601358               CALL ctl_stop( ' Trying to run pph observation operator', & 
     
    16841682                  &           ' but MEDUSA does not explicitly simulate Kd490' ) 
    16851683#elif defined key_fabm 
    1686                ! light_xEPS diagnostic variable 
    1687                fabm_3d(:,:,:) = fabm_get_interior_diagnostic_data(model, jp_fabm_xeps) 
     1684               ! light_Kd_band3 diagnostic variable if using spectral optical model 
     1685               ! light_xEPS diagnostic variable if using standard ERSEM light model 
     1686               IF ( jp_fabm_kd490 /= -1 ) THEN 
     1687                  fabm_3d(:,:,:) = model%get_interior_diagnostic_data(jp_fabm_kd490) 
     1688               ELSEIF ( jp_fabm_xeps /= -1 ) THEN 
     1689                  fabm_3d(:,:,:) = model%get_interior_diagnostic_data(jp_fabm_xeps) 
     1690               ELSE 
     1691                  CALL ctl_stop( ' Trying to run skd490 observation operator', & 
     1692                     &           ' but cannot access Kd490 from ERSEM' ) 
     1693               ENDIF 
    16881694               zsurfvar(:,:,1) = fabm_3d(:,:,1) 
    16891695#else 
     
    17061712#elif defined key_fabm 
    17071713               ! First, get pCO2 from FABM 
    1708                fabm_3d(:,:,:) = fabm_get_interior_diagnostic_data(model, jp_fabm_o3pc) 
     1714               fabm_3d(:,:,:) = model%get_interior_diagnostic_data(jp_fabm_o3pc) 
    17091715               zsurfvar(:,:,1) = fabm_3d(:,:,1) 
    17101716               ! Now, convert pCO2 to fCO2, based on SST in K. This follows the standard methodology of: 
     
    17451751               zsurfvar(:,:,1) = f2_pco2w(:,:) 
    17461752#elif defined key_fabm 
    1747                fabm_3d(:,:,:) = fabm_get_interior_diagnostic_data(model, jp_fabm_o3pc) 
     1753               fabm_3d(:,:,:) = model%get_interior_diagnostic_data(jp_fabm_o3pc) 
    17481754               zsurfvar(:,:,1) = fabm_3d(:,:,1) 
    17491755#else 
  • branches/UKMO/dev_r5518_obs_oper_update/NEMOGCM/NEMO/OPA_SRC/OBS/obs_write.F90

    r13393 r13575  
    349349                  fbdata%ivlqc(ik,jo,jvar) = IBSET(profdata%var(jvar)%nvqc(jk),2) 
    350350                  fbdata%ivlqcf(1,ik,jo,jvar) = profdata%var(jvar)%nvqcf(1,jk) 
    351                   fbdata%ivlqcf(2,ik,jo,jvar) = IAND(profdata%var(jvar)%nvqc(jk),b'0000 0000 1111 1111') 
     351                  fbdata%ivlqcf(2,ik,jo,jvar) = IAND(profdata%var(jvar)%nvqc(jk),b'0000000011111111') 
    352352               ELSE 
    353353                  fbdata%ivlqc(ik,jo,jvar) = profdata%var(jvar)%nvqc(jk) 
     
    743743            fbdata%ioqc(jo)    = 4 
    744744            fbdata%ioqcf(1,jo) = 0 
    745             fbdata%ioqcf(2,jo) = IAND(surfdata%nqc(jo),b'0000 0000 1111 1111') 
     745            fbdata%ioqcf(2,jo) = IAND(surfdata%nqc(jo),b'0000000011111111') 
    746746         ELSE 
    747747            fbdata%ioqc(jo)    = surfdata%nqc(jo) 
     
    784784               fbdata%ivlqc(1,jo,jv)    = 4 
    785785               fbdata%ivlqcf(1,1,jo,jv) = 0 
    786                fbdata%ivlqcf(2,1,jo,jv) = IAND(surfdata%nqc(jo),b'0000 0000 1111 1111') 
     786               fbdata%ivlqcf(2,1,jo,jv) = IAND(surfdata%nqc(jo),b'0000000011111111') 
    787787            ELSE 
    788788               fbdata%ivqc(jo,jv)       = surfdata%nqc(jo) 
Note: See TracChangeset for help on using the changeset viewer.