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 8049 for branches/UKMO/CO6_KD490_amm7_oper_fabm/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90 – NEMO

Ignore:
Timestamp:
2017-05-19T15:32:50+02:00 (7 years ago)
Author:
dford
Message:

Add FABM-related code changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/CO6_KD490_amm7_oper_fabm/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90

    r7590 r8049  
    2121#endif 
    2222   USE diatmb 
     23#if defined key_fabm 
     24   USE trc, ONLY: trn 
     25   USE par_fabm 
     26   USE fabm, ONLY: fabm_get_bulk_diagnostic_data 
     27#endif 
    2328 
    2429   IMPLICIT NONE 
     
    3944#if defined key_zdfgls  
    4045   REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:) ::   rmxln_25h 
     46#endif 
     47#if defined key_fabm 
     48   REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:,:) :: fabm3d_25h 
    4149#endif 
    4250   INTEGER, SAVE :: cnt_25h     ! Counter for 25 hour means 
     
    145153         CALL ctl_stop( 'dia_25h: unable to allocate sshn_25h' )   ;   RETURN 
    146154      ENDIF 
     155#if defined key_fabm 
     156      ALLOCATE( fabm3d_25h(jpi,jpj,jpk,jp_fabmdia_3dout), STAT=ierror ) 
     157      IF( ierror > 0 ) THEN 
     158         CALL ctl_stop( 'dia_tide: unable to allocate fabm3d_25h' )   ;   RETURN 
     159      ENDIF 
     160#endif  
    147161      ! ------------------------- ! 
    148162      ! 2 - Assign Initial Values ! 
     
    169183         rmxln_25h(:,:,:) = mxln(:,:,:) 
    170184#endif 
     185#if defined key_fabm 
     186      fabm3d_25h(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_n1p) 
     187      fabm3d_25h(:,:,:,2) = trn(:,:,:,jp_fabm_m1+jp_fabm_n3n) 
     188      fabm3d_25h(:,:,:,3) = trn(:,:,:,jp_fabm_m1+jp_fabm_n4n) 
     189      fabm3d_25h(:,:,:,4) = trn(:,:,:,jp_fabm_m1+jp_fabm_n5s) 
     190      fabm3d_25h(:,:,:,5) = trn(:,:,:,jp_fabm_m1+jp_fabm_o2o) 
     191      fabm3d_25h(:,:,:,6)= fabm_get_bulk_diagnostic_data(model, jp_fabm_o3ph)  
     192      fabm3d_25h(:,:,:,7)= fabm_get_bulk_diagnostic_data(model, jp_fabm_o3pc) 
     193      fabm3d_25h(:,:,:,8)= fabm_get_bulk_diagnostic_data(model, jp_fabmdia_chltot)  
     194      fabm3d_25h(:,:,:,9)= fabm_get_bulk_diagnostic_data(model, jp_fabmdia_netpp)  
     195      fabm3d_25h(:,:,:,10)= fabm_get_bulk_diagnostic_data(model, jp_fabm_xeps)  
     196      fabm3d_25h(:,:,:,11)= fabm_get_bulk_diagnostic_data(model, jp_fabmdia_phytot)  
     197#endif 
    171198#if defined key_lim3 || defined key_lim2 
    172199         CALL ctl_stop('STOP', 'dia_25h not setup yet to do tidemean ice') 
     
    268295         rmxln_25h(:,:,:)      = rmxln_25h(:,:,:) + mxln(:,:,:) 
    269296#endif 
     297#if defined key_fabm 
     298         fabm3d_25h(:,:,:,1) = fabm3d_25h(:,:,:,1) + trn(:,:,:,jp_fabm_m1+jp_fabm_n1p)   ! phosphate 
     299         fabm3d_25h(:,:,:,2) = fabm3d_25h(:,:,:,2) + trn(:,:,:,jp_fabm_m1+jp_fabm_n3n)   ! nitrate 
     300         fabm3d_25h(:,:,:,3) = fabm3d_25h(:,:,:,3) + trn(:,:,:,jp_fabm_m1+jp_fabm_n4n)   ! ammonium 
     301         fabm3d_25h(:,:,:,4) = fabm3d_25h(:,:,:,4) + trn(:,:,:,jp_fabm_m1+jp_fabm_n5s)   ! silicate 
     302         fabm3d_25h(:,:,:,5) = fabm3d_25h(:,:,:,5) + trn(:,:,:,jp_fabm_m1+jp_fabm_o2o)   ! oxygen 
     303         fabm3d_25h(:,:,:,6)= fabm3d_25h(:,:,:,6) + fabm_get_bulk_diagnostic_data(model, jp_fabm_o3ph) ! pH 
     304         fabm3d_25h(:,:,:,7)= fabm3d_25h(:,:,:,7) + fabm_get_bulk_diagnostic_data(model, jp_fabm_o3pc) ! pCO2 
     305         fabm3d_25h(:,:,:,8)= fabm3d_25h(:,:,:,8) + fabm_get_bulk_diagnostic_data(model, jp_fabmdia_chltot) ! total Chl 
     306         fabm3d_25h(:,:,:,9)= fabm3d_25h(:,:,:,9) + fabm_get_bulk_diagnostic_data(model, jp_fabmdia_netpp) ! netPP 
     307         fabm3d_25h(:,:,:,10)= fabm3d_25h(:,:,:,10) + fabm_get_bulk_diagnostic_data(model, jp_fabm_xeps) ! light attenuation 
     308         fabm3d_25h(:,:,:,11)= fabm3d_25h(:,:,:,11) + fabm_get_bulk_diagnostic_data(model, jp_fabmdia_phytot) ! total phytoplankton 
     309#endif 
    270310         cnt_25h = cnt_25h + 1 
    271311 
     
    300340# if defined key_zdfgls 
    301341            rmxln_25h(:,:,:)       = rmxln_25h(:,:,:) / 25.0_wp 
     342#endif 
     343#if defined key_fabm 
     344            fabm3d_25h(:,:,:,:) = fabm3d_25h(:,:,:,:) / 25.0_wp 
    302345#endif 
    303346 
     
    319362            CALL iom_put( "ssh25h", zw2d )   ! sea surface  
    320363 
     364#if defined key_fabm 
     365            ! Write ERSEM variables 
     366            zw3d(:,:,:) = fabm3d_25h(:,:,:,1)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     367            CALL iom_put( "N1p25h", zw3d  )   ! phosphate 
     368            zw3d(:,:,:) = fabm3d_25h(:,:,:,2)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     369            CALL iom_put( "N3n25h", zw3d  )   ! nitrate 
     370            zw3d(:,:,:) = fabm3d_25h(:,:,:,3)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     371            CALL iom_put( "N4n25h", zw3d  )   ! ammonium 
     372            zw3d(:,:,:) = fabm3d_25h(:,:,:,4)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     373            CALL iom_put( "N5s25h", zw3d  )   ! silicate 
     374            zw3d(:,:,:) = fabm3d_25h(:,:,:,5)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     375            CALL iom_put( "O2o25h", zw3d  )   ! oxygen 
     376            zw3d(:,:,:) = fabm3d_25h(:,:,:,6)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     377            CALL iom_put( "pH25h", zw3d  )   ! pH 
     378            zw3d(:,:,:) = fabm3d_25h(:,:,:,7)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     379            CALL iom_put( "pCO2_25h", zw3d  )   ! pCO2 
     380            zw3d(:,:,:) = fabm3d_25h(:,:,:,8)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     381            CALL iom_put( "CHL25h", zw3d  )   ! total Chl 
     382            zw3d(:,:,:) = fabm3d_25h(:,:,:,9)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     383            CALL iom_put( "netPP25h", zw3d  ) ! netPP 
     384            zw3d(:,:,:) = (1.7/fabm3d_25h(:,:,:,10))*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     385            CALL iom_put( "visib25h", zw3d  ) ! light attenuation convert to visibility 
     386            zw3d(:,:,:) = fabm3d_25h(:,:,:,11)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     387            CALL iom_put( "PhytoC25h", zw3d  )   ! total phytoplankton 
     388#endif 
    321389 
    322390            ! Write velocities (instantaneous) 
     
    362430            rmxln_25h(:,:,:) = mxln(:,:,:) 
    363431#endif 
     432#if defined key_fabm 
     433            fabm3d_25h(:,:,:,1) = trn(:,:,:,jp_fabm_m1+jp_fabm_n1p) 
     434            fabm3d_25h(:,:,:,2) = trn(:,:,:,jp_fabm_m1+jp_fabm_n3n) 
     435            fabm3d_25h(:,:,:,3) = trn(:,:,:,jp_fabm_m1+jp_fabm_n4n) 
     436            fabm3d_25h(:,:,:,4) = trn(:,:,:,jp_fabm_m1+jp_fabm_n5s) 
     437            fabm3d_25h(:,:,:,5) = trn(:,:,:,jp_fabm_m1+jp_fabm_o2o) 
     438            fabm3d_25h(:,:,:,6)= fabm_get_bulk_diagnostic_data(model, jp_fabm_o3ph) 
     439            fabm3d_25h(:,:,:,7)= fabm_get_bulk_diagnostic_data(model, jp_fabm_o3pc)  
     440            fabm3d_25h(:,:,:,8)= fabm_get_bulk_diagnostic_data(model, jp_fabmdia_chltot) 
     441            fabm3d_25h(:,:,:,9)= fabm_get_bulk_diagnostic_data(model, jp_fabmdia_netpp) 
     442            fabm3d_25h(:,:,:,10)= fabm_get_bulk_diagnostic_data(model, jp_fabm_xeps) 
     443            fabm3d_25h(:,:,:,11)= fabm_get_bulk_diagnostic_data(model, jp_fabmdia_phytot) 
     444#endif 
    364445            cnt_25h = 1 
    365446            IF (lwp)  WRITE(numout,*) 'dia_wri_tide : After 25hr mean write, reset sum to current value and cnt_25h to one for overlapping average',cnt_25h 
Note: See TracChangeset for help on using the changeset viewer.