Changeset 3419 for branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM
- Timestamp:
- 2012-06-20T18:16:33+02:00 (12 years ago)
- Location:
- branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r3402 r3419 34 34 USE prtctl ! Print control 35 35 USE cpl_oasis3, ONLY : lk_cpl 36 USE oce, ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass 37 USE dom_ice, ONLY : tms 36 38 37 39 IMPLICIT NONE … … 230 232 & + tprecip(ji,jj) * at_i(ji,jj) & ! all precipitation reach the ocean 231 233 & - sprecip(ji,jj) * ( 1. - (pfrld(ji,jj)**betas) ) & ! except solid precip intercepted by sea-ice 232 & - rdm snif(ji,jj) * r1_rdtice & ! freshwaterflux due to snow melting234 & - rdm_snw(ji,jj) * r1_rdtice & ! freshwaterflux due to snow melting 233 235 & + fmmec(ji,jj) ! snow falling when ridging 234 236 … … 236 238 ! computing salt exchanges at the ice/ocean interface 237 239 ! sice should be the same as computed with the ice model 238 zfons = ( soce_0(ji,jj) - sice_0(ji,jj) ) * rdm icif(ji,jj) * r1_rdtice240 zfons = ( soce_0(ji,jj) - sice_0(ji,jj) ) * rdm_ice(ji,jj) * r1_rdtice 239 241 ! SOCE 240 zfons = ( sss_m (ji,jj) - sice_0(ji,jj) ) * rdm icif(ji,jj) * r1_rdtice242 zfons = ( sss_m (ji,jj) - sice_0(ji,jj) ) * rdm_ice(ji,jj) * r1_rdtice 241 243 242 244 !CT useless ! salt flux for constant salinity … … 266 268 ELSE ! constant ice salinity: 267 269 sfx (:,:) = fseqv(:,:) + fsalt_res(:,:) + fsalt_rpo(:,:) + emp(:,:) 270 ENDIF 271 !-----------------------------------------------! 272 ! mass of snow and ice per unit area ! 273 !-----------------------------------------------! 274 IF( nn_ice_embd /= 0 ) THEN ! embedded sea-ice (mass required) 275 snwice_mass_b(:,:) = snwice_mass(:,:) ! save mass from the previous ice time step 276 ! ! new mass per unit area 277 snwice_mass (:,:) = tms(:,:) * ( rhosn * vt_s(:,:) + rhoic * vt_i(:,:) ) 278 ! ! time evolution of snow+ice mass 279 snwice_fmass (:,:) = ( snwice_mass(:,:) - snwice_mass_b(:,:) ) / rdt_ice 268 280 ENDIF 269 281 … … 404 416 ! ! embedded sea ice 405 417 IF( nn_ice_embd /= 0 ) THEN ! mass exchanges between ice and ocean (case 1 or 2) set the snow+ice mass 406 snwice_mass (:,:) = tms(:,:) * ( rhosn * hsnif(:,:) + rhoic * hicif(:,:) ) * ( 1.0 - frld(:,:))418 snwice_mass (:,:) = tms(:,:) * ( rhosn * vt_s(:,:) + rhoic * vt_i(:,:) ) 407 419 snwice_mass_b(:,:) = snwice_mass(:,:) 408 420 ELSE 409 snwice_mass (:,:) = 0. e0! no mass exchanges410 snwice_mass_b(:,:) = 0. e0! no mass exchanges411 ENDIF 412 IF( nn_ice_embd == 2 .AND. 421 snwice_mass (:,:) = 0.0_wp ! no mass exchanges 422 snwice_mass_b(:,:) = 0.0_wp ! no mass exchanges 423 ENDIF 424 IF( nn_ice_embd == 2 .AND. & ! full embedment (case 2) & no restart : 413 425 & .NOT.ln_rstart ) THEN ! deplete the initial ssh belew sea-ice area 414 426 sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 -
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r3294 r3419 8 8 !! 3.0 ! 2005-11 (M. Vancoppenolle) LIM-3 : Multi-layer thermodynamics + salinity variations 9 9 !! - ! 2007-04 (M. Vancoppenolle) add lim_thd_glohec, lim_thd_con_dh and lim_thd_con_dif 10 !! 3.2 ! 2009-07 (M. Vancoppenolle, Y. Aksenov, G. Madec) bug correction in rdm snif10 !! 3.2 ! 2009-07 (M. Vancoppenolle, Y. Aksenov, G. Madec) bug correction in rdm_snw 11 11 !! 3.3 ! 2010-11 (G. Madec) corrected snow melting heat (due to factor betas) 12 12 !! 4.0 ! 2011-02 (G. Madec) dynamical allocation … … 140 140 ffltbif(:,:) = 0.e0 ! linked with fstric 141 141 qfvbq (:,:) = 0.e0 ! linked with fstric 142 rdm snif(:,:) = 0.e0 ! variation of snow mass per unit area143 rdm icif(:,:) = 0.e0 ! variation of ice mass per unit area142 rdm_snw(:,:) = 0.e0 ! variation of snow mass per unit area 143 rdm_ice(:,:) = 0.e0 ! variation of ice mass per unit area 144 144 hicifp (:,:) = 0.e0 ! daily thermodynamic ice production. 145 145 fsbri (:,:) = 0.e0 ! brine flux contribution to salt flux to the ocean … … 284 284 CALL tab_2d_1d( nbpb, fbif_1d (1:nbpb), fbif , jpi, jpj, npb(1:nbpb) ) 285 285 CALL tab_2d_1d( nbpb, qldif_1d (1:nbpb), qldif , jpi, jpj, npb(1:nbpb) ) 286 CALL tab_2d_1d( nbpb, rdmicif_1d (1:nbpb), rdm icif, jpi, jpj, npb(1:nbpb) )287 CALL tab_2d_1d( nbpb, rdmsnif_1d (1:nbpb), rdm snif, jpi, jpj, npb(1:nbpb) )286 CALL tab_2d_1d( nbpb, rdmicif_1d (1:nbpb), rdm_ice , jpi, jpj, npb(1:nbpb) ) 287 CALL tab_2d_1d( nbpb, rdmsnif_1d (1:nbpb), rdm_snw , jpi, jpj, npb(1:nbpb) ) 288 288 CALL tab_2d_1d( nbpb, dmgwi_1d (1:nbpb), dmgwi , jpi, jpj, npb(1:nbpb) ) 289 289 CALL tab_2d_1d( nbpb, qlbbq_1d (1:nbpb), zqlbsbq , jpi, jpj, npb(1:nbpb) ) … … 352 352 CALL tab_1d_2d( nbpb, qldif , npb, qldif_1d (1:nbpb), jpi, jpj ) 353 353 CALL tab_1d_2d( nbpb, qfvbq , npb, qfvbq_1d (1:nbpb), jpi, jpj ) 354 CALL tab_1d_2d( nbpb, rdm icif, npb, rdmicif_1d(1:nbpb), jpi, jpj )355 CALL tab_1d_2d( nbpb, rdm snif, npb, rdmsnif_1d(1:nbpb), jpi, jpj )354 CALL tab_1d_2d( nbpb, rdm_ice, npb, rdmicif_1d(1:nbpb), jpi, jpj ) 355 CALL tab_1d_2d( nbpb, rdm_snw, npb, rdmsnif_1d(1:nbpb), jpi, jpj ) 356 356 CALL tab_1d_2d( nbpb, dmgwi , npb, dmgwi_1d (1:nbpb), jpi, jpj ) 357 357 CALL tab_1d_2d( nbpb, rdvosif, npb, dvsbq_1d (1:nbpb), jpi, jpj ) -
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
r3294 r3419 128 128 zusnit = 1.0 / REAL( initad ) 129 129 IF( zcfl > 0.5 .AND. lwp ) & 130 WRITE(numout,*) 'lim_trp _2: CFL violation at day ', nday, ', cfl = ', zcfl, &130 WRITE(numout,*) 'lim_trp : CFL violation at day ', nday, ', cfl = ', zcfl, & 131 131 & ': the ice time stepping is split in two' 132 132 -
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90
r3294 r3419 622 622 + ze_s * v_s(ji,jj,jl) / rdt_ice 623 623 ! release mass 624 rdm snif(ji,jj) = rdmsnif(ji,jj) + rhosn * v_s(ji,jj,jl)624 rdm_snw(ji,jj) = rdm_snw(ji,jj) + rhosn * v_s(ji,jj,jl) 625 625 ENDIF 626 626 END DO -
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r3402 r3419 696 696 !!---------------------------------------------------------------------- 697 697 ! 698 IF( nn_timing == 1 ) CALL timing_start('dia_wri_state') 698 ! IF( nn_timing == 1 ) CALL timing_start('dia_wri_state') ! not sure this works for routines not called in first timestep 699 699 700 700 ! 0. Initialisation … … 793 793 #endif 794 794 795 IF( nn_timing == 1 ) CALL timing_stop('dia_wri_state') 795 ! IF( nn_timing == 1 ) CALL timing_stop('dia_wri_state') ! not sure this works for routines not called in first timestep 796 796 ! 797 797 -
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
r3294 r3419 119 119 120 120 ! variables used in case of sea-ice 121 INTEGER, PUBLIC :: ncomm_ice !: communicator made by the processors with sea-ice 121 INTEGER, PUBLIC :: ncomm_ice !: communicator made by the processors with sea-ice (public so that it can be freed in limthd) 122 INTEGER :: ngrp_iworld ! group ID for the world processors (for rheology) 122 123 INTEGER :: ngrp_ice ! group ID for the ice processors (for rheology) 123 124 INTEGER :: ndim_rank_ice ! number of 'ice' processors … … 1977 1978 !! ndim_rank_ice = number of processors with ice 1978 1979 !! nrank_ice (ndim_rank_ice) = ice processors 1979 !! ngrp_ world = group ID for the world processors1980 !! ngrp_iworld = group ID for the world processors 1980 1981 !! ngrp_ice = group ID for the ice processors 1981 1982 !! ncomm_ice = communicator for the ice procs. … … 2026 2027 2027 2028 ! Create the world group 2028 CALL MPI_COMM_GROUP( mpi_comm_opa, ngrp_ world, ierr )2029 CALL MPI_COMM_GROUP( mpi_comm_opa, ngrp_iworld, ierr ) 2029 2030 2030 2031 ! Create the ice group from the world group 2031 CALL MPI_GROUP_INCL( ngrp_ world, ndim_rank_ice, nrank_ice, ngrp_ice, ierr )2032 CALL MPI_GROUP_INCL( ngrp_iworld, ndim_rank_ice, nrank_ice, ngrp_ice, ierr ) 2032 2033 2033 2034 ! Create the ice communicator , ie the pool of procs with sea-ice … … 2036 2037 ! Find proc number in the world of proc 0 in the north 2037 2038 ! The following line seems to be useless, we just comment & keep it as reminder 2038 ! CALL MPI_GROUP_TRANSLATE_RANKS(ngrp_ice,1,0,ngrp_world,n_ice_root,ierr) 2039 ! 2039 ! CALL MPI_GROUP_TRANSLATE_RANKS(ngrp_ice,1,0,ngrp_iworld,n_ice_root,ierr) 2040 ! 2041 CALL MPI_GROUP_FREE(ngrp_ice, ierr) 2042 CALL MPI_GROUP_FREE(ngrp_iworld, ierr) 2043 2040 2044 DEALLOCATE(kice, zwork) 2041 2045 !
Note: See TracChangeset
for help on using the changeset viewer.