Changeset 13451


Ignore:
Timestamp:
2020-09-07T18:50:53+02:00 (5 months ago)
Author:
dford
Message:

Modifications to accommodate interaction between NEMO-FABM coupler only saving diagnostics requested in iodef.xml, and the assimilation and 25h/tmb diagnostic code.

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

Legend:

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

    r13241 r13451  
    209209      END DO 
    210210      DO jn = 1, jp_fabm_3d 
    211          fabm_3d_25h(:,:,:,jn) = model%get_interior_diagnostic_data(jn) 
     211         IF (iom_use(TRIM(model%interior_diagnostic_variables(jn)%name)//'25h')) THEN 
     212            fabm_3d_25h(:,:,:,jn) = model%get_interior_diagnostic_data(jn) 
     213         ENDIF 
    212214      END DO 
    213215      DO jn = 1, jp_fabm_surface 
     
    218220      END DO 
    219221      DO jn = 1, jp_fabm_2d 
    220          fabm_2d_25h(:,:,jn) = model%get_horizontal_diagnostic_data(jn) 
     222         IF (iom_use(TRIM(model%horizontal_diagnostic_variables(jn)%name)//'25h')) THEN 
     223            fabm_2d_25h(:,:,jn) = model%get_horizontal_diagnostic_data(jn) 
     224         ENDIF 
    221225      END DO 
    222226#endif 
     
    325329      END DO 
    326330      DO jn = 1, jp_fabm_3d 
    327          fabm_3d_25h(:,:,:,jn) = fabm_3d_25h(:,:,:,jn) + model%get_interior_diagnostic_data(jn) 
     331         IF (iom_use(TRIM(model%interior_diagnostic_variables(jn)%name)//'25h')) THEN 
     332            fabm_3d_25h(:,:,:,jn) = fabm_3d_25h(:,:,:,jn) + model%get_interior_diagnostic_data(jn) 
     333         ENDIF 
    328334      END DO 
    329335      DO jn = 1, jp_fabm_surface 
     
    334340      END DO 
    335341      DO jn = 1, jp_fabm_2d 
    336          fabm_2d_25h(:,:,jn) = fabm_2d_25h(:,:,jn) + model%get_horizontal_diagnostic_data(jn) 
     342         IF (iom_use(TRIM(model%horizontal_diagnostic_variables(jn)%name)//'25h')) THEN 
     343            fabm_2d_25h(:,:,jn) = fabm_2d_25h(:,:,jn) + model%get_horizontal_diagnostic_data(jn) 
     344         ENDIF 
    337345      END DO 
    338346#endif 
     
    402410            END DO 
    403411            DO jn = 1, jp_fabm_3d 
    404                zw3d(:,:,:) = fabm_3d_25h(:,:,:,jn)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
    405                CALL iom_put( TRIM(model%interior_diagnostic_variables(jn)%name)//"25h", zw3d  ) 
     412               IF (iom_use(TRIM(model%interior_diagnostic_variables(jn)%name)//'25h')) THEN 
     413                  zw3d(:,:,:) = fabm_3d_25h(:,:,:,jn)*tmask(:,:,:) + zmdi*(1.0-tmask(:,:,:)) 
     414                  CALL iom_put( TRIM(model%interior_diagnostic_variables(jn)%name)//"25h", zw3d  ) 
     415               ENDIF 
    406416            END DO 
    407417            DO jn = 1, jp_fabm_surface 
     
    414424            END DO 
    415425            DO jn = 1, jp_fabm_2d 
    416                zw2d(:,:) = fabm_2d_25h(:,:,jn)*tmask(:,:,1) + zmdi*(1.0-tmask(:,:,1)) 
    417                CALL iom_put( TRIM(model%horizontal_diagnostic_variables(jn)%name)//"25h", zw2d  ) 
     426               IF (iom_use(TRIM(model%horizontal_diagnostic_variables(jn)%name)//'25h')) THEN 
     427                  zw2d(:,:) = fabm_2d_25h(:,:,jn)*tmask(:,:,1) + zmdi*(1.0-tmask(:,:,1)) 
     428                  CALL iom_put( TRIM(model%horizontal_diagnostic_variables(jn)%name)//"25h", zw2d  ) 
     429               ENDIF 
    418430            END DO 
    419431#endif 
     
    466478      END DO 
    467479      DO jn = 1, jp_fabm_3d 
    468          fabm_3d_25h(:,:,:,jn) = model%get_interior_diagnostic_data(jn) 
     480         IF (iom_use(TRIM(model%interior_diagnostic_variables(jn)%name)//'25h')) THEN 
     481            fabm_3d_25h(:,:,:,jn) = model%get_interior_diagnostic_data(jn) 
     482         ENDIF 
    469483      END DO 
    470484      DO jn = 1, jp_fabm_surface 
     
    475489      END DO 
    476490      DO jn = 1, jp_fabm_2d 
    477          fabm_2d_25h(:,:,jn) = model%get_horizontal_diagnostic_data(jn) 
     491         IF (iom_use(TRIM(model%horizontal_diagnostic_variables(jn)%name)//'25h')) THEN 
     492            fabm_2d_25h(:,:,jn) = model%get_horizontal_diagnostic_data(jn) 
     493         ENDIF 
    478494      END DO 
    479495#endif 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/OPA_SRC/DIA/diatmb.F90

    r13241 r13451  
    176176         END DO 
    177177         DO jn = 1, jp_fabm_3d 
    178             CALL dia_calctmb( model%get_interior_diagnostic_data(jn), zwtmb ) 
    179             CALL iom_put( "top_"//TRIM(model%interior_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) ) 
     178            IF ( iom_use('top_'//TRIM(model%interior_diagnostic_variables(jn)%name)) .OR. & 
     179               & iom_use('mid_'//TRIM(model%interior_diagnostic_variables(jn)%name)) .OR. & 
     180               & iom_use('bot_'//TRIM(model%interior_diagnostic_variables(jn)%name)) ) THEN 
     181               CALL dia_calctmb( model%get_interior_diagnostic_data(jn), zwtmb ) 
     182               CALL iom_put( "top_"//TRIM(model%interior_diagnostic_variables(jn)%name) , zwtmb(:,:,1) ) 
     183               CALL iom_put( "mid_"//TRIM(model%interior_diagnostic_variables(jn)%name) , zwtmb(:,:,2) ) 
     184               CALL iom_put( "bot_"//TRIM(model%interior_diagnostic_variables(jn)%name) , zwtmb(:,:,3) ) 
     185            ENDIF 
    182186         END DO 
    183187#endif 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r11277 r13451  
    493493      IF( lk_diaobs     ) THEN                  ! Observation & model comparison 
    494494                            CALL dia_obs_init            ! Initialize observational data 
    495                             CALL dia_obs( nit000 - 1 )   ! Observation operator for restart 
     495                            !CALL dia_obs( nit000 - 1 )   ! Observation operator for restart 
    496496      ENDIF 
    497497 
     
    505505 
    506506      IF(lwp) WRITE(numout,*) 'Euler time step switch is ', neuler 
    507                             CALL dia_tmb_init  ! TMB outputs 
    508                             CALL dia_25h_init  ! 25h mean  outputs 
    509                             CALL dia_diaopfoam_init  ! FOAM operational output 
     507                            !CALL dia_tmb_init  ! TMB outputs 
     508                            !CALL dia_25h_init  ! 25h mean  outputs 
     509                            !CALL dia_diaopfoam_init  ! FOAM operational output 
    510510      ! 
    511511   END SUBROUTINE nemo_init 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/OPA_SRC/step.F90

    r11277 r13451  
    9696                      CALL iom_init(      cxios_context          )  ! iom_put initialization 
    9797         IF( ln_crs ) CALL iom_init( TRIM(cxios_context)//"_crs" )  ! initialize context for coarse grid 
     98                      IF ( lk_fabm ) CALL nemo_fabm_start 
     99                      CALL dia_obs( nit000 - 1 )   ! Observation operator for restart 
     100                      CALL dia_tmb_init  ! TMB outputs 
     101                      CALL dia_25h_init  ! 25h mean  outputs 
     102                      CALL dia_diaopfoam_init  ! FOAM operational output 
    98103      ENDIF 
    99104 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/OPA_SRC/step_oce.F90

    r11277 r13451  
    126126   USE trcstp           ! passive tracer time-stepping      (trc_stp routine) 
    127127#endif 
     128#if defined key_fabm 
     129   USE par_fabm, ONLY: lk_fabm 
     130   USE trcsms_fabm, ONLY: nemo_fabm_start 
     131#endif 
     132   USE diatmb          ! Top,middle,bottom output 
     133   USE dia25h          ! 25h mean output 
     134   USE diaopfoam       ! FOAM operational output 
    128135   !!---------------------------------------------------------------------- 
    129136   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/TOP_SRC/FABM/trcini_fabm.F90

    r13241 r13451  
    484484      IMPLICIT NONE 
    485485       
    486       CHARACTER(LEN=256), INTENT(IN) :: state_name 
    487        
    488       INTEGER                        :: jn 
     486      CHARACTER(LEN=*), INTENT(IN) :: state_name 
     487       
     488      INTEGER                      :: jn 
    489489 
    490490      !!---------------------------------------------------------------------- 
     
    516516      IMPLICIT NONE 
    517517       
    518       CHARACTER(LEN=256), INTENT(IN) :: diag_name 
    519        
    520       INTEGER                        :: jn 
     518      CHARACTER(LEN=*), INTENT(IN) :: diag_name 
     519       
     520      INTEGER                      :: jn 
    521521 
    522522      !!---------------------------------------------------------------------- 
  • branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/TOP_SRC/FABM/trcsms_fabm.F90

    r13241 r13451  
    5252   PUBLIC   trc_sms_fabm_alloc      ! called by trcini_fabm.F90 module 
    5353   PUBLIC   trc_sms_fabm_check_mass ! called by trcwri_fabm.F90 
     54   PUBLIC   nemo_fabm_start 
    5455 
    5556   ! Work arrays 
     
    556557      fabm_st2Db = fabm_st2Dn 
    557558 
    558       ! Pointer to spectral heating term 
    559       swrad => model%get_data(model%get_interior_variable_id(standard_variables%net_rate_of_absorption_of_shortwave_energy_in_layer)) 
    560  
    561  
    562559   END FUNCTION trc_sms_fabm_alloc 
    563560 
     
    569566      DO jn=1,size(model%interior_diagnostic_variables) 
    570567         model%interior_diagnostic_variables(jn)%save = iom_use(model%interior_diagnostic_variables(jn)%name) & 
    571             .or. iom_use(TRIM(model%interior_diagnostic_variables(jn)%name)//'_VINT') 
    572       END DO 
     568            .or. iom_use(TRIM(model%interior_diagnostic_variables(jn)%name)//'_VINT') & 
     569            .or. iom_use(TRIM(model%interior_diagnostic_variables(jn)%name)//'25h') & 
     570            .or. iom_use('top_'//TRIM(model%interior_diagnostic_variables(jn)%name)) & 
     571            .or. iom_use('mid_'//TRIM(model%interior_diagnostic_variables(jn)%name)) & 
     572            .or. iom_use('bot_'//TRIM(model%interior_diagnostic_variables(jn)%name)) 
     573      END DO 
     574      model%interior_diagnostic_variables(jp_fabm_o3ta)%save = .TRUE. 
     575      model%interior_diagnostic_variables(jp_fabm_o3ph)%save = .TRUE. 
     576      model%interior_diagnostic_variables(jp_fabm_o3pc)%save = .TRUE. 
     577      model%interior_diagnostic_variables(jp_fabm_xeps)%save = .TRUE. 
     578      model%interior_diagnostic_variables(jp_fabm_pgrow)%save = .TRUE. 
     579      model%interior_diagnostic_variables(jp_fabm_ploss)%save = .TRUE. 
    573580      DO jn=1,size(model%horizontal_diagnostic_variables) 
    574          model%horizontal_diagnostic_variables(jn)%save = iom_use(model%horizontal_diagnostic_variables(jn)%name) 
     581         model%horizontal_diagnostic_variables(jn)%save = iom_use(model%horizontal_diagnostic_variables(jn)%name) & 
     582            .or. iom_use(TRIM(model%horizontal_diagnostic_variables(jn)%name)//'25h') 
    575583      END DO 
    576584 
     
    580588 
    581589      started = .TRUE. 
     590 
     591      IF( ln_qsr_spec ) THEN 
     592         ! Pointer to spectral heating term 
     593         swrad => model%get_data(model%get_interior_variable_id(standard_variables%net_rate_of_absorption_of_shortwave_energy_in_layer)) 
     594      ENDIF 
     595 
    582596   END SUBROUTINE 
    583597 
Note: See TracChangeset for help on using the changeset viewer.