- Timestamp:
- 2017-05-19T15:32:50+02:00 (7 years ago)
- 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 68 68 jpdia3d = jpdia3d + size(model%diagnostic_variables) 69 69 jpdiabio = jpdiabio + jp_fabm 70 70 71 71 !Initialize input data structures. 72 72 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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 73 123 74 124 IF (lwp) THEN … … 190 240 WRITE (missing_value,'(E9.3)') -2.E20 191 241 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 206 254 207 255 END SUBROUTINE write_trends_xml … … 294 342 END SUBROUTINE trc_ini_fabm 295 343 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 296 413 #else 297 414 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.