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

Changeset 15508


Ignore:
Timestamp:
2021-11-15T15:32:38+01:00 (6 months ago)
Author:
jcastill
Message:

Corrections for FABM 1.0

Location:
NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO/OPA_SRC/ASM/asmbgc.F90

    r10728 r15508  
    10821082#elif defined key_fabm 
    10831083      totalk_tavg(:,:,:)  = totalk_tavg(:,:,:) + & 
    1084          &                  fabm_get_interior_diagnostic_data(model, jp_fabm_o3ta) / pnumtimes_tavg 
     1084         &                  model%get_interior_diagnostic_data(jp_fabm_o3ta) / pnumtimes_tavg 
    10851085      totalk_tavg(:,:,:)  = totalk_tavg(:,:,:) * tmask(:,:,:) 
    10861086#endif 
     
    11271127         cchl_p_tavg(:,:,:)     = cchl_p(:,:,:) 
    11281128#elif defined key_fabm 
    1129          totalk_tavg(:,:,:)  = fabm_get_interior_diagnostic_data(model, jp_fabm_o3ta) 
     1129         totalk_tavg(:,:,:)  = model%get_interior_diagnostic_data(jp_fabm_o3ta) 
    11301130         totalk_tavg(:,:,:)  = totalk_tavg(:,:,:) * tmask(:,:,:) 
    11311131#endif 
  • NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90

    r10390 r15508  
    2525   USE par_fabm 
    2626   USE st2d_fabm, ONLY: fabm_st2dn 
    27    USE fabm, ONLY: fabm_get_interior_diagnostic_data, & 
    28       &            fabm_get_horizontal_diagnostic_data 
    2927#endif 
    3028 
     
    211209      END DO 
    212210      DO jn = 1, jp_fabm_3d 
    213          fabm_3d_25h(:,:,:,jn) = fabm_get_interior_diagnostic_data(model, jn) 
     211         fabm_3d_25h(:,:,:,jn) = model%get_interior_diagnostic_data(jn) 
    214212      END DO 
    215213      DO jn = 1, jp_fabm_surface 
     
    220218      END DO 
    221219      DO jn = 1, jp_fabm_2d 
    222          fabm_2d_25h(:,:,jn) = fabm_get_horizontal_diagnostic_data(model,jn) 
     220         fabm_2d_25h(:,:,jn) = model%get_horizontal_diagnostic_data(jn) 
    223221      END DO 
    224222#endif 
     
    327325      END DO 
    328326      DO jn = 1, jp_fabm_3d 
    329          fabm_3d_25h(:,:,:,jn) = fabm_3d_25h(:,:,:,jn) + fabm_get_interior_diagnostic_data(model, jn) 
     327         fabm_3d_25h(:,:,:,jn) = fabm_3d_25h(:,:,:,jn) + model%get_interior_diagnostic_data(jn) 
    330328      END DO 
    331329      DO jn = 1, jp_fabm_surface 
     
    336334      END DO 
    337335      DO jn = 1, jp_fabm_2d 
    338          fabm_2d_25h(:,:,jn) = fabm_2d_25h(:,:,jn) + fabm_get_horizontal_diagnostic_data(model,jn) 
     336         fabm_2d_25h(:,:,jn) = fabm_2d_25h(:,:,jn) + model%get_horizontal_diagnostic_data(jn) 
    339337      END DO 
    340338#endif 
     
    401399            DO jn = 1, jp_fabm 
    402400               zw3d(:,:,:) = fabm_25h(:,:,:,jn)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    403                CALL iom_put( TRIM(model%state_variables(jn)%name)//"25h", zw3d  ) 
     401               CALL iom_put( TRIM(model%interior_state_variables(jn)%name)//"25h", zw3d  ) 
    404402            END DO 
    405403            DO jn = 1, jp_fabm_3d 
    406404               zw3d(:,:,:) = fabm_3d_25h(:,:,:,jn)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    407                CALL iom_put( TRIM(model%diagnostic_variables(jn)%name)//"25h", zw3d  ) 
     405               CALL iom_put( TRIM(model%interior_diagnostic_variables(jn)%name)//"25h", zw3d  ) 
    408406            END DO 
    409407            DO jn = 1, jp_fabm_surface 
     
    468466      END DO 
    469467      DO jn = 1, jp_fabm_3d 
    470          fabm_3d_25h(:,:,:,jn) = fabm_get_interior_diagnostic_data(model, jn) 
     468         fabm_3d_25h(:,:,:,jn) = model%get_interior_diagnostic_data(jn) 
    471469      END DO 
    472470      DO jn = 1, jp_fabm_surface 
     
    477475      END DO 
    478476      DO jn = 1, jp_fabm_2d 
    479          fabm_2d_25h(:,:,jn) = fabm_get_horizontal_diagnostic_data(model,jn) 
     477         fabm_2d_25h(:,:,jn) = model%get_horizontal_diagnostic_data(jn) 
    480478      END DO 
    481479#endif 
  • NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90

    r15480 r15508  
    1414   USE trc, ONLY: trn 
    1515   USE par_fabm 
    16    USE fabm, ONLY: fabm_get_interior_diagnostic_data 
    1716#endif 
    1817 
     
    172171         DO jn = 1, jp_fabm 
    173172            CALL dia_calctmb( trn(:,:,:,jp_fabm_m1+jn), zwtmb ) 
    174             CALL iom_put( "top_"//TRIM(model%state_variables(jn)%name) , zwtmb(:,:,1) ) 
    175             CALL iom_put( "mid_"//TRIM(model%state_variables(jn)%name) , zwtmb(:,:,2) ) 
    176             CALL iom_put( "bot_"//TRIM(model%state_variables(jn)%name) , zwtmb(:,:,3) ) 
     173            CALL iom_put( "top_"//TRIM(model%surface_state_variables(jn)%name) , zwtmb(:,:,1) ) 
     174            CALL iom_put( "mid_"//TRIM(model%interior_state_variables(jn)%name) , zwtmb(:,:,2) ) 
     175            CALL iom_put( "bot_"//TRIM(model%bottom_state_variables(jn)%name) , zwtmb(:,:,3) ) 
    177176         END DO 
    178177         DO jn = 1, jp_fabm_3d 
    179             CALL dia_calctmb( fabm_get_interior_diagnostic_data(model, jn), zwtmb ) 
    180             CALL iom_put( "top_"//TRIM(model%diagnostic_variables(jn)%name) , zwtmb(:,:,1) ) 
    181             CALL iom_put( "mid_"//TRIM(model%diagnostic_variables(jn)%name) , zwtmb(:,:,2) ) 
    182             CALL iom_put( "bot_"//TRIM(model%diagnostic_variables(jn)%name) , zwtmb(:,:,3) ) 
     178            CALL dia_calctmb( model%get_interior_diagnostic_data(jn), zwtmb ) 
     179            CALL iom_put( "top_"//TRIM(model%horizontal_diagnostic_variables(jn)%name) , zwtmb(:,:,1) ) 
     180            CALL iom_put( "mid_"//TRIM(model%interior_diagnostic_variables(jn)%name) , zwtmb(:,:,2) ) 
     181            CALL iom_put( "bot_"//TRIM(model%interior_diagnostic_variables(jn)%name) , zwtmb(:,:,3) ) 
    183182         END DO 
    184183#endif 
  • NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO/TOP_SRC/FABM/par_fabm.F90

    r15480 r15508  
    22 
    33#if defined key_fabm 
    4 #  include "fabm_version.h" 
    5 #  if _FABM_API_VERSION_ < 1 
    6 #    error You need FABM 1.0 or later 
    7 #  endif 
     4#include "fabm_version.h" 
     5#if _FABM_API_VERSION_ < 1 
     6#error You need FABM 1.0 or later 
     7#endif 
    88   USE fabm 
    99#endif 
  • NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO/TOP_SRC/FABM/trcini_fabm.F90

    r15480 r15508  
    3333 
    3434#if defined key_git_version 
    35 #  include "gitversion.h90" 
     35#include "gitversion.h90" 
    3636   CHARACTER(len=*),parameter :: git_commit_id = _NEMO_COMMIT_ID_ 
    3737   CHARACTER(len=*),parameter :: git_branch_name = _NEMO_BRANCH_ 
     
    150150            CALL write_trends_xml(xml_unit,model%interior_state_variables(jn)) 
    151151#endif 
    152             CALL write_25hourm_xml(xml_unit,model%state_variables(jn)) 
    153             CALL write_tmb_xml(xml_unit,model%state_variables(jn)) 
     152            CALL write_25hourm_xml(xml_unit,model%interior_state_variables(jn)) 
     153            CALL write_tmb_xml(xml_unit,model%interior_state_variables(jn)) 
    154154         END DO 
    155155         WRITE (xml_unit,1000) ' </field_group>' 
     
    177177         END DO 
    178178         DO jn=1,size(model%interior_state_variables) 
    179             WRITE (xml_unit,'(A)') '  <field id="'//TRIM(model%interior_state_variables(jn)%name)//'_VINT" & 
    180             long_name="depth-integrated '//TRIM(model%interior_state_variables(jn)%long_name)//'" unit="'//TRIM(model%interior_state_variables(jn)%units)//'*m" default_value="0.0" />' 
     179            WRITE (xml_unit,'(A)') '  <field id="'//TRIM(model%interior_state_variables(jn)%name)// & 
     180                      '_VINT"long_name="depth-integrated '//TRIM(model%interior_state_variables(jn)%long_name) & 
     181                      //'" unit="'//TRIM(model%interior_state_variables(jn)%units)//'*m" default_value="0.0" />' 
    181182         END DO 
    182183         DO jn=1,size(model%interior_diagnostic_variables) 
    183             WRITE (xml_unit,'(A)') '  <field id="'//TRIM(model%interior_diagnostic_variables(jn)%name)//'_VINT" & 
    184             long_name="depth-integrated '//TRIM(model%interior_diagnostic_variables(jn)%long_name)//'" unit="'//TRIM(model%interior_diagnostic_variables(jn)%units)//'*m" default_value="0.0" />' 
     184            WRITE (xml_unit,'(A)') '  <field id="'//TRIM(model%interior_diagnostic_variables(jn)%name)// & 
     185                      '_VINT"long_name="depth-integrated '//TRIM(model%interior_diagnostic_variables(jn)%long_name) & 
     186                      //'" unit="'//TRIM(model%interior_diagnostic_variables(jn)%units)//'*m" default_value="0.0" />' 
    185187         END DO 
    186188         WRITE (xml_unit,1000) ' </field_group>' 
     
    253255      INTEGER,INTENT(IN) :: xml_unit 
    254256      INTEGER,INTENT(IN),OPTIONAL :: flag_grid_ref 
    255       CLASS (type_external_variable),INTENT(IN) :: variable 
     257      CLASS (type_fabm_variable),INTENT(IN) :: variable 
    256258 
    257259      CHARACTER(LEN=20) :: missing_value,string_dimensions 
     
    285287   SUBROUTINE write_tmb_xml(xml_unit,variable) 
    286288      INTEGER,INTENT(IN) :: xml_unit 
    287       CLASS (type_external_variable),INTENT(IN) :: variable 
     289      CLASS (type_fabm_variable),INTENT(IN) :: variable 
    288290 
    289291      CHARACTER(LEN=20) :: missing_value 
     
    489491      fabm_state_index = -1 
    490492      DO jn=1,jp_fabm 
    491          IF (TRIM(model%state_variables(jn)%name) == TRIM(state_name)) THEN 
     493         IF (TRIM(model%interior_state_variables(jn)%name) == TRIM(state_name)) THEN 
    492494            fabm_state_index = jn 
    493495            EXIT 
     
    520522       
    521523      fabm_diag_index = -1 
    522       DO jn = 1, SIZE(model%diagnostic_variables) 
    523          IF (TRIM(model%diagnostic_variables(jn)%name) == TRIM(diag_name)) THEN 
     524      DO jn = 1, SIZE(model%interior_diagnostic_variables) 
     525         IF (TRIM(model%interior_diagnostic_variables(jn)%name) == TRIM(diag_name)) THEN 
    524526            fabm_diag_index = jn 
    525527            EXIT 
  • NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO/TOP_SRC/FABM/trcsms_fabm.F90

    r15480 r15508  
    55   !!====================================================================== 
    66   !! History :   1.0  !  2015-04  (PML) Original code 
     7   !! History :   1.1  !  2020-06  (PML) Update to FABM 1.0, improved performance 
    78   !!---------------------------------------------------------------------- 
    89#if defined key_fabm 
     
    3940   !USE fldread         !  time interpolation 
    4041 
    41    USE fabm 
    42  
    4342   IMPLICIT NONE 
    4443 
     
    7473   REAL(wp), PUBLIC, TARGET :: daynumber_in_year 
    7574 
    76    ! state check type 
    77    TYPE type_state 
    78       LOGICAL             :: valid 
    79       LOGICAL             :: repaired 
    80    END TYPE 
    81  
    8275   ! Flag indicating whether model%start has been called (will be done on-demand) 
    8376   LOGICAL, SAVE :: started = .false. 
    84  
    85    TYPE (type_bulk_variable_id),SAVE :: swr_id 
    8677 
    8778   !!---------------------------------------------------------------------- 
     
    172163      INTEGER, INTENT(IN) :: kt 
    173164      INTEGER :: ji,jj,jk,jkmax 
    174       REAL(wp), DIMENSION(jpi,jpj,jpk) :: pgrow_3d, ploss_3d, zmld 
     165      REAL(wp), DIMENSION(jpi,jpj,jpk) :: pgrow_3d, ploss_3d 
     166      REAL(wp), DIMENSION(jpi,jpj)     :: zmld 
    175167       
    176168      IF (kt == nittrc000) THEN 
     
    181173      PHYT_AVG(:,:)  = 0.0 
    182174         
    183       pgrow_3d(:,:,:) = fabm_get_bulk_diagnostic_data(model, jp_fabm_pgrow) 
    184       ploss_3d(:,:,:) = fabm_get_bulk_diagnostic_data(model, jp_fabm_ploss) 
     175      pgrow_3d(:,:,:) = model%get_interior_diagnostic_data(jp_fabm_pgrow) 
     176      ploss_3d(:,:,:) = model%get_interior_diagnostic_data(jp_fabm_ploss) 
    185177       
    186178      SELECT CASE( mld_choice_bgc ) 
     
    317309      ENDIF 
    318310 
    319       ! Compute light extinction 
    320       DO jk=1,jpk 
    321           DO jj=1,jpj 
    322             call fabm_get_light_extinction(model,1,jpi,jj,jk,ext) 
    323          END DO 
    324       END DO 
    325  
    326       ! Compute light field (stored among FABM's internal diagnostics) 
    327       DO jj=1,jpj 
    328           DO ji=1,jpi 
    329             call fabm_get_light(model,1,jpk,ji,jj) 
    330          END DO 
    331       END DO 
     311! Remove because get_light routines were removed in FABM 1.0 
     312! and replaced by prepare_inputs 
     313!      ! Compute light extinction 
     314!      DO jk=1,jpk 
     315!          DO jj=1,jpj 
     316!            call get_light_extinction(model,1,jpi,jj,jk,ext) 
     317!         END DO 
     318!      END DO 
     319!  
     320!      ! Compute light field (stored among FABM's internal diagnostics) 
     321!      DO jj=1,jpj 
     322!          DO ji=1,jpi 
     323!            call get_light(model,1,jpk,ji,jj) 
     324!         END DO 
     325!      END DO 
    332326 
    333327      ! TODO: retrieve 3D shortwave and store in etot3 
     
    350344         ! Process surface (get_surface_sources increments rather than sets, so zero flux array first) 
    351345         flux = 0._wp 
    352          CALL fabm_do_surface(model,1,jpi,jj,flux,fabm_st2Da(:,jj,1:jp_fabm_surface)) 
     346         CALL model%get_surface_sources(fs_2,fs_jpim1,jj,flux,fabm_st2Da(fs_2:fs_jpim1,jj,1:jp_fabm_surface)) 
     347         ! Divide surface fluxes by height of surface layer and add to source terms. 
    353348         DO jn=1,jp_fabm 
    354349            DO ji=fs_2,fs_jpim1 
  • NEMO/branches/UKMO/AMM15_v3_6_STABLE_new_ersem/NEMOGCM/NEMO/TOP_SRC/FABM/trcwri_fabm.F90

    r15480 r15508  
    112112      ! write 3D diagnostics in the file 
    113113      ! --------------------------------------- 
    114       DO jn = 1, size(model%diagnostic_variables) 
    115          IF (model%diagnostic_variables(jn)%save) & 
    116              CALL iom_put( model%diagnostic_variables(jn)%name, fabm_get_bulk_diagnostic_data(model,jn)) 
     114      DO jn = 1, size(model%interior_diagnostic_variables) 
     115         IF (model%interior_diagnostic_variables(jn)%save) & 
     116             CALL iom_put( model%interior_diagnostic_variables(jn)%name, model%get_interior_diagnostic_data(jn)) 
    117117      END DO 
    118118 
     
    121121      DO jn = 1, size(model%horizontal_diagnostic_variables) 
    122122         IF (model%horizontal_diagnostic_variables(jn)%save) & 
    123              CALL iom_put( model%horizontal_diagnostic_variables(jn)%name, fabm_get_horizontal_diagnostic_data(model,jn)) 
     123             CALL iom_put( model%horizontal_diagnostic_variables(jn)%name, model%get_horizontal_diagnostic_data(jn)) 
    124124      END DO 
    125125      ! 
Note: See TracChangeset for help on using the changeset viewer.