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

Changeset 15397


Ignore:
Timestamp:
2021-10-19T10:22:46+02:00 (3 years ago)
Author:
hadjt
Message:

Region mean and NOOS transport XIOS scaler output
Scalar output, so passing 85 and 3 values per iom call rather than 297*375*85.
DIADCT edited (nd changes commmeted out) to allow compilation on IFORT.
In all NEMO, reading section_ijglobal.diadct was the only compilation error, ifort didn't like ctl_opn, and cray didn't like call ftell.

Location:
NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/DIA
Files:
2 edited

Legend:

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

    r15378 r15397  
    8484  LOGICAL, PUBLIC ::   ln_diadct 
    8585 
     86  CHARACTER(len=60), PUBLIC ::  diadct_endian 
     87 
    8688  ! JT 
    8789 
     
    175177     !! 
    176178     !!--------------------------------------------------------------------- 
     179 
     180     ! 
    177181     NAMELIST/namdct/ln_diadct,ln_NOOS,nn_dct,ln_dct_h,ln_dct_ascii,nn_secdebug,ln_dct_calc_noos_day,ln_dct_calc_noos_hr,& 
    178              & nn_dct_iom_cont,ln_dct_day_25hr,ln_dct_verbose 
     182             & nn_dct_iom_cont,ln_dct_day_25hr,ln_dct_verbose,diadct_endian 
    179183     INTEGER           ::   ios,jsec        ! Local integer output status for namelist read 
    180184     CHARACTER(len=3)  ::   jsec_str        ! name of the jsec 
    181185     LOGICAL       ::   verbose      
    182186     verbose = ln_dct_verbose!.false. 
     187 
     188     diadct_endian='BIG_ENDIAN' 
    183189 
    184190     IF( ln_timing )   CALL timing_start('dia_dct_init') 
     
    649655     INTEGER :: jsec, jpt                                     ! dummy loop indices 
    650656     INTEGER                            :: ierr  ! error for allocate 
    651  
     657     !JT 
     658     INTEGER                            :: fsize, floc  ! exit section_ijglobal.diadct gracefully. 
     659     !JT 
    652660     INTEGER, DIMENSION(2) :: icoord  
    653661     CHARACTER(len=160)    :: clname                          !filename 
     
    673681      
    674682     IF ( verbose ) write(numout,*) 'dct low-level pre open: big endian :',nproc,narea 
     683 
     684 
     685     ! ok with Daleys set up (ifort?) 
     686     !OPEN(UNIT=107,FILE='section_ijglobal.diadct', FORM='UNFORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD',convert='NATIVE') 
     687     !READ(107) isec 
     688     !CLOSE(107) 
     689     !IF( lwp .AND. verbose ) write(numout,*) 'diadct readsec: NATIVE, isec',isec 
     690 
     691     !ok with  Daleys set up (ifort?) 
     692     !OPEN(UNIT=107,FILE='section_ijglobal.diadct', FORM='UNFORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD',convert='LITTLE_ENDIAN') 
     693     !READ(107) isec 
     694     !CLOSE(107) 
     695     !IF( lwp .AND. verbose ) write(numout,*) 'diadct readsec: LITTLE_ENDIAN, isec',isec 
     696 
     697 
    675698     OPEN(UNIT=107,FILE='section_ijglobal.diadct', FORM='UNFORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD',convert='BIG_ENDIAN') 
    676       
    677      !write(numout,*) 'dct low-level pre open: SWAP ' 
    678      !OPEN(UNIT=107,FILE='section_ijglobal.diadct', FORM='UNFORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD',convert='SWAP') 
    679       
    680      !write(numout,*) 'dct low-level pre open: NATIVE ' 
    681      !OPEN(UNIT=107,FILE='section_ijglobal.diadct', FORM='UNFORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD',convert='NATIVE') 
    682       
    683699     READ(107) isec 
    684700     CLOSE(107) 
     701     IF( lwp .AND. verbose ) write(numout,*) 'diadct readsec: BIG_ENDIAN, isec',isec 
     702 
     703     inquire(file='section_ijglobal.diadct',size=fsize) 
    685704      
    686705     CALL ctl_opn( numdct_in, 'section_ijglobal.diadct', 'OLD', 'UNFORMATTED', 'SEQUENTIAL', -1, numout, .TRUE. ) 
     706 
     707     !ok with  Daleys set up (ifort?) 
     708     !CLOSE(numdct_in) 
     709     ! 
     710     !!OPEN(UNIT=numdct_in,FILE='section_ijglobal.diadct', FORM='UNFORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD',convert='BIG_ENDIAN') 
     711     ! 
     712     !OPEN(UNIT=numdct_in,FILE='section_ijglobal.diadct', FORM='UNFORMATTED', ACCESS='SEQUENTIAL', STATUS='OLD',convert=TRIM(diadct_endian)) 
    687713  
    688714     !--------------- 
     
    711737        secs(jsec)%nb_point       = 0 
    712738 
    713         !read section's number / name / computing choices / classes / slopeSection / points number 
    714         !----------------------------------------------------------------------------------------- 
    715          
     739 
     740!        ! ok with Daleys set up (ifort?) 
     741!        !read section's number / name / computing choices / classes / slopeSection / points number 
     742!        !----------------------------------------------------------------------------------------- 
     743!        !JT 
     744!        CALL FTELL(numdct_in, floc) 
     745!         
     746!        IF( lwp .AND. verbose ) write(numout,*) 'diadct readsec: section_ijglobal.diadct size and location',fsize, floc 
     747!        !JT 
     748!        IF (floc .GE. fsize) THEN 
     749!  
     750!            IF( lwp .AND. verbose )THEN 
     751!               write(numout,*) 'diadct readsec: End of section_ijglobal.diadct: Exiting Gracefully' 
     752!               write(numout,*) 'diadct readsec: section_ijglobal.diadct: size and location',fsize, floc 
     753!            ENDIF             
     754!            EXIT  
     755!        ENDIF 
     756 
    716757        READ(numdct_in,iostat=iost) isec 
    717758        IF (iost .NE. 0 ) then 
     
    19992040     CHARACTER(len=3)      :: noos_sect_name             ! Classname  
    20002041     CHARACTER(len=25)      :: noos_var_sect_name 
    2001      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   noos_iom_dummy 
     2042     REAL(wp), ALLOCATABLE, DIMENSION(:) ::   noos_iom_dummy 
    20022043     INTEGER               :: IERR 
    20032044      
     
    20472088     IF ( nn_dct_iom_cont  .eq. 1) THEN 
    20482089         max_iom_val = 1.e10 
    2049          ALLOCATE( noos_iom_dummy(jpi,jpj,3),  STAT= ierr ) 
     2090         ALLOCATE( noos_iom_dummy(3),  STAT= ierr ) 
    20502091            IF( ierr /= 0 )   CALL ctl_stop( 'dia_dct_wri_NOOS: failed to allocate noos_iom_dummy array' ) 
    20512092     ENDIF 
     
    20882129         noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_trans' 
    20892130         IF (iom_use(noos_var_sect_name)) THEN 
    2090              noos_iom_dummy(:,:,:) = 0. 
     2131             noos_iom_dummy(:) = 0. 
    20912132             tmp_iom_output(:) = 0. 
    20922133              
     
    21132154             if ( tmp_iom_output(3) .ne.  tmp_iom_output(3) ) tmp_iom_output(1) =  max_iom_val*2 
    21142155              
    2115              noos_iom_dummy(:,:,1) = tmp_iom_output(1) 
    2116              noos_iom_dummy(:,:,2) = tmp_iom_output(2) 
    2117              noos_iom_dummy(:,:,3) = tmp_iom_output(3) 
     2156             noos_iom_dummy(1) = tmp_iom_output(1) 
     2157             noos_iom_dummy(2) = tmp_iom_output(2) 
     2158             noos_iom_dummy(3) = tmp_iom_output(3) 
    21182159              
    2119              !noos_iom_dummy(:,:,1) = (zsumclasses( 1)+zsumclasses( 2)) 
    2120              !noos_iom_dummy(:,:,2) = zsumclasses( 1) 
    2121              !noos_iom_dummy(:,:,3) = zsumclasses( 2) 
     2160             !noos_iom_dummy(1) = (zsumclasses( 1)+zsumclasses( 2)) 
     2161             !noos_iom_dummy(2) = zsumclasses( 1) 
     2162             !noos_iom_dummy(3) = zsumclasses( 2) 
    21222163              
    21232164              
    21242165              
    21252166             if ( lwp .AND. verbose ) WRITE(numout,*) 'dia_dct_wri_NOOS iom_put: ', kt,ksec, noos_var_sect_name 
    2126              CALL iom_put( noos_var_sect_name,  noos_iom_dummy ) 
     2167             CALL iom_put( noos_var_sect_name,  noos_iom_dummy(:) ) 
    21272168         ENDIF 
    21282169 
    21292170         noos_var_sect_name =  "noos_" // trim(noos_sect_name) // '_heat' 
    21302171         IF (iom_use(noos_var_sect_name)) THEN 
    2131              noos_iom_dummy(:,:,:) = 0. 
     2172             noos_iom_dummy(:) = 0. 
    21322173             tmp_iom_output(:) = 0. 
    21332174              
     
    21542195             if ( tmp_iom_output(3) .ne.  tmp_iom_output(3) ) tmp_iom_output(1) =  max_iom_val*2 
    21552196              
    2156              noos_iom_dummy(:,:,1) = tmp_iom_output(1) 
    2157              noos_iom_dummy(:,:,2) = tmp_iom_output(2) 
    2158              noos_iom_dummy(:,:,3) = tmp_iom_output(3) 
     2197             noos_iom_dummy(1) = tmp_iom_output(1) 
     2198             noos_iom_dummy(2) = tmp_iom_output(2) 
     2199             noos_iom_dummy(3) = tmp_iom_output(3) 
    21592200              
    2160              !noos_iom_dummy(:,:,1) = (zsumclasses( 7)+zsumclasses( 8)) 
    2161              !noos_iom_dummy(:,:,2) = zsumclasses( 7) 
    2162              !noos_iom_dummy(:,:,3) = zsumclasses( 8) 
     2201             !noos_iom_dummy(1) = (zsumclasses( 7)+zsumclasses( 8)) 
     2202             !noos_iom_dummy(2) = zsumclasses( 7) 
     2203             !noos_iom_dummy(3) = zsumclasses( 8) 
    21632204              
    21642205             if ( lwp .AND. verbose ) WRITE(numout,*) 'dia_dct_wri_NOOS iom_put: ', kt,ksec, noos_var_sect_name 
    2165              CALL iom_put(noos_var_sect_name,  noos_iom_dummy 
     2206             CALL iom_put(noos_var_sect_name,  noos_iom_dummy(:) 
    21662207         ENDIF 
    21672208 
    21682209         noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_salt' 
    21692210         IF (iom_use(noos_var_sect_name)) THEN 
    2170              noos_iom_dummy(:,:,:) = 0. 
     2211             noos_iom_dummy(:) = 0. 
    21712212             tmp_iom_output(:) = 0. 
    21722213              
     
    21942235             if ( tmp_iom_output(3) .ne.  tmp_iom_output(3) ) tmp_iom_output(1) =  max_iom_val*2 
    21952236              
    2196              noos_iom_dummy(:,:,1) = tmp_iom_output(1) 
    2197              noos_iom_dummy(:,:,2) = tmp_iom_output(2) 
    2198              noos_iom_dummy(:,:,3) = tmp_iom_output(3) 
     2237             noos_iom_dummy(1) = tmp_iom_output(1) 
     2238             noos_iom_dummy(2) = tmp_iom_output(2) 
     2239             noos_iom_dummy(3) = tmp_iom_output(3) 
    21992240              
    2200              !noos_iom_dummy(:,:,1) = (zsumclasses( 9)+zsumclasses( 10)) 
    2201              !noos_iom_dummy(:,:,2) = zsumclasses( 9) 
    2202              !noos_iom_dummy(:,:,3) = zsumclasses( 10) 
     2241             !noos_iom_dummy(1) = (zsumclasses( 9)+zsumclasses( 10)) 
     2242             !noos_iom_dummy(2) = zsumclasses( 9) 
     2243             !noos_iom_dummy(3) = zsumclasses( 10) 
    22032244              
    22042245             if ( lwp .AND. verbose ) WRITE(numout,*) 'dia_dct_wri_NOOS iom_put: ', kt,ksec, noos_var_sect_name 
    2205              CALL iom_put(noos_var_sect_name,  noos_iom_dummy ) 
    2206              noos_iom_dummy(:,:,:) = 0.          
     2246             CALL iom_put(noos_var_sect_name,  noos_iom_dummy(:) ) 
     2247             noos_iom_dummy(:) = 0.          
    22072248             tmp_iom_output(:) = 0. 
    22082249        ENDIF 
     
    23232364     CHARACTER(len=3)      :: noos_sect_name             ! Classname  
    23242365     CHARACTER(len=25)      :: noos_var_sect_name 
    2325      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   noos_iom_dummy 
     2366     REAL(wp), ALLOCATABLE, DIMENSION(:) ::   noos_iom_dummy 
    23262367     INTEGER               :: IERR 
    23272368      
     
    23692410     !IF ( nn_dct_iom_cont .EQ. 2 ) THEN 
    23702411     max_iom_val = 1.e10 
    2371      ALLOCATE( noos_iom_dummy(jpi,jpj,3),  STAT= ierr ) 
     2412     ALLOCATE( noos_iom_dummy(3),  STAT= ierr ) 
    23722413        IF( ierr /= 0 )   CALL ctl_stop( 'dia_dct_wri_NOOS: failed to allocate noos_iom_dummy array' ) 
    23732414 
    23742415     noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_trans' 
    23752416     IF (iom_use(noos_var_sect_name)) THEN 
    2376          noos_iom_dummy(:,:,:) = 0. 
     2417         noos_iom_dummy(:) = 0. 
    23772418         tmp_iom_output(:) = 0. 
    23782419          
     
    23992440         if ( tmp_iom_output(3) .ne.  tmp_iom_output(3) ) tmp_iom_output(1) =  max_iom_val*2 
    24002441          
    2401          noos_iom_dummy(:,:,1) = tmp_iom_output(1) 
    2402          noos_iom_dummy(:,:,2) = tmp_iom_output(2) 
    2403          noos_iom_dummy(:,:,3) = tmp_iom_output(3) 
     2442         noos_iom_dummy(1) = tmp_iom_output(1) 
     2443         noos_iom_dummy(2) = tmp_iom_output(2) 
     2444         noos_iom_dummy(3) = tmp_iom_output(3) 
    24042445          
    2405          !noos_iom_dummy(:,:,1) = (zsumclasses( 1)+zsumclasses( 2)) 
    2406          !noos_iom_dummy(:,:,2) = zsumclasses( 1) 
    2407          !noos_iom_dummy(:,:,3) = zsumclasses( 2) 
     2446         !noos_iom_dummy(1) = (zsumclasses( 1)+zsumclasses( 2)) 
     2447         !noos_iom_dummy(2) = zsumclasses( 1) 
     2448         !noos_iom_dummy(3) = zsumclasses( 2) 
    24082449          
    24092450          
    24102451          
    24112452         if ( lwp .AND. verbose ) WRITE(numout,*) 'dia_dct_wri_NOOS iom_put: ', kt,ksec, noos_var_sect_name,tmp_iom_output(1) 
    2412          CALL iom_put( noos_var_sect_name,  noos_iom_dummy  ) 
     2453         CALL iom_put( noos_var_sect_name,  noos_iom_dummy(:)  ) 
    24132454     ENDIF 
    24142455 
    24152456     noos_var_sect_name =  "noos_" // trim(noos_sect_name) // '_heat' 
    24162457     IF (iom_use(noos_var_sect_name)) THEN 
    2417          noos_iom_dummy(:,:,:) = 0. 
     2458         noos_iom_dummy(:) = 0. 
    24182459         tmp_iom_output(:) = 0. 
    24192460          
     
    24402481         if ( tmp_iom_output(3) .ne.  tmp_iom_output(3) ) tmp_iom_output(1) =  max_iom_val*2 
    24412482          
    2442          noos_iom_dummy(:,:,1) = tmp_iom_output(1) 
    2443          noos_iom_dummy(:,:,2) = tmp_iom_output(2) 
    2444          noos_iom_dummy(:,:,3) = tmp_iom_output(3) 
     2483         noos_iom_dummy(1) = tmp_iom_output(1) 
     2484         noos_iom_dummy(2) = tmp_iom_output(2) 
     2485         noos_iom_dummy(3) = tmp_iom_output(3) 
    24452486          
    2446          !noos_iom_dummy(:,:,1) = (zsumclasses( 7)+zsumclasses( 8)) 
    2447          !noos_iom_dummy(:,:,2) = zsumclasses( 7) 
    2448          !noos_iom_dummy(:,:,3) = zsumclasses( 8) 
     2487         !noos_iom_dummy(1) = (zsumclasses( 7)+zsumclasses( 8)) 
     2488         !noos_iom_dummy(2) = zsumclasses( 7) 
     2489         !noos_iom_dummy(3) = zsumclasses( 8) 
    24492490          
    24502491         if ( lwp .AND. verbose ) WRITE(numout,*) 'dia_dct_wri_NOOS iom_put: ', kt,ksec, noos_var_sect_name,tmp_iom_output(1) 
    2451          CALL iom_put(noos_var_sect_name,  noos_iom_dummy 
     2492         CALL iom_put(noos_var_sect_name,  noos_iom_dummy(:) 
    24522493     ENDIF 
    24532494 
    24542495     noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_salt' 
    24552496     IF (iom_use(noos_var_sect_name)) THEN 
    2456          noos_iom_dummy(:,:,:) = 0. 
     2497         noos_iom_dummy(:) = 0. 
    24572498         tmp_iom_output(:) = 0. 
    24582499          
     
    24802521         if ( tmp_iom_output(3) .ne.  tmp_iom_output(3) ) tmp_iom_output(1) =  max_iom_val*2 
    24812522          
    2482          noos_iom_dummy(:,:,1) = tmp_iom_output(1) 
    2483          noos_iom_dummy(:,:,2) = tmp_iom_output(2) 
    2484          noos_iom_dummy(:,:,3) = tmp_iom_output(3) 
     2523         noos_iom_dummy(1) = tmp_iom_output(1) 
     2524         noos_iom_dummy(2) = tmp_iom_output(2) 
     2525         noos_iom_dummy(3) = tmp_iom_output(3) 
    24852526          
    2486          !noos_iom_dummy(:,:,1) = (zsumclasses( 9)+zsumclasses( 10)) 
    2487          !noos_iom_dummy(:,:,2) = zsumclasses( 9) 
    2488          !noos_iom_dummy(:,:,3) = zsumclasses( 10) 
     2527         !noos_iom_dummy(1) = (zsumclasses( 9)+zsumclasses( 10)) 
     2528         !noos_iom_dummy(2) = zsumclasses( 9) 
     2529         !noos_iom_dummy(3) = zsumclasses( 10) 
    24892530          
    24902531         if ( lwp .AND. verbose ) WRITE(numout,*) 'dia_dct_wri_NOOS iom_put: ', kt,ksec, noos_var_sect_name,tmp_iom_output(1) 
    2491          CALL iom_put(noos_var_sect_name,  noos_iom_dummy  ) 
    2492          noos_iom_dummy(:,:,:) = 0.          
     2532         CALL iom_put(noos_var_sect_name,  noos_iom_dummy(:)  ) 
     2533         noos_iom_dummy(:) = 0.          
    24932534         tmp_iom_output(:) = 0. 
    24942535    ENDIF 
     
    25312572     CHARACTER(len=3)      :: noos_sect_name             ! Classname  
    25322573     CHARACTER(len=25)      :: noos_var_sect_name 
    2533      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   noos_iom_dummy 
     2574     REAL(wp), ALLOCATABLE, DIMENSION(:) ::   noos_iom_dummy 
    25342575     INTEGER               :: IERR 
    25352576     LOGICAL       ::   verbose      
     
    25512592     write (noos_sect_name, "(I03)")  ksec 
    25522593      
    2553      ALLOCATE( noos_iom_dummy(jpi,jpj,3),  STAT= ierr ) 
     2594     ALLOCATE( noos_iom_dummy(3),  STAT= ierr ) 
    25542595        IF( ierr /= 0 )   CALL ctl_stop( 'dia_dct_wri_NOOS_h: failed to allocate noos_iom_dummy array' ) 
    25552596 
  • NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/DIA/diaregmean.F90

    r15384 r15397  
    916916      REAL(wp), DIMENSION(jpi, jpj) :: internal_infield    ! Internal data field 
    917917      REAL(wp), ALLOCATABLE, DIMENSION(:) ::   zrmet_ave,zrmet_tot,zrmet_var,zrmet_cnt,zrmet_mask_id,zrmet_reg_id  ,zrmet_min,zrmet_max 
    918       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zrmet_out 
     918      REAL(wp), ALLOCATABLE, DIMENSION(:) ::   zrmet_out 
    919919      REAL(wp), ALLOCATABLE,   DIMENSION(:) ::   ave_mat,tot_mat,num_mat,var_mat,ssq_mat,cnt_mat,reg_id_mat,mask_id_mat    !: region_mask 
    920920      !REAL(wp), ALLOCATABLE,   DIMENSION(:) ::   min_mat,max_mat   !: region_mask 
     
    957957        IF( ierr /= 0 )   CALL ctl_stop( 'dia_wri_region_mean: failed to allocate zrmet_max array' ) 
    958958       
    959       ALLOCATE( zrmet_out(jpi,jpj,n_regions_output),  STAT= ierr ) 
     959      ALLOCATE( zrmet_out(n_regions_output),  STAT= ierr ) 
    960960        IF( ierr /= 0 )   CALL ctl_stop( 'dia_wri_region_mean: failed to allocate zrmet_reg_id array' ) 
    961961 
     
    11521152 
    11531153              ENDIF 
     1154          ENDIF 
    11541155               
    1155               DO jm = 1,nreg 
    1156                   zrmet_ave(    reg_ind_cnt) =     ave_mat(jm) 
    1157                   zrmet_tot(    reg_ind_cnt) =     tot_mat(jm) 
    1158                   zrmet_var(    reg_ind_cnt) =     var_mat(jm) 
    1159                   zrmet_cnt(    reg_ind_cnt) =     cnt_mat(jm) 
    1160                   !zrmet_min(    reg_ind_cnt) =     min_mat(jm) 
    1161                   !zrmet_max(    reg_ind_cnt) =     max_mat(jm) 
    1162                   zrmet_reg_id( reg_ind_cnt) =  reg_id_mat(jm) 
    1163                   zrmet_mask_id(reg_ind_cnt) = mask_id_mat(jm) 
    1164                  
    1165                   reg_ind_cnt = reg_ind_cnt + 1  
    1166               END DO 
    1167            
    1168           ENDIF 
     1156          ! JT Fixed, was not meant to be inside the lwp if block 
     1157          DO jm = 1,nreg 
     1158              zrmet_ave(    reg_ind_cnt) =     ave_mat(jm) 
     1159              zrmet_tot(    reg_ind_cnt) =     tot_mat(jm) 
     1160              zrmet_var(    reg_ind_cnt) =     var_mat(jm) 
     1161              zrmet_cnt(    reg_ind_cnt) =     cnt_mat(jm) 
     1162              !zrmet_min(    reg_ind_cnt) =     min_mat(jm) 
     1163              !zrmet_max(    reg_ind_cnt) =     max_mat(jm) 
     1164              zrmet_reg_id( reg_ind_cnt) =  reg_id_mat(jm) 
     1165              zrmet_mask_id(reg_ind_cnt) = mask_id_mat(jm) 
     1166             
     1167              reg_ind_cnt = reg_ind_cnt + 1  
     1168          END DO 
     1169       
    11691170         
    11701171          IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean about to deallocated arrays for ',kt,maskno 
     
    11861187      IF ( ln_diaregmean_nc ) THEN 
    11871188       
    1188           zrmet_out(:,:,:) = 0 
     1189          zrmet_out(:) = 0 
    11891190          zrmet_val = 0 
    11901191          tmp_name_iom = '' 
     
    11991200    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    12001201                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1201                 zrmet_out(:,:,jm) = zrmet_val 
     1202                zrmet_out(jm) = zrmet_val 
    12021203              END DO       
    1203               IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1,1,1) 
    1204               CALL iom_put(trim(tmp_name_iom), zrmet_out ) !zrmet_out(1,1,:) ) ) 
    1205               zrmet_out(:,:,:) = 0 
     1204              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1) 
     1205              CALL iom_put(trim(tmp_name_iom), zrmet_out(:) )  
     1206              zrmet_out(:) = 0 
    12061207              zrmet_val = 0 
    12071208              tmp_name_iom = '' 
     
    12151216    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    12161217                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1217                 zrmet_out(:,:,jm) = zrmet_val 
     1218                zrmet_out(jm) = zrmet_val 
    12181219              END DO 
    1219               IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1,1,1) 
    1220               CALL iom_put( trim(tmp_name_iom), zrmet_out ) !zrmet_out(1,1,:) ) ) 
    1221               zrmet_out(:,:,:) = 0 
     1220              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1) 
     1221              CALL iom_put( trim(tmp_name_iom), zrmet_out(:) )  
     1222              zrmet_out(:) = 0 
    12221223              zrmet_val = 0 
    12231224              tmp_name_iom = '' 
     
    12311232    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    12321233                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1233                 zrmet_out(:,:,jm) = zrmet_val 
     1234                zrmet_out(jm) = zrmet_val 
    12341235              END DO 
    1235               IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1,1,1) 
    1236               CALL iom_put( trim(tmp_name_iom), zrmet_out ) !zrmet_out(1,1,:) ) ) 
    1237               zrmet_out(:,:,:) = 0 
     1236              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1) 
     1237              CALL iom_put( trim(tmp_name_iom), zrmet_out(:) ) 
     1238              zrmet_out(:) = 0 
    12381239              zrmet_val = 0 
    12391240              tmp_name_iom = '' 
     
    12471248    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    12481249                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1249                 zrmet_out(:,:,jm) = zrmet_val 
     1250                zrmet_out(jm) = zrmet_val 
    12501251              END DO 
    1251               IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1,1,1) 
    1252               CALL iom_put( trim(tmp_name_iom), zrmet_out ) !zrmet_out(1,1,:) ) ) 
    1253               zrmet_out(:,:,:) = 0 
     1252              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1) 
     1253              CALL iom_put( trim(tmp_name_iom), zrmet_out(:) ) 
     1254              zrmet_out(:) = 0 
    12541255              zrmet_val = 0 
    12551256              tmp_name_iom = '' 
     
    12631264    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    12641265                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1265                 zrmet_out(:,:,jm) = zrmet_val 
     1266                zrmet_out(jm) = zrmet_val 
    12661267              END DO 
    1267               IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1,1,1) 
    1268               CALL iom_put( trim(tmp_name_iom), zrmet_out ) !zrmet_out(1,1,:) ) ) 
    1269               zrmet_out(:,:,:) = 0 
     1268              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom), zrmet_out(1) 
     1269              CALL iom_put( trim(tmp_name_iom), zrmet_out(:) )  
     1270              zrmet_out(:) = 0 
    12701271              zrmet_val = 0 
    12711272              tmp_name_iom = '' 
     
    12791280    !            if (zrmet_val .GT. 1e16) zrmet_val = 1e16 
    12801281                if (zrmet_val .NE. zrmet_val) zrmet_val = 1e20 
    1281                 zrmet_out(:,:,jm) = zrmet_val 
     1282                zrmet_out(jm) = zrmet_val 
    12821283              END DO 
    12831284              IF(lwp .AND. verbose) WRITE(numout,*) 'dia_regmean iom_put tmp_name_iom : ',trim(tmp_name_iom)           
    1284               CALL iom_put( trim(tmp_name_iom), zrmet_out ) !zrmet_out(1,1,:) ) ) 
    1285               zrmet_out(:,:,:) = 0 
     1285              CALL iom_put( trim(tmp_name_iom), zrmet_out(:) ) 
     1286              zrmet_out(:) = 0 
    12861287              zrmet_val = 0 
    12871288              tmp_name_iom = '' 
Note: See TracChangeset for help on using the changeset viewer.