Changeset 5965 for branches/2014/dev_r4650_UKMO14.5_SST_BIAS_CORRECTION/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
- Timestamp:
- 2015-12-01T16:35:30+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO14.5_SST_BIAS_CORRECTION/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
r4205 r5965 18 18 USE ice ! sea-ice variables 19 19 USE oce , ONLY : snwice_mass, snwice_mass_b 20 USE par_ice ! sea-ice parameters21 20 USE dom_oce ! ocean domain 22 21 USE sbc_oce ! Surface boundary condition: ocean fields … … 27 26 USE wrk_nemo ! work arrays 28 27 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 28 USE limctl 29 29 30 30 IMPLICIT NONE … … 33 33 PUBLIC lim_rst_opn ! routine called by icestep.F90 34 34 PUBLIC lim_rst_write ! routine called by icestep.F90 35 PUBLIC lim_rst_read ! routine called by iceini.F9035 PUBLIC lim_rst_read ! routine called by sbc_lim_init 36 36 37 37 LOGICAL, PUBLIC :: lrst_ice !: logical to control the ice restart write … … 55 55 CHARACTER(LEN=20) :: clkt ! ocean time-step define as a character 56 56 CHARACTER(LEN=50) :: clname ! ice output restart file name 57 CHARACTER(len=256) :: clpath ! full path to ice output restart file 57 58 !!---------------------------------------------------------------------- 58 59 ! … … 64 65 IF( kt == nitrst - 2*nn_fsbc + 1 .OR. nstock == nn_fsbc & 65 66 & .OR. ( kt == nitend - nn_fsbc + 1 .AND. .NOT. lrst_ice ) ) THEN 66 ! beware of the format used to write kt (default is i8.8, that should be large enough...) 67 IF( nitrst > 99999999 ) THEN ; WRITE(clkt, * ) nitrst 68 ELSE ; WRITE(clkt, '(i8.8)') nitrst 67 IF( nitrst <= nitend .AND. nitrst > 0 ) THEN 68 ! beware of the format used to write kt (default is i8.8, that should be large enough...) 69 IF( nitrst > 99999999 ) THEN ; WRITE(clkt, * ) nitrst 70 ELSE ; WRITE(clkt, '(i8.8)') nitrst 71 ENDIF 72 ! create the file 73 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_"//TRIM(cn_icerst_out) 74 clpath = TRIM(cn_icerst_outdir) 75 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath)//'/' 76 IF(lwp) THEN 77 WRITE(numout,*) 78 SELECT CASE ( jprstlib ) 79 CASE ( jprstdimg ) 80 WRITE(numout,*) ' open ice restart binary file: ',TRIM(clpath)//clname 81 CASE DEFAULT 82 WRITE(numout,*) ' open ice restart NetCDF file: ',TRIM(clpath)//clname 83 END SELECT 84 IF( kt == nitrst - 2*nn_fsbc + 1 ) THEN 85 WRITE(numout,*) ' kt = nitrst - 2*nn_fsbc + 1 = ', kt,' date= ', ndastp 86 ELSE ; WRITE(numout,*) ' kt = ' , kt,' date= ', ndastp 87 ENDIF 88 ENDIF 89 ! 90 CALL iom_open( TRIM(clpath)//TRIM(clname), numriw, ldwrt = .TRUE., kiolib = jprstlib ) 91 lrst_ice = .TRUE. 69 92 ENDIF 70 ! create the file71 clname = TRIM(cexper)//"_"//TRIM(ADJUSTL(clkt))//"_"//TRIM(cn_icerst_out)72 IF(lwp) THEN73 WRITE(numout,*)74 SELECT CASE ( jprstlib )75 CASE ( jprstdimg ) ; WRITE(numout,*) ' open ice restart binary file: '//clname76 CASE DEFAULT ; WRITE(numout,*) ' open ice restart NetCDF file: '//clname77 END SELECT78 IF( kt == nitrst - 2*nn_fsbc + 1 ) THEN79 WRITE(numout,*) ' kt = nitrst - 2*nn_fsbc + 1 = ', kt,' date= ', ndastp80 ELSE ; WRITE(numout,*) ' kt = ' , kt,' date= ', ndastp81 ENDIF82 ENDIF83 !84 CALL iom_open( clname, numriw, ldwrt = .TRUE., kiolib = jprstlib )85 lrst_ice = .TRUE.86 93 ENDIF 87 94 ! 95 IF( ln_icectl ) CALL lim_prt( kt, iiceprt, jiceprt, 1, ' - Beginning the time step - ' ) ! control print 88 96 END SUBROUTINE lim_rst_opn 89 97 … … 162 170 CALL iom_rstput( iter, nitrst, numriw, 'u_ice' , u_ice ) 163 171 CALL iom_rstput( iter, nitrst, numriw, 'v_ice' , v_ice ) 164 CALL iom_rstput( iter, nitrst, numriw, 'fsbbq' , fsbbq )165 172 CALL iom_rstput( iter, nitrst, numriw, 'stress1_i' , stress1_i ) 166 173 CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i ) 167 174 CALL iom_rstput( iter, nitrst, numriw, 'stress12_i' , stress12_i ) 168 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass' , snwice_mass ) !clem modif169 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b ) !clem modif175 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass' , snwice_mass ) 176 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass_b', snwice_mass_b ) 170 177 171 178 DO jl = 1, jpl … … 307 314 !! ** purpose : read of sea-ice variable restart in a netcdf file 308 315 !!---------------------------------------------------------------------- 309 INTEGER :: ji, jj, jk, jl , indx316 INTEGER :: ji, jj, jk, jl 310 317 REAL(wp) :: zfice, ziter 311 REAL(wp) :: zs_inf, z_slope_s, zsmax, zsmin, zalpha, zindb ! local scalars used for the salinity profile312 REAL(wp), POINTER, DIMENSION(:) :: zs_zero313 318 REAL(wp), POINTER, DIMENSION(:,:) :: z2d 314 319 CHARACTER(len=15) :: znam … … 318 323 !!---------------------------------------------------------------------- 319 324 320 CALL wrk_alloc( nlay_i, zs_zero )321 325 CALL wrk_alloc( jpi, jpj, z2d ) 322 326 … … 330 334 ! eventually read netcdf file (monobloc) for restarting on different number of processors 331 335 ! if {cn_icerst_in}.nc exists, then set jlibalt to jpnf90 332 INQUIRE( FILE = TRIM(cn_icerst_in )//'.nc', EXIST = llok )336 INQUIRE( FILE = TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in)//'.nc', EXIST = llok ) 333 337 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF 334 338 ENDIF 335 339 336 CALL iom_open ( cn_icerst_in, numrir, kiolib = jprstlib )340 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir, kiolib = jprstlib ) 337 341 338 342 CALL iom_get( numrir, 'nn_fsbc', zfice ) … … 393 397 CALL iom_get( numrir, jpdom_autoglo, 'u_ice' , u_ice ) 394 398 CALL iom_get( numrir, jpdom_autoglo, 'v_ice' , v_ice ) 395 CALL iom_get( numrir, jpdom_autoglo, 'fsbbq' , fsbbq )396 399 CALL iom_get( numrir, jpdom_autoglo, 'stress1_i' , stress1_i ) 397 400 CALL iom_get( numrir, jpdom_autoglo, 'stress2_i' , stress2_i ) 398 401 CALL iom_get( numrir, jpdom_autoglo, 'stress12_i', stress12_i ) 399 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass' , snwice_mass ) !clem modif400 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass_b', snwice_mass_b ) !clem modif402 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass' , snwice_mass ) 403 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass_b', snwice_mass_b ) 401 404 402 405 DO jl = 1, jpl … … 522 525 END DO 523 526 ! 527 ! clem: I do not understand why the following IF is needed 528 ! I suspect something inconsistent in the main code with option nn_icesal=1 529 IF( nn_icesal == 1 ) THEN 530 DO jl = 1, jpl 531 sm_i(:,:,jl) = rn_icesal 532 DO jk = 1, nlay_i 533 s_i(:,:,jk,jl) = rn_icesal 534 END DO 535 END DO 536 ENDIF 537 ! 524 538 !CALL iom_close( numrir ) !clem: closed in sbcice_lim.F90 525 539 ! 526 CALL wrk_dealloc( nlay_i, zs_zero )527 540 CALL wrk_dealloc( jpi, jpj, z2d ) 528 541 !
Note: See TracChangeset
for help on using the changeset viewer.