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

Changeset 15353


Ignore:
Timestamp:
2021-10-12T13:42:06+02:00 (10 months ago)
Author:
hadjt
Message:

Region mean:

Adding iom_use to only process variable that are needed. This is currently in a very clunky method. Next itreation will streamline the code, and loop though variables.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/DIA/diaregmean.F90

    r15343 r15353  
    464464      INTEGER                          ::   maskno,jj,ji,jk,jm,nreg ! indices of mask, i and j, and number of regions 
    465465 
     466 
     467      CHARACTER (len=120)                ::    tmp_name 
     468      CHARACTER (len=120), DIMENSION(19) ::    name_dat_mat 
     469      CHARACTER (len=120), DIMENSION(4)  ::    name_AR5_mat 
     470      CHARACTER (len=120), DIMENSION(7)  ::    name_SBC_mat 
     471      INTEGER                            ::    vi      
     472      LOGICAL                            ::    do_reg_mean 
     473      REAL(wp), DIMENSION(19)            ::    output_mulitpler_dat_mat 
     474      REAL(wp), DIMENSION(4)             ::    output_mulitpler_AR5_mat 
     475      REAL(wp), DIMENSION(7)             ::    output_mulitpler_SBC_mat 
     476 
     477 
    466478#if defined key_fabm 
    467479      INTEGER                          ::  jn ,tmp_dummy     ! set masked values 
     
    472484      REAL(wp), POINTER, DIMENSION(:,:,:) :: zwtmbBGC    ! temporary BGC workspace  
    473485 
    474       LOGICAL       ::   verbose  
     486      LOGICAL       ::   verbose 
    475487      verbose = .FALSE. 
    476488      tmp_val = 0 
     
    490502            CALL ctl_stop('STOP', 'dia_regmean: timestep must give MOD(3600,rdt) = 0 otherwise no hourly values are possible') 
    491503        ENDIF 
     504 
     505        !!IF(lwp ) WRITE(numout,*) 'JT! test! dia_wri_region_mean instantaneous values!!!' 
     506        !!i_steps = 1 
     507        !!IF(lwp ) WRITE(numout,*) 'JT! test! dia_wri_region_mean instantaneous values!!!' 
    492508         
    493509        ! Every time step, add physical, SBC, PEA, MLD terms to create hourly sums. 
     
    536552             
    537553        tmp_field_mat(:,:,1) = tmp_field_mat(:,:,1) + (zwtmbT(:,:,1)*tmask(:,:,1)) !sst 
     554        name_dat_mat(1) = 'sst' 
    538555        tmp_field_mat(:,:,2) = tmp_field_mat(:,:,2) + (zwtmbT(:,:,2)*tmask(:,:,1)) !nbt 
     556        name_dat_mat(2) = 'nbt' 
    539557        tmp_field_mat(:,:,3) = tmp_field_mat(:,:,3) + (zwtmbT(:,:,3)*tmask(:,:,1)) !dft 
     558        name_dat_mat(3) = 'dft' 
    540559 
    541560        tmp_field_mat(:,:,4) = tmp_field_mat(:,:,4) + (zwtmbT(:,:,4)*tmask(:,:,1)) !zat 
     561        name_dat_mat(4) = 'zat' 
    542562        tmp_field_mat(:,:,5) = tmp_field_mat(:,:,5) + (zwtmbT(:,:,5)*tmask(:,:,1)) !vat 
     563        name_dat_mat(5) = 'vat' 
    543564        tmp_field_mat(:,:,6) = tmp_field_mat(:,:,6) + ((zwtmbT(:,:,6)*tmask(:,:,1)*4.2e3))! heat 
     565        name_dat_mat(6) = 'heat' 
    544566 
    545567        tmp_field_mat(:,:,7) = tmp_field_mat(:,:,7) + (zwtmbS(:,:,1)*tmask(:,:,1)) !sss 
     568        name_dat_mat(7) = 'sss' 
    546569        tmp_field_mat(:,:,8) = tmp_field_mat(:,:,8) + (zwtmbS(:,:,2)*tmask(:,:,1)) !nbs 
     570        name_dat_mat(8) = 'nbs' 
    547571        tmp_field_mat(:,:,9) = tmp_field_mat(:,:,9) + (zwtmbS(:,:,3)*tmask(:,:,1)) !dfs 
     572        name_dat_mat(9) = 'dfs' 
    548573 
    549574        tmp_field_mat(:,:,10) = tmp_field_mat(:,:,10) + (zwtmbS(:,:,4)*tmask(:,:,1)) !zas 
     575        name_dat_mat(10) = 'zas' 
    550576        tmp_field_mat(:,:,11) = tmp_field_mat(:,:,11) + (zwtmbS(:,:,5)*tmask(:,:,1)) !vas 
     577        name_dat_mat(11) = 'vas' 
    551578        tmp_field_mat(:,:,12) = tmp_field_mat(:,:,12) + (zwtmbS(:,:,6)*tmask(:,:,1)) !salt 
     579        name_dat_mat(12) = 'salt' 
    552580 
    553581        tmp_field_mat(:,:,13) = tmp_field_mat(:,:,13) + (zwtmb1(:,:,5)*tmask(:,:,1))!vol 
     582        name_dat_mat(13) = 'vol' 
    554583        tmp_field_mat(:,:,14) = tmp_field_mat(:,:,14) + (zwtmb1(:,:,6)*tmask(:,:,1))!mass 
     584        name_dat_mat(14) = 'mass' 
    555585 
    556586        tmp_field_mat(:,:,15) = tmp_field_mat(:,:,15) + (sshn(:,:)*tmask(:,:,1)) !ssh 
     587        name_dat_mat(15) = 'ssh' 
    557588         
    558589        !JT CALL wrk_dealloc( jpi , jpj, 6 , zwtmbT ) 
     
    567598        !JT MLD   ENDIF 
    568599 
     600        name_dat_mat(16) = 'mldkara' 
     601         
    569602        IF( ln_diaregmean_pea  ) THEN 
    570603            tmp_field_mat(:,:,17) = tmp_field_mat(:,:,17) + (pea(:,:)*tmask(:,:,1))  !pea 
     
    572605            tmp_field_mat(:,:,19) = tmp_field_mat(:,:,19) + (peas(:,:)*tmask(:,:,1)) !peas 
    573606        ENDIF 
     607        name_dat_mat(17) = 'pea' 
     608        name_dat_mat(18) = 'peat' 
     609        name_dat_mat(19) = 'peas' 
    574610           
    575611        IF( ln_diaregmean_diaar5  ) THEN 
    576612            tmp_field_AR5_mat(:,:,1) = tmp_field_AR5_mat(:,:,1) + (sshsteric_mat(:,:)*tmask(:,:,1)) 
     613            name_AR5_mat(1) = 'ssh_steric' 
    577614            tmp_field_AR5_mat(:,:,2) = tmp_field_AR5_mat(:,:,2) + (sshthster_mat(:,:)*tmask(:,:,1)) 
     615            name_AR5_mat(2) = 'ssh_thermosteric' 
    578616            tmp_field_AR5_mat(:,:,3) = tmp_field_AR5_mat(:,:,3) + (sshhlster_mat(:,:)*tmask(:,:,1)) 
     617            name_AR5_mat(3) = 'ssh_halosteric' 
    579618            tmp_field_AR5_mat(:,:,4) = tmp_field_AR5_mat(:,:,4) + (zbotpres_mat(:,:)*tmask(:,:,1)) 
     619            name_AR5_mat(4) = 'bot_pres' 
    580620        ENDIF 
    581621         
     622 
    582623        IF( ln_diaregmean_diasbc  ) THEN 
    583624            tmp_field_SBC_mat(:,:,1) = tmp_field_SBC_mat(:,:,1) + ((qsr  + qns)*tmask(:,:,1)) 
     625            name_SBC_mat(1) = 'qt' 
    584626            tmp_field_SBC_mat(:,:,2) = tmp_field_SBC_mat(:,:,2) + (qsr*tmask(:,:,1)) 
     627            name_SBC_mat(2) = 'qsr' 
    585628            tmp_field_SBC_mat(:,:,3) = tmp_field_SBC_mat(:,:,3) + (qns*tmask(:,:,1)) 
     629            name_SBC_mat(3) = 'qns' 
    586630            tmp_field_SBC_mat(:,:,4) = tmp_field_SBC_mat(:,:,4) + (emp*tmask(:,:,1)) 
     631            name_SBC_mat(4) = 'emp' 
    587632            tmp_field_SBC_mat(:,:,5) = tmp_field_SBC_mat(:,:,5) + (wndm*tmask(:,:,1)) 
     633            name_SBC_mat(5) = 'wspd' 
    588634            tmp_field_SBC_mat(:,:,6) = tmp_field_SBC_mat(:,:,6) + (pressnow*tmask(:,:,1)) 
     635            name_SBC_mat(6) = 'mslp' 
    589636            tmp_field_SBC_mat(:,:,7) = tmp_field_SBC_mat(:,:,7) + (rnf*tmask(:,:,1)) 
     637            name_SBC_mat(7) = 'rnf' 
    590638        ENDIF 
    591639 
     640        output_mulitpler_dat_mat(:) = 1. 
     641        output_mulitpler_dat_mat(6) = 1e-12 
     642        output_mulitpler_dat_mat(12) = 1e-12 
     643        output_mulitpler_AR5_mat(:) = 1. 
     644        output_mulitpler_SBC_mat(:) = 1. 
     645 
     646        IF(lwp) THEN  
     647 
     648         
     649            DO vi=1,19 ! State loop 
     650               WRITE(numout,*)  'JT dia_regmean SBC variable : ',TRIM( name_dat_mat(vi) ) 
     651            END DO 
     652            DO vi=1,4 ! State loop 
     653               WRITE(numout,*)  'JT dia_regmean SBC variable : ',TRIM( name_AR5_mat(vi) ) 
     654            END DO 
     655            DO vi=1,7 ! State loop 
     656               WRITE(numout,*)  'JT dia_regmean SBC variable : ',TRIM( name_SBC_mat(vi) ) 
     657            END DO 
     658        ENDIF 
    592659 
    593660         
     
    598665        IF ( MOD( kt, i_steps ) == 0 .and. kt .ne. nn_it000 ) THEN 
    599666 
    600  
    601             CALL dia_wri_region_mean(kt, "sst" , tmp_field_mat(:,:,1)/real(tmp_field_cnt,wp)) 
    602             CALL dia_wri_region_mean(kt, "nbt" , tmp_field_mat(:,:,2)/real(tmp_field_cnt,wp)) 
    603             CALL dia_wri_region_mean(kt, "dft" , tmp_field_mat(:,:,3)/real(tmp_field_cnt,wp)) 
    604  
    605             CALL dia_wri_region_mean(kt, "zat" , tmp_field_mat(:,:,4)/real(tmp_field_cnt,wp)) 
    606             CALL dia_wri_region_mean(kt, "vat" , tmp_field_mat(:,:,5)/real(tmp_field_cnt,wp)) 
    607             CALL dia_wri_region_mean(kt, "heat" , tmp_field_mat(:,:,6)/real(tmp_field_cnt,wp)/1e12) 
    608  
    609             CALL dia_wri_region_mean(kt, "sss" , tmp_field_mat(:,:,7)/real(tmp_field_cnt,wp)) 
    610             CALL dia_wri_region_mean(kt, "nbs" , tmp_field_mat(:,:,8)/real(tmp_field_cnt,wp)) 
    611             CALL dia_wri_region_mean(kt, "dfs" , tmp_field_mat(:,:,9)/real(tmp_field_cnt,wp)) 
    612  
    613             CALL dia_wri_region_mean(kt, "zas" , tmp_field_mat(:,:,10)/real(tmp_field_cnt,wp)) 
    614             CALL dia_wri_region_mean(kt, "vas" , tmp_field_mat(:,:,11)/real(tmp_field_cnt,wp)) 
    615             CALL dia_wri_region_mean(kt, "salt" , tmp_field_mat(:,:,12)/real(tmp_field_cnt,wp)/1e12) 
    616  
    617             CALL dia_wri_region_mean(kt, "vol" , tmp_field_mat(:,:,13)/real(tmp_field_cnt,wp)) 
    618             CALL dia_wri_region_mean(kt, "mass" , tmp_field_mat(:,:,14)/real(tmp_field_cnt,wp)) 
    619  
    620             CALL dia_wri_region_mean(kt, "ssh" , tmp_field_mat(:,:,15)/real(tmp_field_cnt,wp)) 
    621  
    622  
    623             IF( ln_diaregmean_karamld  ) THEN           
    624                 CALL dia_wri_region_mean(kt, "mldkara" , tmp_field_mat(:,:,16)/real(tmp_field_cnt,wp)) ! tm 
     667            
     668!            DO vi=1,19 ! State loop 
     669 
     670!               do_reg_mean = .TRUE. 
     671 
     672!               IF (vi == 16) THEN 
     673!                 IF( .not. ln_diaregmean_karamld ) do_reg_mean = .FALSE.    
     674!               ENDIF  
     675 
     676!               IF ((vi == 17) .OR. (vi == 18) .OR. (vi == 19) ) THEN 
     677!                 IF( .not. ln_diaregmean_pea ) do_reg_mean = .FALSE.    
     678!               ENDIF  
     679 
     680!               tmp_name=TRIM( name_dat_mat(vi) ) 
     681!               IF ( do_reg_mean ) THEN 
     682!                   IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     683!                      & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     684!                      & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     685!                      & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     686!                      & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     687!                      & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     688 
     689!                        CALL dia_wri_region_mean(kt, TRIM(tmp_name) , output_mulitpler_dat_mat(vi)*tmp_field_mat(:,:,vi)/real(tmp_field_cnt,wp)) 
     690!                        WRITE(numout,*)  'JT dia_regmean SBC variable - region mean: ',TRIM( name_dat_mat(vi) ),';' 
     691!                    ELSE 
     692!                        WRITE(numout,*)  'JT dia_regmean SBC variable - no iom_use: ',TRIM( name_dat_mat(vi) ),';' 
     693!                    ENDIF 
     694!                ELSE 
     695!                    WRITE(numout,*)  'JT dia_regmean SBC variable - no do_reg_mean: ',TRIM( name_dat_mat(vi) ),';',ln_diaregmean_karamld,ln_diaregmean_pea 
     696!                ENDIF 
     697!                tmp_name="" 
     698!            END DO 
     699!             
     700!            tmp_field_mat(:,:,:) = 0. 
     701 
     702 
     703            tmp_name="sst" 
     704            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     705              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     706              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     707              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     708              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     709              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     710 
     711                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,1)/real(tmp_field_cnt,wp)) 
     712            ENDIF 
     713            tmp_name="" 
     714 
     715            tmp_name="nbt" 
     716            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     717              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     718              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     719              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     720              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     721              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     722 
     723                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,2)/real(tmp_field_cnt,wp)) 
     724            ENDIF 
     725            tmp_name="" 
     726 
     727            tmp_name="dft" 
     728            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     729              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     730              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     731              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     732              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     733              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     734 
     735                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,3)/real(tmp_field_cnt,wp)) 
     736            ENDIF 
     737            tmp_name="" 
     738 
     739 
     740            tmp_name="zat" 
     741            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     742              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     743              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     744              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     745              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     746              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     747 
     748                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,4)/real(tmp_field_cnt,wp)) 
     749            ENDIF 
     750            tmp_name="" 
     751 
     752 
     753            tmp_name="vat" 
     754            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     755              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     756              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     757              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     758              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     759              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     760 
     761                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,5)/real(tmp_field_cnt,wp)) 
     762            ENDIF 
     763            tmp_name="" 
     764 
     765 
     766            tmp_name="heat" 
     767            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     768              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     769              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     770              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     771              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     772              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     773 
     774                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,6)/real(tmp_field_cnt,wp)/1e12) 
     775            ENDIF 
     776            tmp_name="" 
     777 
     778            tmp_name="sss" 
     779            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     780              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     781              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     782              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     783              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     784              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     785 
     786                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,7)/real(tmp_field_cnt,wp)) 
     787            ENDIF 
     788            tmp_name="" 
     789 
     790            tmp_name="nbs" 
     791            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     792              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     793              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     794              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     795              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     796              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     797 
     798                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,8)/real(tmp_field_cnt,wp)) 
     799            ENDIF 
     800            tmp_name="" 
     801 
     802            tmp_name="dfs" 
     803            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     804              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     805              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     806              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     807              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     808              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     809 
     810                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,9)/real(tmp_field_cnt,wp)) 
     811            ENDIF 
     812            tmp_name="" 
     813 
     814 
     815            tmp_name="zas" 
     816            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     817              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     818              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     819              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     820              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     821              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     822 
     823                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,10)/real(tmp_field_cnt,wp)) 
     824            ENDIF 
     825            tmp_name="" 
     826 
     827 
     828            tmp_name="vas" 
     829            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     830              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     831              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     832              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     833              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     834              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     835 
     836                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,11)/real(tmp_field_cnt,wp)) 
     837            ENDIF 
     838            tmp_name="" 
     839 
     840 
     841            tmp_name="salt" 
     842            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     843              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     844              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     845              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     846              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     847              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     848 
     849                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,12)/real(tmp_field_cnt,wp)/1e12) 
     850            ENDIF 
     851            tmp_name="" 
     852 
     853            tmp_name="vol" 
     854            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     855              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     856              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     857              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     858              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     859              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     860 
     861                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,13)/real(tmp_field_cnt,wp)) 
     862            ENDIF 
     863            tmp_name="" 
     864 
     865 
     866            tmp_name="mass" 
     867            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     868              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     869              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     870              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     871              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     872              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     873 
     874                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,14)/real(tmp_field_cnt,wp)) 
     875            ENDIF 
     876            tmp_name="" 
     877 
     878 
     879            tmp_name="ssh" 
     880            IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     881              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     882              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     883              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     884              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     885              & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     886 
     887                CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,15)/real(tmp_field_cnt,wp)) 
     888            ENDIF 
     889            tmp_name="" 
     890 
     891 
     892 
     893 
     894 
     895 
     896            !CALL dia_wri_region_mean(kt, "sst" , tmp_field_mat(:,:,1)/real(tmp_field_cnt,wp)) 
     897            !CALL dia_wri_region_mean(kt, "nbt" , tmp_field_mat(:,:,2)/real(tmp_field_cnt,wp)) 
     898            !CALL dia_wri_region_mean(kt, "dft" , tmp_field_mat(:,:,3)/real(tmp_field_cnt,wp)) 
     899 
     900            !CALL dia_wri_region_mean(kt, "zat" , tmp_field_mat(:,:,4)/real(tmp_field_cnt,wp)) 
     901            !CALL dia_wri_region_mean(kt, "vat" , tmp_field_mat(:,:,5)/real(tmp_field_cnt,wp)) 
     902            !CALL dia_wri_region_mean(kt, "heat" , tmp_field_mat(:,:,6)/real(tmp_field_cnt,wp)/1e12) 
     903 
     904            !CALL dia_wri_region_mean(kt, "sss" , tmp_field_mat(:,:,7)/real(tmp_field_cnt,wp)) 
     905            !CALL dia_wri_region_mean(kt, "nbs" , tmp_field_mat(:,:,8)/real(tmp_field_cnt,wp)) 
     906            !CALL dia_wri_region_mean(kt, "dfs" , tmp_field_mat(:,:,9)/real(tmp_field_cnt,wp)) 
     907 
     908            !CALL dia_wri_region_mean(kt, "zas" , tmp_field_mat(:,:,10)/real(tmp_field_cnt,wp)) 
     909            !CALL dia_wri_region_mean(kt, "vas" , tmp_field_mat(:,:,11)/real(tmp_field_cnt,wp)) 
     910            !CALL dia_wri_region_mean(kt, "salt" , tmp_field_mat(:,:,12)/real(tmp_field_cnt,wp)/1e12) 
     911 
     912            !CALL dia_wri_region_mean(kt, "vol" , tmp_field_mat(:,:,13)/real(tmp_field_cnt,wp)) 
     913            !CALL dia_wri_region_mean(kt, "mass" , tmp_field_mat(:,:,14)/real(tmp_field_cnt,wp)) 
     914 
     915            !CALL dia_wri_region_mean(kt, "ssh" , tmp_field_mat(:,:,15)/real(tmp_field_cnt,wp)) 
     916 
     917 
     918            IF( ln_diaregmean_karamld  ) THEN     
     919                tmp_name="mldkara" 
     920                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     921                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     922                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     923                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     924                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     925                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     926 
     927                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,16)/real(tmp_field_cnt,wp)) 
     928                ENDIF 
     929                tmp_name="" 
     930       
     931                !CALL dia_wri_region_mean(kt, "mldkara" , tmp_field_mat(:,:,16)/real(tmp_field_cnt,wp)) ! tm 
    625932            ENDIF 
    626933 
    627934            IF( ln_diaregmean_pea  ) THEN           
    628                 CALL dia_wri_region_mean(kt, "pea"  , tmp_field_mat(:,:,17)/real(tmp_field_cnt,wp)) 
    629                 CALL dia_wri_region_mean(kt, "peat" , tmp_field_mat(:,:,18)/real(tmp_field_cnt,wp)) 
    630                 CALL dia_wri_region_mean(kt, "peas" , tmp_field_mat(:,:,19)/real(tmp_field_cnt,wp)) ! tmb 
     935 
     936                tmp_name="pea" 
     937                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     938                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     939                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     940                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     941                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     942                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     943 
     944                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,17)/real(tmp_field_cnt,wp)) 
     945                ENDIF 
     946                tmp_name="" 
     947 
     948                tmp_name="peat" 
     949                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     950                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     951                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     952                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     953                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     954                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     955 
     956                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,18)/real(tmp_field_cnt,wp)) 
     957                ENDIF 
     958                tmp_name="" 
     959 
     960 
     961                tmp_name="peas" 
     962                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     963                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     964                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     965                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     966                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     967                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     968 
     969                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_mat(:,:,19)/real(tmp_field_cnt,wp)) 
     970                ENDIF 
     971                tmp_name="" 
     972 
     973 
     974                !CALL dia_wri_region_mean(kt, "pea"  , tmp_field_mat(:,:,17)/real(tmp_field_cnt,wp)) 
     975                !CALL dia_wri_region_mean(kt, "peat" , tmp_field_mat(:,:,18)/real(tmp_field_cnt,wp)) 
     976                !CALL dia_wri_region_mean(kt, "peas" , tmp_field_mat(:,:,19)/real(tmp_field_cnt,wp)) ! tmb 
    631977            ENDIF 
    632978 
     
    635981            IF( ln_diaregmean_diaar5  ) THEN 
    636982 
    637                 CALL dia_wri_region_mean(kt, "ssh_steric" ,      tmp_field_AR5_mat(:,:,1)/real(tmp_field_cnt,wp)) 
    638                 CALL dia_wri_region_mean(kt, "ssh_thermosteric", tmp_field_AR5_mat(:,:,2)/real(tmp_field_cnt,wp)) 
    639                 CALL dia_wri_region_mean(kt, "ssh_halosteric" ,  tmp_field_AR5_mat(:,:,3)/real(tmp_field_cnt,wp)) 
    640                 CALL dia_wri_region_mean(kt, "bot_pres" ,        tmp_field_AR5_mat(:,:,4)/real(tmp_field_cnt,wp)) 
     983                tmp_name="ssh_steric" 
     984                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     985                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     986                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     987                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     988                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     989                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     990 
     991                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_AR5_mat(:,:,1)/real(tmp_field_cnt,wp)) 
     992                ENDIF 
     993                tmp_name="" 
     994 
     995                tmp_name="ssh_thermosteric" 
     996                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     997                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     998                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     999                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1000                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1001                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1002 
     1003                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_AR5_mat(:,:,2)/real(tmp_field_cnt,wp)) 
     1004                ENDIF 
     1005                tmp_name="" 
     1006 
     1007                tmp_name="ssh_halosteric" 
     1008                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1009                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1010                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1011                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1012                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1013                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1014 
     1015                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_AR5_mat(:,:,3)/real(tmp_field_cnt,wp)) 
     1016                ENDIF 
     1017                tmp_name="" 
     1018 
     1019                tmp_name="bot_pres" 
     1020                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1021                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1022                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1023                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1024                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1025                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1026 
     1027                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_AR5_mat(:,:,4)/real(tmp_field_cnt,wp)) 
     1028                ENDIF 
     1029                tmp_name="" 
     1030 
     1031                !CALL dia_wri_region_mean(kt, "ssh_steric" ,      tmp_field_AR5_mat(:,:,1)/real(tmp_field_cnt,wp)) 
     1032                !CALL dia_wri_region_mean(kt, "ssh_thermosteric", tmp_field_AR5_mat(:,:,2)/real(tmp_field_cnt,wp)) 
     1033                !CALL dia_wri_region_mean(kt, "ssh_halosteric" ,  tmp_field_AR5_mat(:,:,3)/real(tmp_field_cnt,wp)) 
     1034                !CALL dia_wri_region_mean(kt, "bot_pres" ,        tmp_field_AR5_mat(:,:,4)/real(tmp_field_cnt,wp)) 
    6411035                tmp_field_AR5_mat(:,:,:) = 0. 
    6421036            ENDIF 
     
    6441038            IF( ln_diaregmean_diasbc  ) THEN 
    6451039 
    646                 CALL dia_wri_region_mean(kt, "qt"   , tmp_field_SBC_mat(:,:,1)/real(tmp_field_cnt,wp)) 
    647                 CALL dia_wri_region_mean(kt, "qsr"  , tmp_field_SBC_mat(:,:,2)/real(tmp_field_cnt,wp)) 
    648                 CALL dia_wri_region_mean(kt, "qns"  , tmp_field_SBC_mat(:,:,3)/real(tmp_field_cnt,wp)) 
    649                 CALL dia_wri_region_mean(kt, "emp"  , tmp_field_SBC_mat(:,:,4)/real(tmp_field_cnt,wp)) 
    650                 CALL dia_wri_region_mean(kt, "wspd" , tmp_field_SBC_mat(:,:,5)/real(tmp_field_cnt,wp)) 
    651                 CALL dia_wri_region_mean(kt, "mslp" , tmp_field_SBC_mat(:,:,6)/real(tmp_field_cnt,wp)) 
    652                 CALL dia_wri_region_mean(kt, "rnf"  , tmp_field_SBC_mat(:,:,7)/real(tmp_field_cnt,wp)) 
     1040 
     1041 
     1042                tmp_name="qt" 
     1043                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1044                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1045                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1046                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1047                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1048                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1049 
     1050                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_SBC_mat(:,:,1)/real(tmp_field_cnt,wp)) 
     1051                ENDIF 
     1052                tmp_name="" 
     1053 
     1054                tmp_name="qsr" 
     1055                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1056                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1057                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1058                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1059                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1060                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1061 
     1062                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_SBC_mat(:,:,2)/real(tmp_field_cnt,wp)) 
     1063                ENDIF 
     1064                tmp_name="" 
     1065 
     1066                tmp_name="qns" 
     1067                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1068                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1069                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1070                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1071                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1072                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1073 
     1074                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_SBC_mat(:,:,3)/real(tmp_field_cnt,wp)) 
     1075                ENDIF 
     1076                tmp_name="" 
     1077 
     1078                tmp_name="emp" 
     1079                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1080                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1081                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1082                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1083                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1084                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1085 
     1086                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_SBC_mat(:,:,4)/real(tmp_field_cnt,wp)) 
     1087                ENDIF 
     1088                tmp_name="" 
     1089 
     1090                tmp_name="wspd" 
     1091                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1092                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1093                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1094                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1095                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1096                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1097 
     1098                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_SBC_mat(:,:,5)/real(tmp_field_cnt,wp)) 
     1099                ENDIF 
     1100                tmp_name="" 
     1101 
     1102                tmp_name="mslp" 
     1103                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1104                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1105                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1106                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1107                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1108                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1109 
     1110                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_SBC_mat(:,:,6)/real(tmp_field_cnt,wp)) 
     1111                ENDIF 
     1112                tmp_name="" 
     1113 
     1114                tmp_name="rnf" 
     1115                IF (iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_ave'))))    .OR. & 
     1116                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_tot'))))    .OR. & 
     1117                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_var'))))    .OR. & 
     1118                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_cnt'))))    .OR. & 
     1119                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) .OR. & 
     1120                  & iom_use(trim( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) ) THEN 
     1121 
     1122                    CALL dia_wri_region_mean(kt, TRIM(tmp_name) , tmp_field_SBC_mat(:,:,7)/real(tmp_field_cnt,wp)) 
     1123                ENDIF 
     1124                tmp_name="" 
     1125 
     1126                !CALL dia_wri_region_mean(kt, "qt"   , tmp_field_SBC_mat(:,:,1)/real(tmp_field_cnt,wp)) 
     1127                !CALL dia_wri_region_mean(kt, "qsr"  , tmp_field_SBC_mat(:,:,2)/real(tmp_field_cnt,wp)) 
     1128                !CALL dia_wri_region_mean(kt, "qns"  , tmp_field_SBC_mat(:,:,3)/real(tmp_field_cnt,wp)) 
     1129                !CALL dia_wri_region_mean(kt, "emp"  , tmp_field_SBC_mat(:,:,4)/real(tmp_field_cnt,wp)) 
     1130                !CALL dia_wri_region_mean(kt, "wspd" , tmp_field_SBC_mat(:,:,5)/real(tmp_field_cnt,wp)) 
     1131                !CALL dia_wri_region_mean(kt, "mslp" , tmp_field_SBC_mat(:,:,6)/real(tmp_field_cnt,wp)) 
     1132                !CALL dia_wri_region_mean(kt, "rnf"  , tmp_field_SBC_mat(:,:,7)/real(tmp_field_cnt,wp)) 
    6531133                tmp_field_SBC_mat(:,:,:) = 0. 
     1134 
    6541135            ENDIF 
    6551136 
     
    10271508          IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean ready to start iom_put: ',trim(tmp_name) 
    10281509           
    1029        
    1030           DO jm = 1,n_regions_output 
    1031             zrmet_val = zrmet_ave(jm) 
    1032 !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
    1033 !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    1034             if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1035             zrmet_out(:,:,jm) = zrmet_val 
    1036           END DO       
    10371510          tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_ave')) 
    1038           IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom) 
    1039           CALL iom_put(trim(tmp_name_iom), zrmet_out ) 
    1040           zrmet_out(:,:,:) = 0 
    1041           zrmet_val = 0 
    1042           tmp_name_iom = '' 
    1043        
    1044           DO jm = 1,n_regions_output 
    1045             zrmet_val = zrmet_tot(jm) 
    1046 !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
    1047 !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    1048             if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1049             zrmet_out(:,:,jm) = zrmet_val 
    1050           END DO 
     1511          IF (iom_use(trim(tmp_name_iom))) THEN 
     1512              DO jm = 1,n_regions_output 
     1513                zrmet_val = zrmet_ave(jm) 
     1514    !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
     1515    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
     1516                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
     1517                zrmet_out(:,:,jm) = zrmet_val 
     1518              END DO       
     1519              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom) 
     1520              CALL iom_put(trim(tmp_name_iom), zrmet_out ) 
     1521              zrmet_out(:,:,:) = 0 
     1522              zrmet_val = 0 
     1523              tmp_name_iom = '' 
     1524          ENDIF 
     1525 
    10511526          tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_tot')) 
    1052           IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
    1053           CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
    1054           zrmet_out(:,:,:) = 0 
    1055           zrmet_val = 0 
    1056           tmp_name_iom = '' 
    1057        
    1058           DO jm = 1,n_regions_output 
    1059             zrmet_val = zrmet_var(jm) 
    1060 !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
    1061 !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    1062             if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1063             zrmet_out(:,:,jm) = zrmet_val 
    1064           END DO 
     1527          IF (iom_use(trim(tmp_name_iom))) THEN 
     1528              DO jm = 1,n_regions_output 
     1529                zrmet_val = zrmet_tot(jm) 
     1530    !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
     1531    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
     1532                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
     1533                zrmet_out(:,:,jm) = zrmet_val 
     1534              END DO 
     1535              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
     1536              CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
     1537              zrmet_out(:,:,:) = 0 
     1538              zrmet_val = 0 
     1539              tmp_name_iom = '' 
     1540          ENDIF 
     1541 
    10651542          tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_var')) 
    1066           IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
    1067           CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
    1068           zrmet_out(:,:,:) = 0 
    1069           zrmet_val = 0 
    1070           tmp_name_iom = '' 
    1071        
    1072           DO jm = 1,n_regions_output 
    1073             zrmet_val = zrmet_cnt(jm) 
    1074 !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
    1075 !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    1076             if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1077             zrmet_out(:,:,jm) = zrmet_val 
    1078           END DO 
     1543          IF (iom_use(trim(tmp_name_iom))) THEN 
     1544              DO jm = 1,n_regions_output 
     1545                zrmet_val = zrmet_var(jm) 
     1546    !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
     1547    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
     1548                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
     1549                zrmet_out(:,:,jm) = zrmet_val 
     1550              END DO 
     1551              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
     1552              CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
     1553              zrmet_out(:,:,:) = 0 
     1554              zrmet_val = 0 
     1555              tmp_name_iom = '' 
     1556          ENDIF 
     1557 
    10791558          tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_cnt')) 
    1080           IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
    1081           CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
    1082           zrmet_out(:,:,:) = 0 
    1083           zrmet_val = 0 
    1084           tmp_name_iom = '' 
    1085        
    1086           DO jm = 1,n_regions_output 
    1087             zrmet_val = zrmet_reg_id(jm) 
    1088 !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
    1089 !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    1090             if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1091             zrmet_out(:,:,jm) = zrmet_val 
    1092           END DO 
     1559          IF (iom_use(trim(tmp_name_iom))) THEN 
     1560              DO jm = 1,n_regions_output 
     1561                zrmet_val = zrmet_cnt(jm) 
     1562    !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
     1563    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
     1564                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
     1565                zrmet_out(:,:,jm) = zrmet_val 
     1566              END DO 
     1567              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
     1568              CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
     1569              zrmet_out(:,:,:) = 0 
     1570              zrmet_val = 0 
     1571              tmp_name_iom = '' 
     1572          ENDIF 
     1573 
    10931574          tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')) 
    1094           IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
    1095           CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
    1096           zrmet_out(:,:,:) = 0 
    1097           zrmet_val = 0 
    1098           tmp_name_iom = '' 
    1099        
    1100           DO jm = 1,n_regions_output 
    1101             zrmet_val = zrmet_mask_id(jm) 
    1102 !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
    1103 !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    1104             if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1105             zrmet_out(:,:,jm) = zrmet_val 
    1106           END DO 
     1575          IF (iom_use(trim(tmp_name_iom))) THEN 
     1576              DO jm = 1,n_regions_output 
     1577                zrmet_val = zrmet_reg_id(jm) 
     1578    !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
     1579    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
     1580                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
     1581                zrmet_out(:,:,jm) = zrmet_val 
     1582              END DO 
     1583              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
     1584              CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
     1585              zrmet_out(:,:,:) = 0 
     1586              zrmet_val = 0 
     1587              tmp_name_iom = '' 
     1588          ENDIF 
     1589 
    11071590          tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')) 
    1108           IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
    1109           CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
    1110           zrmet_out(:,:,:) = 0 
    1111           zrmet_val = 0 
    1112           tmp_name_iom = '' 
     1591          IF (iom_use(trim(tmp_name_iom))) THEN 
     1592              DO jm = 1,n_regions_output 
     1593                zrmet_val = zrmet_mask_id(jm) 
     1594    !            if (zrmet_val .LT. -1e16) zrmet_val = -1e16 
     1595    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
     1596                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
     1597                zrmet_out(:,:,jm) = zrmet_val 
     1598              END DO 
     1599              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
     1600              CALL iom_put( trim(tmp_name_iom), zrmet_out ) 
     1601              zrmet_out(:,:,:) = 0 
     1602              zrmet_val = 0 
     1603              tmp_name_iom = '' 
     1604          ENDIF 
     1605       
    11131606      ELSE 
    11141607         
     
    11211614 
    11221615          DO jm = 1,9 
    1123               CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_ave')), dummy_zrmet ) 
    1124               CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_tot')), dummy_zrmet ) 
    1125               CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_var')), dummy_zrmet ) 
    1126               CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_cnt')), dummy_zrmet ) 
    1127               CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')), dummy_zrmet ) 
    1128               CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')), dummy_zrmet ) 
     1616              !IF iom_use(trim(trim(trim("reg_") // trim(tmp_name) // trim('_ave')))) CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_ave')), dummy_zrmet ) 
     1617              !IF iom_use(trim(trim(trim("reg_") // trim(tmp_name) // trim('_tot')))) CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_tot')), dummy_zrmet ) 
     1618              !IF iom_use(trim(trim(trim("reg_") // trim(tmp_name) // trim('_var')))) CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_var')), dummy_zrmet ) 
     1619              !IF iom_use(trim(trim(trim("reg_") // trim(tmp_name) // trim('_cnt')))) CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_cnt')), dummy_zrmet ) 
     1620              !IF iom_use(trim(trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')))) CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')), dummy_zrmet ) 
     1621              !IF iom_use(trim(trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')))) CALL iom_put( trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')), dummy_zrmet ) 
     1622 
     1623 
     1624              tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_ave')) 
     1625              IF (iom_use(trim(tmp_name_iom))) THEN 
     1626                 CALL iom_put( trim(tmp_name_iom), dummy_zrmet ) 
     1627              ENDIF 
     1628              tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_tot')) 
     1629              IF (iom_use(trim(tmp_name_iom))) THEN 
     1630                 CALL iom_put( trim(tmp_name_iom), dummy_zrmet ) 
     1631              ENDIF 
     1632              tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_var')) 
     1633              IF (iom_use(trim(tmp_name_iom))) THEN 
     1634                 CALL iom_put( trim(tmp_name_iom), dummy_zrmet ) 
     1635              ENDIF 
     1636              tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_cnt')) 
     1637              IF (iom_use(trim(tmp_name_iom))) THEN 
     1638                 CALL iom_put( trim(tmp_name_iom), dummy_zrmet ) 
     1639              ENDIF 
     1640              tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_reg_id')) 
     1641              IF (iom_use(trim(tmp_name_iom))) THEN 
     1642                 CALL iom_put( trim(tmp_name_iom), dummy_zrmet ) 
     1643              ENDIF 
     1644              tmp_name_iom =  trim(trim("reg_") // trim(tmp_name) // trim('_mask_id')) 
     1645              IF (iom_use(trim(tmp_name_iom))) THEN 
     1646                 CALL iom_put( trim(tmp_name_iom), dummy_zrmet ) 
     1647              ENDIF 
     1648 
    11291649          END DO 
    11301650     
Note: See TracChangeset for help on using the changeset viewer.