- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/IOM/iom.F90
r12178 r12928 29 29 USE lib_mpp ! MPP library 30 30 #if defined key_iomput 31 USE sbc_oce , ONLY : nn_fsbc ! ocean space and time domain 32 USE trc_oce , ONLY : nn_dttrc ! !: frequency of step on passive tracers 31 USE sbc_oce , ONLY : nn_fsbc, ght_abl, ghw_abl, e3t_abl, e3w_abl, jpka, jpkam1 33 32 USE icb_oce , ONLY : nclasses, class_num ! !: iceberg classes 34 33 #if defined key_si3 … … 46 45 #endif 47 46 USE lib_fortran 48 USE diu rnal_bulk, ONLY : ln_diurnal_only, ln_diurnal47 USE diu_bulk, ONLY : ln_diurnal_only, ln_diurnal 49 48 50 49 IMPLICIT NONE … … 56 55 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .FALSE. !: iom_put flag 57 56 #endif 58 PUBLIC iom_init, iom_ swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get57 PUBLIC iom_init, iom_init_closedef, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_get_var 59 58 PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 60 PUBLIC iom_use, iom_context_finalize, iom_ miss_val59 PUBLIC iom_use, iom_context_finalize, iom_update_file_name, iom_miss_val 61 60 62 61 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 63 62 PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_get_123d 64 PRIVATE iom_p1d, iom_p2d, iom_p3d 63 PRIVATE iom_p1d, iom_p2d, iom_p3d, iom_p4d 65 64 #if defined key_iomput 66 65 PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 67 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_ update_file_name, iom_sdate66 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_sdate 68 67 PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active 69 68 # endif … … 83 82 END INTERFACE 84 83 INTERFACE iom_put 85 MODULE PROCEDURE iom_p0d, iom_p1d, iom_p2d, iom_p3d 84 MODULE PROCEDURE iom_p0d, iom_p1d, iom_p2d, iom_p3d, iom_p4d 86 85 END INTERFACE iom_put 87 86 87 !! * Substitutions 88 # include "do_loop_substitute.h90" 88 89 !!---------------------------------------------------------------------- 89 90 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 93 94 CONTAINS 94 95 95 SUBROUTINE iom_init( cdname, fname, ld_tmppatch )96 SUBROUTINE iom_init( cdname, fname, ld_tmppatch, ld_closedef ) 96 97 !!---------------------------------------------------------------------- 97 98 !! *** ROUTINE *** … … 103 104 CHARACTER(len=*), OPTIONAL, INTENT(in) :: fname 104 105 LOGICAL , OPTIONAL, INTENT(in) :: ld_tmppatch 106 LOGICAL , OPTIONAL, INTENT(in) :: ld_closedef 105 107 #if defined key_iomput 106 108 ! … … 108 110 TYPE(xios_date) :: start_date 109 111 CHARACTER(len=lc) :: clname 110 INTEGER :: ji, jkmin 112 INTEGER :: irefyear, irefmonth, irefday 113 INTEGER :: ji 111 114 LOGICAL :: llrst_context ! is context related to restart 112 115 ! 113 116 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zt_bnds, zw_bnds 117 REAL(wp), DIMENSION(2,jpkam1) :: za_bnds ! ABL vertical boundaries 114 118 LOGICAL :: ll_tmppatch = .TRUE. !: seb: patch before we remove periodicity 115 119 INTEGER :: nldi_save, nlei_save !: and close boundaries in output files 116 120 INTEGER :: nldj_save, nlej_save !: 121 LOGICAL :: ll_closedef = .TRUE. 117 122 !!---------------------------------------------------------------------- 118 123 ! … … 129 134 IF( njmpp + jpj - 1 == jpjglo ) nlej = jpj 130 135 ENDIF 136 IF ( PRESENT(ld_closedef) ) ll_closedef = ld_closedef 131 137 ! 132 138 ALLOCATE( zt_bnds(2,jpk), zw_bnds(2,jpk) ) … … 139 145 140 146 ! Calendar type is now defined in xml file 147 IF (.NOT.(xios_getvar('ref_year' ,irefyear ))) irefyear = 1900 148 IF (.NOT.(xios_getvar('ref_month',irefmonth))) irefmonth = 01 149 IF (.NOT.(xios_getvar('ref_day' ,irefday ))) irefday = 01 150 141 151 SELECT CASE ( nleapy ) ! Choose calendar for IOIPSL 142 CASE ( 1) ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date( 1900,01,01,00,00,00), &152 CASE ( 1) ; CALL xios_define_calendar( TYPE = "Gregorian", time_origin = xios_date(irefyear,irefmonth,irefday,00,00,00), & 143 153 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 144 CASE ( 0) ; CALL xios_define_calendar( TYPE = "NoLeap" , time_origin = xios_date( 1900,01,01,00,00,00), &154 CASE ( 0) ; CALL xios_define_calendar( TYPE = "NoLeap" , time_origin = xios_date(irefyear,irefmonth,irefday,00,00,00), & 145 155 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 146 CASE (30) ; CALL xios_define_calendar( TYPE = "D360" , time_origin = xios_date( 1900,01,01,00,00,00), &156 CASE (30) ; CALL xios_define_calendar( TYPE = "D360" , time_origin = xios_date(irefyear,irefmonth,irefday,00,00,00), & 147 157 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 148 158 END SELECT … … 195 205 ! vertical grid definition 196 206 IF(.NOT.llrst_context) THEN 197 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 198 CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 199 CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 200 CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 201 207 CALL iom_set_axis_attr( "deptht", paxis = gdept_1d ) 208 CALL iom_set_axis_attr( "depthu", paxis = gdept_1d ) 209 CALL iom_set_axis_attr( "depthv", paxis = gdept_1d ) 210 CALL iom_set_axis_attr( "depthw", paxis = gdepw_1d ) 211 212 ! ABL 213 IF( .NOT. ALLOCATED(ght_abl) ) THEN ! force definition for xml files (xios) 214 ALLOCATE( ght_abl(jpka), ghw_abl(jpka), e3t_abl(jpka), e3w_abl(jpka) ) ! default allocation needed by iom 215 ght_abl(:) = -1._wp ; ghw_abl(:) = -1._wp 216 e3t_abl(:) = -1._wp ; e3w_abl(:) = -1._wp 217 ENDIF 218 CALL iom_set_axis_attr( "ght_abl", ght_abl(2:jpka) ) 219 CALL iom_set_axis_attr( "ghw_abl", ghw_abl(2:jpka) ) 220 202 221 ! Add vertical grid bounds 203 jkmin = MIN(2,jpk) ! in case jpk=1 (i.e. sas2D) 204 zt_bnds(2,: ) = gdept_1d(:) 205 zt_bnds(1,jkmin:jpk) = gdept_1d(1:jpkm1) 206 zt_bnds(1,1 ) = gdept_1d(1) - e3w_1d(1) 207 zw_bnds(1,: ) = gdepw_1d(:) 208 zw_bnds(2,1:jpkm1 ) = gdepw_1d(jkmin:jpk) 209 zw_bnds(2,jpk: ) = gdepw_1d(jpk) + e3t_1d(jpk) 210 CALL iom_set_axis_attr( "deptht", bounds=zw_bnds ) 211 CALL iom_set_axis_attr( "depthu", bounds=zw_bnds ) 212 CALL iom_set_axis_attr( "depthv", bounds=zw_bnds ) 213 CALL iom_set_axis_attr( "depthw", bounds=zt_bnds ) 222 zt_bnds(2,: ) = gdept_1d(:) 223 zt_bnds(1,2:jpk ) = gdept_1d(1:jpkm1) 224 zt_bnds(1,1 ) = gdept_1d(1) - e3w_1d(1) 225 zw_bnds(1,: ) = gdepw_1d(:) 226 zw_bnds(2,1:jpkm1) = gdepw_1d(2:jpk) 227 zw_bnds(2,jpk: ) = gdepw_1d(jpk) + e3t_1d(jpk) 228 CALL iom_set_axis_attr( "deptht", bounds=zw_bnds ) 229 CALL iom_set_axis_attr( "depthu", bounds=zw_bnds ) 230 CALL iom_set_axis_attr( "depthv", bounds=zw_bnds ) 231 CALL iom_set_axis_attr( "depthw", bounds=zt_bnds ) 232 233 ! ABL 234 za_bnds(1,:) = ghw_abl(1:jpkam1) 235 za_bnds(2,:) = ghw_abl(2:jpka ) 236 CALL iom_set_axis_attr( "ght_abl", bounds=za_bnds ) 237 za_bnds(1,:) = ght_abl(2:jpka ) 238 za_bnds(2,:) = ght_abl(2:jpka ) + e3w_abl(2:jpka) 239 CALL iom_set_axis_attr( "ghw_abl", bounds=za_bnds ) 240 214 241 CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,jpnfl) /) ) 215 242 # if defined key_si3 … … 223 250 CALL iom_set_axis_attr( "icbcla", class_num ) 224 251 CALL iom_set_axis_attr( "iax_20C", (/ REAL(20,wp) /) ) ! strange syntaxe and idea... 252 CALL iom_set_axis_attr( "iax_26C", (/ REAL(26,wp) /) ) ! strange syntaxe and idea... 225 253 CALL iom_set_axis_attr( "iax_28C", (/ REAL(28,wp) /) ) ! strange syntaxe and idea... 254 CALL iom_set_axis_attr( "basin" , (/ (REAL(ji,wp), ji=1,5) /) ) 226 255 ENDIF 227 256 ! … … 243 272 ENDIF 244 273 ! 245 ! end file definition246 dtime%second = r dt274 ! set time step length 275 dtime%second = rn_Dt 247 276 CALL xios_set_timestep( dtime ) 248 CALL xios_close_context_definition() 249 CALL xios_update_calendar( 0 ) 277 ! 278 ! conditional closure of context definition 279 IF ( ll_closedef ) CALL iom_init_closedef 250 280 ! 251 281 DEALLOCATE( zt_bnds, zw_bnds ) … … 258 288 ! 259 289 END SUBROUTINE iom_init 290 291 SUBROUTINE iom_init_closedef 292 !!---------------------------------------------------------------------- 293 !! *** SUBROUTINE iom_init_closedef *** 294 !!---------------------------------------------------------------------- 295 !! 296 !! ** Purpose : Closure of context definition 297 !! 298 !!---------------------------------------------------------------------- 299 300 #if defined key_iomput 301 CALL xios_close_context_definition() 302 CALL xios_update_calendar( 0 ) 303 #else 304 IF( .FALSE. ) WRITE(numout,*) 'iom_init_closedef: should not see this' ! useless statement to avoid compilation warnings 305 #endif 306 307 END SUBROUTINE iom_init_closedef 260 308 261 309 SUBROUTINE iom_set_rstw_var_active(field) … … 361 409 IF(cdmdl == "OPA") THEN 362 410 !from restart.F90 363 CALL iom_set_rstw_var_active("r dt")411 CALL iom_set_rstw_var_active("rn_Dt") 364 412 IF ( .NOT. ln_diurnal_only ) THEN 365 413 CALL iom_set_rstw_var_active('ub' ) … … 375 423 CALL iom_set_rstw_var_active('sshn') 376 424 CALL iom_set_rstw_var_active('rhop') 377 ! extra variable needed for the ice sheet coupling378 IF ( ln_iscpl ) THEN379 CALL iom_set_rstw_var_active('tmask')380 CALL iom_set_rstw_var_active('umask')381 CALL iom_set_rstw_var_active('vmask')382 CALL iom_set_rstw_var_active('smask')383 CALL iom_set_rstw_var_active('e3t_n')384 CALL iom_set_rstw_var_active('e3u_n')385 CALL iom_set_rstw_var_active('e3v_n')386 CALL iom_set_rstw_var_active('gdepw_n')387 END IF388 425 ENDIF 389 426 IF(ln_diurnal) CALL iom_set_rstw_var_active('Dsst') … … 410 447 411 448 i = 0 412 i = i + 1; fields(i)%vname="r dt"; fields(i)%grid="grid_scalar"449 i = i + 1; fields(i)%vname="rn_Dt"; fields(i)%grid="grid_scalar" 413 450 i = i + 1; fields(i)%vname="un"; fields(i)%grid="grid_N_3D" 414 451 i = i + 1; fields(i)%vname="ub"; fields(i)%grid="grid_N_3D" … … 627 664 628 665 629 SUBROUTINE iom_open( cdname, kiomid, ldwrt, kdom, ldstop, ldiof, kdlev )666 SUBROUTINE iom_open( cdname, kiomid, ldwrt, kdom, ldstop, ldiof, kdlev, cdcomp ) 630 667 !!--------------------------------------------------------------------- 631 668 !! *** SUBROUTINE iom_open *** … … 640 677 LOGICAL , INTENT(in ), OPTIONAL :: ldiof ! Interp On the Fly, needed for AGRIF (default = .FALSE.) 641 678 INTEGER , INTENT(in ), OPTIONAL :: kdlev ! number of vertical levels 679 CHARACTER(len=3), INTENT(in ), OPTIONAL :: cdcomp ! name of component calling iom_nf90_open 642 680 ! 643 681 CHARACTER(LEN=256) :: clname ! the name of the file based on cdname [[+clcpu]+clcpu] … … 694 732 clname = trim(cdname) 695 733 IF ( .NOT. Agrif_Root() .AND. .NOT. lliof ) THEN 696 !FUS iln = INDEX(clname,'/') 697 iln = INDEX(clname,'/',BACK=.true.) ! FUS: to insert the nest index at the right location within the string, the last / has to be found (search from the right to left) 734 iln = INDEX(clname,'/') 698 735 cltmpn = clname(1:iln) 699 736 clname = clname(iln+1:LEN_TRIM(clname)) … … 786 823 ENDIF 787 824 IF( istop == nstop ) THEN ! no error within this routine 788 CALL iom_nf90_open( clname, kiomid, llwrt, llok, idompar, kdlev = kdlev )825 CALL iom_nf90_open( clname, kiomid, llwrt, llok, idompar, kdlev = kdlev, cdcomp = cdcomp ) 789 826 ENDIF 790 827 ! … … 806 843 CHARACTER(LEN=100) :: clinfo ! info character 807 844 !--------------------------------------------------------------------- 845 ! 846 IF( iom_open_init == 0 ) RETURN ! avoid to use iom_file(jf)%nfid that us not yet initialized 808 847 ! 809 848 clinfo = ' iom_close ~~~ ' … … 1140 1179 WRITE(cldmspc , fmt='(i1)') idmspc 1141 1180 ! 1142 IF( idmspc < irankpv ) THEN 1143 CALL ctl_stop( TRIM(clinfo), 'The file has only '//cldmspc//' spatial dimension', & 1144 & 'it is impossible to read a '//clrankpv//'D array from this file...' ) 1145 ELSEIF( idmspc == irankpv ) THEN 1181 !!GS: we consider 2D data as 3D data with vertical dim size = 1 1182 !IF( idmspc < irankpv ) THEN 1183 ! CALL ctl_stop( TRIM(clinfo), 'The file has only '//cldmspc//' spatial dimension', & 1184 ! & 'it is impossible to read a '//clrankpv//'D array from this file...' ) 1185 !ELSEIF( idmspc == irankpv ) THEN 1186 IF( idmspc == irankpv ) THEN 1146 1187 IF( PRESENT(pv_r1d) .AND. idom /= jpdom_unknown ) & 1147 1188 & CALL ctl_stop( TRIM(clinfo), 'case not coded...You must use jpdom_unknown' ) … … 1340 1381 END SUBROUTINE iom_get_123d 1341 1382 1383 SUBROUTINE iom_get_var( cdname, z2d) 1384 CHARACTER(LEN=*), INTENT(in ) :: cdname 1385 REAL(wp), DIMENSION(jpi,jpj) :: z2d 1386 #if defined key_iomput 1387 IF( xios_field_is_active( cdname, at_current_timestep_arg = .TRUE. ) ) THEN 1388 z2d(:,:) = 0._wp 1389 CALL xios_recv_field( cdname, z2d) 1390 ENDIF 1391 #else 1392 IF( .FALSE. ) WRITE(numout,*) cdname, z2d ! useless test to avoid compilation warnings 1393 #endif 1394 END SUBROUTINE iom_get_var 1395 1342 1396 1343 1397 FUNCTION iom_getszuld ( kiomid ) … … 1709 1763 END SUBROUTINE iom_p3d 1710 1764 1765 SUBROUTINE iom_p4d( cdname, pfield4d ) 1766 CHARACTER(LEN=*) , INTENT(in) :: cdname 1767 REAL(wp), DIMENSION(:,:,:,:), INTENT(in) :: pfield4d 1768 #if defined key_iomput 1769 CALL xios_send_field(cdname, pfield4d) 1770 #else 1771 IF( .FALSE. ) WRITE(numout,*) cdname, pfield4d ! useless test to avoid compilation warnings 1772 #endif 1773 END SUBROUTINE iom_p4d 1774 1775 1711 1776 #if defined key_iomput 1712 1777 !!---------------------------------------------------------------------- … … 1941 2006 ! 1942 2007 INTEGER :: ji, jj, jn, ni, nj 1943 INTEGER :: icnr, jcnr 1944 ! 2008 INTEGER :: icnr, jcnr ! Offset such that the vertex coordinate (i+icnr,j+jcnr) 2009 ! ! represents the bottom-left corner of cell (i,j) 1945 2010 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: z_bnds ! Lat/lon coordinates of the vertices of cell (i,j) 1946 2011 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: z_fld ! Working array to determine where to rotate cells … … 2051 2116 ALLOCATE( zlon(ni*nj) ) ; zlon(:) = 0._wp 2052 2117 ! 2053 CALL dom_ngb( -168.53, 65.03, ix, iy, 'T' ) ! i-line that passes through Bering Strait: Reference latitude (used in plots)2054 !CALL dom_ngb( 180., 90., ix, iy, 'T' ) ! i-line that passes near the North Pole : Reference latitude (used in plots)2118 ! CALL dom_ngb( -168.53, 65.03, ix, iy, 'T' ) ! i-line that passes through Bering Strait: Reference latitude (used in plots) 2119 CALL dom_ngb( 180., 90., ix, iy, 'T' ) ! i-line that passes near the North Pole : Reference latitude (used in plots) 2055 2120 CALL iom_set_domain_attr("gznl", ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 2056 2121 CALL iom_set_domain_attr("gznl", data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 2057 2122 CALL iom_set_domain_attr("gznl", lonvalue = zlon, & 2058 2123 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 2059 CALL iom_set_zoom_domain_attr("znl_T", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 2060 CALL iom_set_zoom_domain_attr("znl_W", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 2124 CALL iom_set_zoom_domain_attr("ptr", ibegin=ix-1, jbegin=0, ni=1, nj=jpjglo) 2061 2125 ! 2062 2126 CALL iom_update_file_name('ptr') … … 2113 2177 f_op%timestep = nn_fsbc ; f_of%timestep = 0 ; CALL iom_set_field_attr('SBC' , freq_op=f_op, freq_offset=f_of) 2114 2178 f_op%timestep = nn_fsbc ; f_of%timestep = 0 ; CALL iom_set_field_attr('SBC_scalar' , freq_op=f_op, freq_offset=f_of) 2115 f_op%timestep = nn_dttrc ; f_of%timestep = 0 ; CALL iom_set_field_attr('ptrc_T' , freq_op=f_op, freq_offset=f_of) 2116 f_op%timestep = nn_dttrc ; f_of%timestep = 0 ; CALL iom_set_field_attr('diad_T' , freq_op=f_op, freq_offset=f_of) 2179 f_op%timestep = nn_fsbc ; f_of%timestep = 0 ; CALL iom_set_field_attr('ABL' , freq_op=f_op, freq_offset=f_of) 2117 2180 2118 2181 ! output file names (attribut: name) … … 2239 2302 CHARACTER(LEN=20) :: clfreq 2240 2303 CHARACTER(LEN=20) :: cldate 2241 CHARACTER(LEN=256) :: cltmpn !FUS needed for correct path with AGRIF2242 INTEGER :: iln !FUS needed for correct path with AGRIF2243 2304 INTEGER :: idx 2244 2305 INTEGER :: jn … … 2297 2358 idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 2298 2359 DO WHILE ( idx /= 0 ) 2299 cldate = iom_sdate( fjulday - r dt / rday )2360 cldate = iom_sdate( fjulday - rn_Dt / rday ) 2300 2361 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+11:LEN_TRIM(clname)) 2301 2362 idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') … … 2304 2365 idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 2305 2366 DO WHILE ( idx /= 0 ) 2306 cldate = iom_sdate( fjulday - r dt / rday, ldfull = .TRUE. )2367 cldate = iom_sdate( fjulday - rn_Dt / rday, ldfull = .TRUE. ) 2307 2368 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+15:LEN_TRIM(clname)) 2308 2369 idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') … … 2311 2372 idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 2312 2373 DO WHILE ( idx /= 0 ) 2313 cldate = iom_sdate( fjulday + r dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. )2374 cldate = iom_sdate( fjulday + rn_Dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 2314 2375 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+9:LEN_TRIM(clname)) 2315 2376 idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') … … 2318 2379 idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 2319 2380 DO WHILE ( idx /= 0 ) 2320 cldate = iom_sdate( fjulday + r dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. )2381 cldate = iom_sdate( fjulday + rn_Dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 2321 2382 clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+13:LEN_TRIM(clname)) 2322 2383 idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 2323 2384 END DO 2324 2385 ! 2325 !FUS IF( jn == 1 .AND. TRIM(Agrif_CFixed()) /= '0' ) clname = TRIM(Agrif_CFixed())//"_"//TRIM(clname) 2326 !FUS see comment line 700 2327 IF( jn == 1 .AND. TRIM(Agrif_CFixed()) /= '0' ) THEN 2328 iln = INDEX(clname,'/',BACK=.true.) 2329 cltmpn = clname(1:iln) 2330 clname = clname(iln+1:LEN_TRIM(clname)) 2331 clname = TRIM(cltmpn)//TRIM(Agrif_CFixed())//'_'//TRIM(clname) 2332 ENDIF 2333 !FUS 2386 IF( jn == 1 .AND. TRIM(Agrif_CFixed()) /= '0' ) clname = TRIM(Agrif_CFixed())//"_"//TRIM(clname) 2334 2387 IF( jn == 1 ) CALL iom_set_file_attr( cdid, name = clname ) 2335 2388 IF( jn == 2 ) CALL iom_set_file_attr( cdid, name_suffix = clname ) … … 2410 2463 END SUBROUTINE iom_context_finalize 2411 2464 2465 SUBROUTINE iom_update_file_name( cdid ) 2466 CHARACTER(LEN=*), INTENT(in) :: cdid 2467 IF( .FALSE. ) WRITE(numout,*) cdid ! useless test to avoid compilation warnings 2468 END SUBROUTINE iom_update_file_name 2469 2412 2470 #endif 2413 2471 … … 2429 2487 #else 2430 2488 IF( .FALSE. ) WRITE(numout,*) cdname, pmiss_val ! useless test to avoid compilation warnings 2489 IF( .FALSE. ) pmiss_val = 0._wp ! useless assignment to avoid compilation warnings 2431 2490 #endif 2432 2491 END SUBROUTINE iom_miss_val
Note: See TracChangeset
for help on using the changeset viewer.