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/TOP_SRC/FABM/trcini_fabm.F90 – NEMO

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

Add FABM-related code changes.

Location:
branches/UKMO/CO6_KD490_amm7_oper_fabm/NEMOGCM/NEMO/TOP_SRC/FABM
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/UKMO/CO6_KD490_amm7_oper_fabm/NEMOGCM/NEMO/TOP_SRC/FABM/trcini_fabm.F90

    r7835 r8049  
    6868      jpdia3d = jpdia3d + size(model%diagnostic_variables) 
    6969      jpdiabio = jpdiabio + jp_fabm 
    70        
     70 
    7171      !Initialize input data structures. 
    7272      call initialize_inputs 
     73 
     74      IF(lwp) WRITE(numout,*) 'DAF: jp_fabm, jp_fabm0, jp_fabm1, jp_fabm_m1, jptra = ', jp_fabm, jp_fabm0, jp_fabm1, jp_fabm_m1, jptra 
     75       
     76      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     77      jp_fabm_chl1 = fabm_state_index( 'P1_Chl' ) 
     78      jp_fabm_chl2 = fabm_state_index( 'P2_Chl' ) 
     79      jp_fabm_chl3 = fabm_state_index( 'P3_Chl' ) 
     80      jp_fabm_chl4 = fabm_state_index( 'P4_Chl' ) 
     81      jp_fabm_p1c  = fabm_state_index( 'P1_c' ) 
     82      jp_fabm_p1n  = fabm_state_index( 'P1_n' ) 
     83      jp_fabm_p1p  = fabm_state_index( 'P1_p' ) 
     84      jp_fabm_p1s  = fabm_state_index( 'P1_s' ) 
     85      jp_fabm_p2c  = fabm_state_index( 'P2_c' ) 
     86      jp_fabm_p2n  = fabm_state_index( 'P2_n' ) 
     87      jp_fabm_p2p  = fabm_state_index( 'P2_p' ) 
     88      jp_fabm_p3c  = fabm_state_index( 'P3_c' ) 
     89      jp_fabm_p3n  = fabm_state_index( 'P3_n' ) 
     90      jp_fabm_p3p  = fabm_state_index( 'P3_p' ) 
     91      jp_fabm_p4c  = fabm_state_index( 'P4_c' ) 
     92      jp_fabm_p4n  = fabm_state_index( 'P4_n' ) 
     93      jp_fabm_p4p  = fabm_state_index( 'P4_p' ) 
     94      jp_fabm_z4c  = fabm_state_index( 'Z4_c' ) 
     95      jp_fabm_z5c  = fabm_state_index( 'Z5_c' ) 
     96      jp_fabm_z5n  = fabm_state_index( 'Z5_n' ) 
     97      jp_fabm_z5p  = fabm_state_index( 'Z5_p' ) 
     98      jp_fabm_z6c  = fabm_state_index( 'Z6_c' ) 
     99      jp_fabm_z6n  = fabm_state_index( 'Z6_n' ) 
     100      jp_fabm_z6p  = fabm_state_index( 'Z6_p' ) 
     101      jp_fabm_n1p  = fabm_state_index( 'N1_p' ) 
     102      jp_fabm_n3n  = fabm_state_index( 'N3_n' ) 
     103      jp_fabm_n4n  = fabm_state_index( 'N4_n' ) 
     104      jp_fabm_n5s  = fabm_state_index( 'N5_s' ) 
     105      jp_fabm_o2o  = fabm_state_index( 'O2_o' ) 
     106      !jp_fabm_netp1= fabm_diag_index( 'P1_netP' ) 
     107      !jp_fabm_netp2= fabm_diag_index( 'P2_netP' ) 
     108      !jp_fabm_netp3= fabm_diag_index( 'P3_netP' ) 
     109      !jp_fabm_netp4= fabm_diag_index( 'P4_netP' ) 
     110      !jp_fabm_o3ph = fabm_diag_index( 'ph_reported_on_total_scale' ) 
     111      !jp_fabm_o3pc = fabm_diag_index( 'mole_concentration_of_carbonate_expressed_as_carbon') 
     112      jp_fabm_o3ph = fabm_diag_index( 'O3_pH' ) 
     113      jp_fabm_o3pc = fabm_diag_index( 'O3_pCO2') 
     114      jp_fabmdia_chltot = fabm_diag_index( 'total_chlorophyll_calculator_result' ) 
     115      jp_fabmdia_netpp = fabm_diag_index( 'net_primary_production_result' ) 
     116      jp_fabm_xeps = fabm_diag_index( 'light_xEPS' ) 
     117      jp_fabmdia_phytot = fabm_diag_index( 'total_phytoplankton_result' ) 
     118 
     119      IF(lwp) WRITE(numout,*) 'DAF: jp_fabm_n5s = ', jp_fabm_n5s 
     120 
     121      !jp_fabmdia_chltot = fabm_diag_index( 'total_chlorophyll' ) 
     122      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    73123       
    74124      IF (lwp) THEN 
     
    190240      WRITE (missing_value,'(E9.3)') -2.E20 
    191241      WRITE (string_dimensions,'(I1)') number_dimensions 
    192       SELECT CASE (number_dimensions) 
    193       CASE (3) 
    194         DO i=1,size(trd_tags) 
    195          WRITE (xml_unit,'(A)') '  <field id="'//TRIM(trd_tags(i))//'_'//TRIM(variable%name)//'" long_name="'//TRIM(variable%long_name)//' '//TRIM(trd_tags(i))//' trend" unit="'// & 
    196             &                   TRIM(variable%units)//'/s" default_value="'//TRIM(ADJUSTL(missing_value))//'" grid_ref="grid_T_3D" />' 
    197         END DO 
    198       CASE (-1) 
    199         DO i=1,size(trd_tags) 
    200          WRITE (xml_unit,'(A)') '  <field id="'//TRIM(trd_tags(i))//'_'//TRIM(variable%name)//'" long_name="'//TRIM(variable%long_name)//' '//TRIM(trd_tags(i))//' trend" unit="'// & 
    201             &                   TRIM(variable%units)//'/s" default_value="'//TRIM(ADJUSTL(missing_value))//'" />' 
    202         END DO 
    203       CASE default 
    204          IF(lwp) WRITE(numout,*) ' trc_ini_fabm: Failing to initialise trends of variable '//TRIM(variable%name)//': Output of '//TRIM(ADJUSTL(string_dimensions))//'-dimensional trends not supported!!!' 
    205       END SELECT 
     242      !SELECT CASE (number_dimensions) 
     243      !CASE (3) 
     244      !  DO i=1,size(trd_tags) 
     245      !   WRITE (xml_unit,'(A)') '  <field id="'//TRIM(trd_tags(i))//'_'//TRIM(variable%name)//'" long_name="'//TRIM(variable%long_name)//' '//TRIM(trd_tags(i))//' trend" unit="'//TRIM(variable%units)//'/s" default_value="'//TRIM(ADJUSTL(missing_value))//'" grid_ref="grid_T_3D" />' 
     246      !  END DO 
     247      !CASE (-1) 
     248      !  DO i=1,size(trd_tags) 
     249      !   WRITE (xml_unit,'(A)') '  <field id="'//TRIM(trd_tags(i))//'_'//TRIM(variable%name)//'" long_name="'//TRIM(variable%long_name)//' '//TRIM(trd_tags(i))//' trend" unit="'//TRIM(variable%units)//'/s" default_value="'//TRIM(ADJUSTL(missing_value))//'" />' 
     250      !  END DO 
     251      !CASE default 
     252      !   IF(lwp) WRITE(numout,*) ' trc_ini_fabm: Failing to initialise trends of variable '//TRIM(variable%name)//': Output of '//TRIM(ADJUSTL(string_dimensions))//'-dimensional trends not supported!!!' 
     253      !END SELECT 
    206254 
    207255   END SUBROUTINE write_trends_xml 
     
    294342   END SUBROUTINE trc_ini_fabm 
    295343 
     344   INTEGER FUNCTION fabm_state_index( state_name ) 
     345      !!---------------------------------------------------------------------- 
     346      !!                     ***  fabm_state_index  ***   
     347      !! 
     348      !! ** Purpose :   return index of a given FABM state variable 
     349      !! 
     350      !! ** Method  : - loop through state variables until found 
     351      !!---------------------------------------------------------------------- 
     352       
     353      IMPLICIT NONE 
     354       
     355      CHARACTER(LEN=256), INTENT(IN) :: state_name 
     356       
     357      INTEGER                        :: jn 
     358 
     359      !!---------------------------------------------------------------------- 
     360       
     361      fabm_state_index = -1 
     362      !WRITE(numout,*) 'PETE - STATE VARIABLES' 
     363      DO jn=1,jp_fabm          
     364         !WRITE(numout,*) TRIM(model%state_variables(jn)%name) 
     365         IF (TRIM(model%state_variables(jn)%name) == TRIM(state_name)) THEN 
     366            fabm_state_index = jn 
     367            EXIT 
     368         ENDIF 
     369      END DO 
     370      IF (fabm_state_index == -1) THEN 
     371         CALL ctl_stop( 'Could not find '//TRIM(state_name)//' state variable' ) 
     372      ELSE 
     373         IF (lwp) WRITE(numout,*) 'DAF: Index for '//TRIM(state_name)//' is: ', fabm_state_index 
     374      ENDIF 
     375    
     376   END FUNCTION fabm_state_index 
     377 
     378   INTEGER FUNCTION fabm_diag_index( diag_name ) 
     379      !!---------------------------------------------------------------------- 
     380      !!                     ***  fabm_state_index  ***   
     381      !! 
     382      !! ** Purpose :   return index of a given FABM diagnostic variable 
     383      !! 
     384      !! ** Method  : - loop through diagnostic variables until found 
     385      !!---------------------------------------------------------------------- 
     386       
     387      IMPLICIT NONE 
     388       
     389      CHARACTER(LEN=256), INTENT(IN) :: diag_name 
     390       
     391      INTEGER                        :: jn 
     392 
     393      !!---------------------------------------------------------------------- 
     394       
     395      fabm_diag_index = -1 
     396      !WRITE(numout,*) 'PETE - DIAG VARIABLES' 
     397      DO jn = 1, SIZE(model%diagnostic_variables) 
     398         !WRITE(numout,*) TRIM(model%diagnostic_variables(jn)%name) 
     399         !WRITE(numout,*) TRIM(model%diagnostic_variables(jn)%standard_variable%name) 
     400         IF (TRIM(model%diagnostic_variables(jn)%name) == TRIM(diag_name)) THEN 
     401            fabm_diag_index = jn 
     402            EXIT 
     403         ENDIF 
     404      END DO 
     405      IF (fabm_diag_index == -1) THEN 
     406         CALL ctl_stop( 'Could not find '//TRIM(diag_name)//' diagnostic' ) 
     407      ELSE 
     408         IF (lwp) WRITE(numout,*) 'DAF: Index for '//TRIM(diag_name)//' is: ', fabm_diag_index 
     409      ENDIF 
     410    
     411   END FUNCTION fabm_diag_index 
     412 
    296413#else 
    297414   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.