Changeset 5600 for branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
- Timestamp:
- 2015-07-15T17:46:12+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
r5034 r5600 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 … … 142 150 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 143 151 END DO 144 152 145 153 DO jl = 1, jpl 146 154 WRITE(zchar,'(I1)') jl … … 165 173 CALL iom_rstput( iter, nitrst, numriw, 'stress2_i' , stress2_i ) 166 174 CALL iom_rstput( iter, nitrst, numriw, 'stress12_i' , stress12_i ) 167 CALL iom_rstput( iter, nitrst, numriw, 'snwice_mass' , snwice_mass ) !clem modif168 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 ) 169 177 170 178 DO jl = 1, jpl … … 306 314 !! ** purpose : read of sea-ice variable restart in a netcdf file 307 315 !!---------------------------------------------------------------------- 308 INTEGER :: ji, jj, jk, jl , indx316 INTEGER :: ji, jj, jk, jl 309 317 REAL(wp) :: zfice, ziter 310 REAL(wp) :: zs_inf, z_slope_s, zsmax, zsmin, zalpha ! local scalars used for the salinity profile311 REAL(wp), POINTER, DIMENSION(:) :: zs_zero312 318 REAL(wp), POINTER, DIMENSION(:,:) :: z2d 313 319 CHARACTER(len=15) :: znam … … 317 323 !!---------------------------------------------------------------------- 318 324 319 CALL wrk_alloc( nlay_i, zs_zero )320 325 CALL wrk_alloc( jpi, jpj, z2d ) 321 326 … … 329 334 ! eventually read netcdf file (monobloc) for restarting on different number of processors 330 335 ! if {cn_icerst_in}.nc exists, then set jlibalt to jpnf90 331 INQUIRE( FILE = TRIM(cn_icerst_in )//'.nc', EXIST = llok )336 INQUIRE( FILE = TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in)//'.nc', EXIST = llok ) 332 337 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF 333 338 ENDIF 334 339 335 CALL iom_open ( cn_icerst_in, numrir, kiolib = jprstlib )340 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//cn_icerst_in, numrir, kiolib = jprstlib ) 336 341 337 342 CALL iom_get( numrir, 'nn_fsbc', zfice ) … … 395 400 CALL iom_get( numrir, jpdom_autoglo, 'stress2_i' , stress2_i ) 396 401 CALL iom_get( numrir, jpdom_autoglo, 'stress12_i', stress12_i ) 397 CALL iom_get( numrir, jpdom_autoglo, 'snwice_mass' , snwice_mass ) !clem modif398 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 ) 399 404 400 405 DO jl = 1, jpl … … 521 526 ! 522 527 ! clem: I do not understand why the following IF is needed 523 ! I suspect something inconsistent in the main code with option n um_sal=1524 IF( n um_sal == 1 ) THEN528 ! I suspect something inconsistent in the main code with option nn_icesal=1 529 IF( nn_icesal == 1 ) THEN 525 530 DO jl = 1, jpl 526 sm_i(:,:,jl) = bulk_sal531 sm_i(:,:,jl) = rn_icesal 527 532 DO jk = 1, nlay_i 528 s_i(:,:,jk,jl) = bulk_sal533 s_i(:,:,jk,jl) = rn_icesal 529 534 END DO 530 535 END DO … … 533 538 !CALL iom_close( numrir ) !clem: closed in sbcice_lim.F90 534 539 ! 535 CALL wrk_dealloc( nlay_i, zs_zero )536 540 CALL wrk_dealloc( jpi, jpj, z2d ) 537 541 !
Note: See TracChangeset
for help on using the changeset viewer.