- Timestamp:
- 2021-10-19T10:22:46+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/DIA/diadct.F90
r15378 r15397 84 84 LOGICAL, PUBLIC :: ln_diadct 85 85 86 CHARACTER(len=60), PUBLIC :: diadct_endian 87 86 88 ! JT 87 89 … … 175 177 !! 176 178 !!--------------------------------------------------------------------- 179 180 ! 177 181 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 179 183 INTEGER :: ios,jsec ! Local integer output status for namelist read 180 184 CHARACTER(len=3) :: jsec_str ! name of the jsec 181 185 LOGICAL :: verbose 182 186 verbose = ln_dct_verbose!.false. 187 188 diadct_endian='BIG_ENDIAN' 183 189 184 190 IF( ln_timing ) CALL timing_start('dia_dct_init') … … 649 655 INTEGER :: jsec, jpt ! dummy loop indices 650 656 INTEGER :: ierr ! error for allocate 651 657 !JT 658 INTEGER :: fsize, floc ! exit section_ijglobal.diadct gracefully. 659 !JT 652 660 INTEGER, DIMENSION(2) :: icoord 653 661 CHARACTER(len=160) :: clname !filename … … 673 681 674 682 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 675 698 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 683 699 READ(107) isec 684 700 CLOSE(107) 701 IF( lwp .AND. verbose ) write(numout,*) 'diadct readsec: BIG_ENDIAN, isec',isec 702 703 inquire(file='section_ijglobal.diadct',size=fsize) 685 704 686 705 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)) 687 713 688 714 !--------------- … … 711 737 secs(jsec)%nb_point = 0 712 738 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 716 757 READ(numdct_in,iostat=iost) isec 717 758 IF (iost .NE. 0 ) then … … 1999 2040 CHARACTER(len=3) :: noos_sect_name ! Classname 2000 2041 CHARACTER(len=25) :: noos_var_sect_name 2001 REAL(wp), ALLOCATABLE, DIMENSION(: ,:,:) :: noos_iom_dummy2042 REAL(wp), ALLOCATABLE, DIMENSION(:) :: noos_iom_dummy 2002 2043 INTEGER :: IERR 2003 2044 … … 2047 2088 IF ( nn_dct_iom_cont .eq. 1) THEN 2048 2089 max_iom_val = 1.e10 2049 ALLOCATE( noos_iom_dummy( jpi,jpj,3), STAT= ierr )2090 ALLOCATE( noos_iom_dummy(3), STAT= ierr ) 2050 2091 IF( ierr /= 0 ) CALL ctl_stop( 'dia_dct_wri_NOOS: failed to allocate noos_iom_dummy array' ) 2051 2092 ENDIF … … 2088 2129 noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_trans' 2089 2130 IF (iom_use(noos_var_sect_name)) THEN 2090 noos_iom_dummy(: ,:,:) = 0.2131 noos_iom_dummy(:) = 0. 2091 2132 tmp_iom_output(:) = 0. 2092 2133 … … 2113 2154 if ( tmp_iom_output(3) .ne. tmp_iom_output(3) ) tmp_iom_output(1) = max_iom_val*2 2114 2155 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) 2118 2159 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) 2122 2163 2123 2164 2124 2165 2125 2166 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(:) ) 2127 2168 ENDIF 2128 2169 2129 2170 noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_heat' 2130 2171 IF (iom_use(noos_var_sect_name)) THEN 2131 noos_iom_dummy(: ,:,:) = 0.2172 noos_iom_dummy(:) = 0. 2132 2173 tmp_iom_output(:) = 0. 2133 2174 … … 2154 2195 if ( tmp_iom_output(3) .ne. tmp_iom_output(3) ) tmp_iom_output(1) = max_iom_val*2 2155 2196 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) 2159 2200 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) 2163 2204 2164 2205 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(:) ) 2166 2207 ENDIF 2167 2208 2168 2209 noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_salt' 2169 2210 IF (iom_use(noos_var_sect_name)) THEN 2170 noos_iom_dummy(: ,:,:) = 0.2211 noos_iom_dummy(:) = 0. 2171 2212 tmp_iom_output(:) = 0. 2172 2213 … … 2194 2235 if ( tmp_iom_output(3) .ne. tmp_iom_output(3) ) tmp_iom_output(1) = max_iom_val*2 2195 2236 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) 2199 2240 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) 2203 2244 2204 2245 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. 2207 2248 tmp_iom_output(:) = 0. 2208 2249 ENDIF … … 2323 2364 CHARACTER(len=3) :: noos_sect_name ! Classname 2324 2365 CHARACTER(len=25) :: noos_var_sect_name 2325 REAL(wp), ALLOCATABLE, DIMENSION(: ,:,:) :: noos_iom_dummy2366 REAL(wp), ALLOCATABLE, DIMENSION(:) :: noos_iom_dummy 2326 2367 INTEGER :: IERR 2327 2368 … … 2369 2410 !IF ( nn_dct_iom_cont .EQ. 2 ) THEN 2370 2411 max_iom_val = 1.e10 2371 ALLOCATE( noos_iom_dummy( jpi,jpj,3), STAT= ierr )2412 ALLOCATE( noos_iom_dummy(3), STAT= ierr ) 2372 2413 IF( ierr /= 0 ) CALL ctl_stop( 'dia_dct_wri_NOOS: failed to allocate noos_iom_dummy array' ) 2373 2414 2374 2415 noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_trans' 2375 2416 IF (iom_use(noos_var_sect_name)) THEN 2376 noos_iom_dummy(: ,:,:) = 0.2417 noos_iom_dummy(:) = 0. 2377 2418 tmp_iom_output(:) = 0. 2378 2419 … … 2399 2440 if ( tmp_iom_output(3) .ne. tmp_iom_output(3) ) tmp_iom_output(1) = max_iom_val*2 2400 2441 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) 2404 2445 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) 2408 2449 2409 2450 2410 2451 2411 2452 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(:) ) 2413 2454 ENDIF 2414 2455 2415 2456 noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_heat' 2416 2457 IF (iom_use(noos_var_sect_name)) THEN 2417 noos_iom_dummy(: ,:,:) = 0.2458 noos_iom_dummy(:) = 0. 2418 2459 tmp_iom_output(:) = 0. 2419 2460 … … 2440 2481 if ( tmp_iom_output(3) .ne. tmp_iom_output(3) ) tmp_iom_output(1) = max_iom_val*2 2441 2482 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) 2445 2486 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) 2449 2490 2450 2491 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(:) ) 2452 2493 ENDIF 2453 2494 2454 2495 noos_var_sect_name = "noos_" // trim(noos_sect_name) // '_salt' 2455 2496 IF (iom_use(noos_var_sect_name)) THEN 2456 noos_iom_dummy(: ,:,:) = 0.2497 noos_iom_dummy(:) = 0. 2457 2498 tmp_iom_output(:) = 0. 2458 2499 … … 2480 2521 if ( tmp_iom_output(3) .ne. tmp_iom_output(3) ) tmp_iom_output(1) = max_iom_val*2 2481 2522 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) 2485 2526 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) 2489 2530 2490 2531 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. 2493 2534 tmp_iom_output(:) = 0. 2494 2535 ENDIF … … 2531 2572 CHARACTER(len=3) :: noos_sect_name ! Classname 2532 2573 CHARACTER(len=25) :: noos_var_sect_name 2533 REAL(wp), ALLOCATABLE, DIMENSION(: ,:,:) :: noos_iom_dummy2574 REAL(wp), ALLOCATABLE, DIMENSION(:) :: noos_iom_dummy 2534 2575 INTEGER :: IERR 2535 2576 LOGICAL :: verbose … … 2551 2592 write (noos_sect_name, "(I03)") ksec 2552 2593 2553 ALLOCATE( noos_iom_dummy( jpi,jpj,3), STAT= ierr )2594 ALLOCATE( noos_iom_dummy(3), STAT= ierr ) 2554 2595 IF( ierr /= 0 ) CALL ctl_stop( 'dia_dct_wri_NOOS_h: failed to allocate noos_iom_dummy array' ) 2555 2596
Note: See TracChangeset
for help on using the changeset viewer.