Changeset 10241


Ignore:
Timestamp:
2018-10-26T18:02:18+02:00 (19 months ago)
Author:
dford
Message:

Add visibility diagnostic (can't currently be done via fabm.yaml without changing the FABM code).

Location:
branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO
Files:
8 edited

Legend:

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

    r10205 r10241  
    2222   USE diatmb 
    2323#if defined key_fabm 
    24    USE trc, ONLY: trn 
     24   USE trc, ONLY: trn, visib 
    2525   USE par_fabm 
    2626   USE st2d_fabm, ONLY: fabm_st2dn 
     
    5353   REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:)   :: fabm_bottom_25h 
    5454   REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:)   :: fabm_2d_25h 
     55   REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:)   :: fabm_visib_25h 
    5556#endif 
    5657   INTEGER, SAVE :: cnt_25h     ! Counter for 25 hour means 
     
    181182         CALL ctl_stop( 'dia_25h: unable to allocate fabm_2d_25h' )   ;   RETURN 
    182183      ENDIF 
     184      ALLOCATE( fabm_visib_25h(jpi,jpj,jpk), STAT=ierror ) 
     185      IF( ierror > 0 ) THEN 
     186         CALL ctl_stop( 'dia_25h: unable to allocate fabm_visib_25h' )   ;   RETURN 
     187      ENDIF 
    183188#endif  
    184189      ! ------------------------- ! 
     
    222227         fabm_2d_25h(:,:,jn) = fabm_get_horizontal_diagnostic_data(model,jn) 
    223228      END DO 
     229      fabm_visib_25h(:,:,:) = visib(:,:,:) 
    224230#endif 
    225231#if defined key_lim3 || defined key_lim2 
     
    338344         fabm_2d_25h(:,:,jn) = fabm_2d_25h(:,:,jn) + fabm_get_horizontal_diagnostic_data(model,jn) 
    339345      END DO 
     346      fabm_visib_25h(:,:,:) = fabm_visib_25h(:,:,:) + visib(:,:,:) 
    340347#endif 
    341348         cnt_25h = cnt_25h + 1 
     
    378385            fabm_bottom_25h(:,:,:)  = fabm_bottom_25h(:,:,:)  / 25.0_wp 
    379386            fabm_2d_25h(:,:,:)      = fabm_2d_25h(:,:,:)      / 25.0_wp 
     387            fabm_visib_25h(:,:,:)   = fabm_visib_25h(:,:,:)   / 25.0_wp 
    380388#endif 
    381389 
     
    419427               CALL iom_put( TRIM(model%horizontal_diagnostic_variables(jn)%name)//"25h", zw2d  ) 
    420428            END DO 
     429            zw3d(:,:,:) = fabm_visib_25h(:,:,:)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     430            CALL iom_put( "visib25h", zw3d  ) 
    421431#endif 
    422432 
     
    479489         fabm_2d_25h(:,:,jn) = fabm_get_horizontal_diagnostic_data(model,jn) 
    480490      END DO 
     491      fabm_visib_25h(:,:,:) = visib(:,:,:) 
    481492#endif 
    482493            cnt_25h = 1 
  • branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO/OPA_SRC/DIA/diaopfoam.F90

    r8561 r10241  
    109109         CALL iom_put( "voce_op"   , vn                                    )    ! j-current 
    110110         !CALL iom_put( "woce_op"   , wn                                    )    ! k-current 
    111 #if defined key_spm 
    112          cltra = TRIM(ctrc3d(5))//"_op" 
    113          zw3d(:,:,:) = trc3d(:,:,:,5)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) ! Visibility 
    114          CALL iom_put( cltra, zw3d  ) 
    115 #endif 
     111!#if defined key_spm 
     112!         cltra = TRIM(ctrc3d(5))//"_op" 
     113!         zw3d(:,:,:) = trc3d(:,:,:,5)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) ! Visibility 
     114!         CALL iom_put( cltra, zw3d  ) 
     115!#endif 
    116116         CALL calc_max_cur(zwu,zwv,zwz,zmdi) 
    117117         CALL iom_put( "maxu" , zwu                                     ) ! max u current 
  • branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90

    r10205 r10241  
    1212   USE wrk_nemo        ! working arrays 
    1313#if defined key_fabm 
    14    USE trc, ONLY: trn 
     14   USE trc, ONLY: trn, visib 
    1515   USE par_fabm 
    1616   USE fabm, ONLY: fabm_get_bulk_diagnostic_data 
     
    182182            CALL iom_put( "bot_"//TRIM(model%diagnostic_variables(jn)%name) , zwtmb(:,:,3) ) 
    183183         END DO 
     184         CALL dia_calctmb( visib(:,:,:), zwtmb ) 
     185         CALL iom_put( "top_visib" , zwtmb(:,:,1) ) 
     186         CALL iom_put( "mid_visib" , zwtmb(:,:,2) ) 
     187         CALL iom_put( "bot_visib" , zwtmb(:,:,3) ) 
    184188#endif 
    185189      ELSE 
  • branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO/TOP_SRC/FABM/par_fabm.F90

    r10205 r10241  
    2828                      jp_fabm_o2o,  jp_fabm_o3c,  & 
    2929                      jp_fabm_o3a,  jp_fabm_o3ph, & 
    30                       jp_fabm_o3pc 
     30                      jp_fabm_o3pc, jp_fabm_xeps 
    3131 
    3232#if defined key_fabm 
  • branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO/TOP_SRC/FABM/trcini_fabm.F90

    r10205 r10241  
    1818   USE trcsms_fabm 
    1919   USE fabm_config,ONLY: fabm_create_model_from_yaml_file 
    20    USE fabm,ONLY: type_external_variable, fabm_initialize_library 
     20   USE fabm,ONLY: type_external_variable, fabm_initialize_library, & 
     21                  fabm_get_bulk_diagnostic_data 
    2122   USE inputs_fabm,ONLY: initialize_inputs,link_inputs, & 
    2223     type_input_variable,type_input_data,type_river_data, & 
     
    108109 
    109110      ! Get indexes for select diagnostic variables 
    110       jp_fabm_o3ph   = fabm_diag_index( 'O3_pH' ) 
    111       jp_fabm_o3pc   = fabm_diag_index( 'O3_pCO2') 
     111      jp_fabm_o3ph = fabm_diag_index( 'O3_pH' ) 
     112      jp_fabm_o3pc = fabm_diag_index( 'O3_pCO2' ) 
     113      jp_fabm_xeps = fabm_diag_index( 'light_xEPS') 
    112114 
    113115      IF (lwp) THEN 
     
    149151            CALL write_25hourm_xml(xml_unit,model%horizontal_diagnostic_variables(jn)) 
    150152         END DO 
     153         WRITE (xml_unit,'(A)') '  <field id="visib" long_name="visibility" unit="m" default_value="-.200E+21" grid_ref="grid_T_3D" />' 
     154         WRITE (xml_unit,'(A)') '  <field id="visib25h" long_name="visibility 25-hour mean" unit="m" default_value="-.200E+21" grid_ref="grid_T_3D" />' 
     155         WRITE (xml_unit,'(A)') '  <field id="top_visib" long_name="Top-level visibility" unit="m" default_value="-.200E+21" grid_ref="grid_T_2D" />' 
     156         WRITE (xml_unit,'(A)') '  <field id="mid_visib" long_name="Middle-level visibility" unit="m" default_value="-.200E+21" grid_ref="grid_T_2D" />' 
     157         WRITE (xml_unit,'(A)') '  <field id="bot_visib" long_name="Bottom-level visibility" unit="m" default_value="-.200E+21" grid_ref="grid_T_2D" />' 
    151158         WRITE (xml_unit,1000) ' </field_group>' 
    152159 
     
    396403#endif 
    397404 
     405      ! Initialise visibility 
     406      visib(:,:,:) = 1.7 / fabm_get_bulk_diagnostic_data(model, jp_fabm_xeps) 
     407 
    398408      ! Log mapping of FABM states: 
    399409      IF (lwp) THEN 
  • branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO/TOP_SRC/FABM/trcsms_fabm.F90

    r10156 r10241  
    3737 
    3838   USE fabm 
     39   USE par_fabm 
    3940 
    4041   IMPLICIT NONE 
     
    118119      CALL trc_bc_read  ( kt )       ! tracers: surface and lateral Boundary Conditions 
    119120      CALL trc_rnf_fabm ( kt ) ! River forcings 
     121       
     122      visib(:,:,:) = 1.7 / fabm_get_bulk_diagnostic_data(model, jp_fabm_xeps) 
    120123 
    121124      IF( l_trdtrc ) THEN      ! Save the trends in the mixed layer 
  • branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO/TOP_SRC/FABM/trcwri_fabm.F90

    r10156 r10241  
    105105             CALL iom_put( model%diagnostic_variables(jn)%name, fabm_get_bulk_diagnostic_data(model,jn)) 
    106106      END DO 
     107      CALL iom_put( 'visib', visib(:,:,:) ) 
    107108 
    108109      ! write 2D diagnostics in the file 
  • branches/UKMO/AMM15_v3_6_STABLE_package_bgc_updates/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r10162 r10241  
    149149   LOGICAL            , PUBLIC                                        ::  ln_diatrc      !: boolean term for additional diagnostic 
    150150   INTEGER            , PUBLIC                                        ::  nn_writedia    !: frequency of additional outputs 
     151#if defined key_fabm 
     152   REAL(wp)           , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  visib          !: visibility 
     153#endif 
    151154 
    152155   !! Biological trends 
     
    253256! FABM <<<+++ 
    254257         &      ln_trc_sbc(jptra)     , ln_trc_cbc(jptra)     , ln_trc_obc(jptra)     ,       & 
     258         &      visib(jpi,jpj,jpk)    ,                                                       & 
    255259#endif 
    256260#if defined key_bdy 
Note: See TracChangeset for help on using the changeset viewer.