Changeset 6141 for branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_2
- Timestamp:
- 2015-12-21T12:38:26+01:00 (9 years ago)
- Location:
- branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_2
- Files:
-
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90
r5385 r6141 83 83 CALL ice_run_2 ! read in namelist some run parameters 84 84 ! 85 rdt_ice = nn_fsbc * rdt tra(1)! sea-ice time step85 rdt_ice = nn_fsbc * rdt ! sea-ice time step 86 86 numit = nit000 - 1 87 87 ! -
branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_2/limrst_2.F90
r5341 r6141 71 71 WRITE(numout,*) 72 72 SELECT CASE ( jprstlib ) 73 CASE ( jprstdimg )74 WRITE(numout,*) ' open ice restart binary file: ',TRIM(clpath)//clname75 73 CASE DEFAULT 76 74 WRITE(numout,*) ' open ice restart NetCDF file: ',TRIM(clpath)//clname … … 192 190 ENDIF 193 191 194 IF ( jprstlib == jprstdimg ) THEN195 ! eventually read netcdf file (monobloc) for restarting on different number of processors196 ! if {cn_icerst_in}.nc exists, then set jlibalt to jpnf90197 INQUIRE( FILE = TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in)//'.nc', EXIST = llok )198 IF ( llok ) THEN ; jlibalt = jpnf90 ; ELSE ; jlibalt = jprstlib ; ENDIF199 ENDIF200 201 192 CALL iom_open ( TRIM(cn_icerst_indir)//'/'//TRIM(cn_icerst_in), numrir, kiolib = jlibalt ) 202 193 -
branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
r5870 r6141 29 29 USE sbc_ice ! surface boundary condition: ice 30 30 USE sbc_oce ! surface boundary condition: ocean 31 USE sbccpl 31 USE sbccpl ! surface boundary condition: coupled interface 32 32 USE oce , ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass 33 33 USE albedo ! albedo parameters 34 ! 34 35 USE lbclnk ! ocean lateral boundary condition - MPP exchanges 35 36 USE lib_mpp ! MPP library … … 43 44 PRIVATE 44 45 45 PUBLIC lim_sbc_init_2 46 PUBLIC lim_sbc_flx_2 47 PUBLIC lim_sbc_tau_2 46 PUBLIC lim_sbc_init_2 ! called by ice_init_2 47 PUBLIC lim_sbc_flx_2 ! called by sbc_ice_lim_2 48 PUBLIC lim_sbc_tau_2 ! called by sbc_ice_lim_2 48 49 49 50 REAL(wp) :: r1_rdtice ! = 1. / rdt_ice … … 52 53 REAL(wp) :: rone = 1._wp ! - - 53 54 ! 54 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: soce_0, sice_0 ! constant SSS and ice salinity used in levitating sea-ice case55 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: soce_0, sice_0 ! fix SSS and ice salinity used in levitating case 0 55 56 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: utau_oce, vtau_oce ! air-ocean surface i- & j-stress [N/m2] 56 57 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: tmod_io ! modulus of the ice-ocean relative velocity [m/s] … … 58 59 !! * Substitutions 59 60 # include "vectopt_loop_substitute.h90" 60 # include "domzgr_substitute.h90"61 61 !!---------------------------------------------------------------------- 62 62 !! NEMO/LIM2 4.0 , UCL - NEMO Consortium (2011) … … 102 102 !!--------------------------------------------------------------------- 103 103 INTEGER, INTENT(in) :: kt ! number of iteration 104 ! !104 ! 105 105 INTEGER :: ji, jj ! dummy loop indices 106 106 INTEGER :: ii0, ii1, ij0, ij1 ! local integers … … 114 114 REAL(wp), POINTER, DIMENSION(:,:,:) :: zalb, zalbp ! 2D/3D workspace 115 115 !!--------------------------------------------------------------------- 116 116 ! 117 117 CALL wrk_alloc( jpi, jpj, zqnsoce ) 118 118 CALL wrk_alloc( jpi, jpj, 1, zalb, zalbp ) 119 120 SELECT CASE( nn_ice_embd ) 121 CASE( 0 ) ; zswitch = 1 ! (0) standard levitating sea-ice : salt exchange only122 CASE( 1, 2 ) ; zswitch = 0! (1) levitating sea-ice: salt and volume exchange but no pressure effect123 124 END SELECT !119 ! 120 SELECT CASE( nn_ice_embd ) ! levitating or embedded sea-ice option 121 CASE( 0 ) ; zswitch = 1 ! (0) old levitating sea-ice : salt exchange only 122 CASE( 1, 2 ) ; zswitch = 0 ! (1) levitating sea-ice: salt and volume exchange but no pressure effect 123 ! ! (2) embedded sea-ice : salt and volume fluxes and pressure 124 END SELECT 125 125 126 126 !------------------------------------------! … … 303 303 INTEGER , INTENT(in) :: kt ! ocean time-step index 304 304 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pu_oce, pv_oce ! surface ocean currents 305 ! !305 ! 306 306 INTEGER :: ji, jj ! dummy loop indices 307 307 REAL(wp) :: zfrldu, zat_u, zu_i, zutau_ice, zu_t, zmodt ! local scalar … … 435 435 !! ** input : Namelist namicedia 436 436 !!------------------------------------------------------------------- 437 !438 INTEGER :: jk ! local integer437 INTEGER :: jk ! local integer 438 !!------------------------------------------------------------------- 439 439 ! 440 440 IF(lwp) WRITE(numout,*) … … 470 470 sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 471 471 sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 472 do jk = 1,jpkm1 ! adjust initial vertical scale factors 473 fse3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 474 fse3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 475 end do 476 fse3t_a(:,:,:) = fse3t_b(:,:,:) 477 ! Reconstruction of all vertical scale factors at now and before time steps 478 ! ============================================================================= 479 ! Horizontal scale factor interpolations 480 ! -------------------------------------- 481 CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3u_b(:,:,:), 'U' ) 482 CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3v_b(:,:,:), 'V' ) 483 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3u_n(:,:,:), 'U' ) 484 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3v_n(:,:,:), 'V' ) 485 CALL dom_vvl_interpol( fse3u_n(:,:,:), fse3f_n(:,:,:), 'F' ) 486 ! Vertical scale factor interpolations 487 ! ------------------------------------ 488 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3w_n (:,:,:), 'W' ) 489 CALL dom_vvl_interpol( fse3u_n(:,:,:), fse3uw_n(:,:,:), 'UW' ) 490 CALL dom_vvl_interpol( fse3v_n(:,:,:), fse3vw_n(:,:,:), 'VW' ) 491 CALL dom_vvl_interpol( fse3u_b(:,:,:), fse3uw_b(:,:,:), 'UW' ) 492 CALL dom_vvl_interpol( fse3v_b(:,:,:), fse3vw_b(:,:,:), 'VW' ) 493 ! t- and w- points depth 494 ! ---------------------- 495 fsdept_n(:,:,1) = 0.5_wp * fse3w_n(:,:,1) 496 fsdepw_n(:,:,1) = 0.0_wp 497 fsde3w_n(:,:,1) = fsdept_n(:,:,1) - sshn(:,:) 498 DO jk = 2, jpk 499 fsdept_n(:,:,jk) = fsdept_n(:,:,jk-1) + fse3w_n(:,:,jk) 500 fsdepw_n(:,:,jk) = fsdepw_n(:,:,jk-1) + fse3t_n(:,:,jk-1) 501 fsde3w_n(:,:,jk) = fsdept_n(:,:,jk ) - sshn (:,:) 502 END DO 472 !!gm I really don't like this staff here... Find a way to put that elsewhere or differently 473 !!gm 474 IF( .NOT.ln_linssh ) THEN 475 476 do jk = 1,jpkm1 ! adjust initial vertical scale factors 477 e3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 478 e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 479 end do 480 e3t_a(:,:,:) = e3t_b(:,:,:) 481 ! Reconstruction of all vertical scale factors at now and before time steps 482 ! ! Horizontal scale factor interpolations 483 CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 484 CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 485 CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 486 CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 487 CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 488 ! ! Vertical scale factor interpolations 489 CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W' ) 490 CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 491 CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 492 CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 493 CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 494 ! ! t- and w- points depth 495 gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 496 gdepw_n(:,:,1) = 0.0_wp 497 gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 498 DO jk = 2, jpk 499 gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk) 500 gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 501 gde3w_n(:,:,jk) = gdept_n(:,:,jk ) - sshn (:,:) 502 END DO 503 ENDIF 504 !!gm end 503 505 ENDIF 504 506 ! -
branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90
r5870 r6141 18 18 USE phycst ! physical constants 19 19 USE dom_oce ! ocean space and time domain variables 20 USE domvvl 21 USE lbclnk 20 USE domvvl ! ocean domain 21 USE ice_2 ! LIM sea-ice variables 22 USE sbc_oce ! surface boundary condition: ocean 23 USE sbc_ice ! surface boundary condition: sea-ice 24 USE thd_ice_2 ! LIM thermodynamic sea-ice variables 25 USE dom_ice_2 ! LIM sea-ice domain 26 USE limthd_zdf_2 ! 27 USE limthd_lac_2 ! 28 USE limtab_2 ! 29 ! 22 30 USE in_out_manager ! I/O manager 23 USE lib_mpp 31 USE lbclnk ! 32 USE lib_mpp ! 24 33 USE wrk_nemo ! work arrays 25 34 USE iom ! IOM library 26 USE ice_2 ! LIM sea-ice variables27 USE sbc_oce !28 USE sbc_ice !29 USE thd_ice_2 ! LIM thermodynamic sea-ice variables30 USE dom_ice_2 ! LIM sea-ice domain31 USE limthd_zdf_232 USE limthd_lac_233 USE limtab_234 35 USE prtctl ! Print control 35 36 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) … … 43 44 REAL(wp) :: epsi16 = 1.e-16 ! 44 45 REAL(wp) :: epsi04 = 1.e-04 ! 45 REAL(wp) :: rzero = 0. e0!46 REAL(wp) :: rone = 1. e0!46 REAL(wp) :: rzero = 0._wp ! 47 REAL(wp) :: rone = 1._wp ! 47 48 48 49 !! * Substitutions 49 # include "domzgr_substitute.h90"50 50 # include "vectopt_loop_substitute.h90" 51 51 !!-------- ------------------------------------------------------------- … … 75 75 !!--------------------------------------------------------------------- 76 76 INTEGER, INTENT(in) :: kt ! number of iteration 77 ! !77 ! 78 78 INTEGER :: ji, jj ! dummy loop indices 79 79 INTEGER :: nbpb ! nb of icy pts for thermo. cal. … … 233 233 234 234 ! energy needed to bring ocean surface layer until its freezing 235 qcmif (ji,jj) = rau0 * rcp * fse3t_m(ji,jj) * ( tfu(ji,jj) - sst_m(ji,jj) - rt0 ) * ( 1 - zinda )235 qcmif (ji,jj) = rau0 * rcp * e3t_m(ji,jj) * ( tfu(ji,jj) - sst_m(ji,jj) - rt0 ) * ( 1 - zinda ) 236 236 237 237 ! calculate oceanic heat flux. -
branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90
r4696 r6141 85 85 86 86 #if ! defined key_iomput 87 # if defined key_dimgout88 !!----------------------------------------------------------------------89 !! 'key_dimgout' Direct Access file90 !!----------------------------------------------------------------------91 # include "limwri_dimg_2.h90"92 # else93 87 SUBROUTINE lim_wri_2( kt ) 94 88 !!------------------------------------------------------------------- … … 215 209 ! 216 210 END SUBROUTINE lim_wri_2 217 218 #endif219 211 220 212 SUBROUTINE lim_wri_init_2
Note: See TracChangeset
for help on using the changeset viewer.