Changeset 88
- Timestamp:
- 2004-04-22T15:50:27+02:00 (20 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/LIM_SRC/ice.F90
r12 r88 31 31 resl = 5.0e-05, & !: maximum value for the residual of relaxation 32 32 cw = 5.0e-03, & !: drag coefficient for oceanic stress 33 angvg = 0. 0, & !: turning angle for oceanic stress33 angvg = 0.e0 , & !: turning angle for oceanic stress 34 34 pstar = 1.0e+04, & !: first bulk-rheology parameter 35 c_rhg = 20. 0, & !: second bulk-rhelogy parameter36 etamn = 0. 0e+07,& !: minimun value for viscosity37 creepl = 2. 0e-08,& !: creep limit38 ecc = 2. 0, & !: eccentricity of the elliptical yield curve35 c_rhg = 20.e0 , & !: second bulk-rhelogy parameter 36 etamn = 0.e+07, & !: minimun value for viscosity 37 creepl = 2.e-08, & !: creep limit 38 ecc = 2.e0 , & !: eccentricity of the elliptical yield curve 39 39 ahi0 = 350.e0 !: sea-ice hor. eddy diffusivity coeff. (m2/s) 40 40 … … 98 98 tio_u, tio_v !: two components of the ice-ocean stress (N/m2) 99 99 100 REAL(wp), PUBLIC, DIMENSION(jpi,jpj, nsmax) :: & !:100 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpsmax) :: & !: 101 101 scal0 !: ??? 102 102 103 REAL(wp), PUBLIC, DIMENSION(jpi,jpj, nlayersp1) :: & !:103 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jplayersp1) :: & !: 104 104 tbif !: Temperature inside the ice/snow layer 105 105 106 REAL(wp), DIMENSION(jpi,jpj,0: kmax+1) :: & !:106 REAL(wp), DIMENSION(jpi,jpj,0:jpkmax+1) :: & !: 107 107 reslum !: Relative absorption of solar radiation in each ocean level 108 108 -
trunk/NEMO/LIM_SRC/icestp.F90
r3 r88 16 16 USE flx_oce ! forcings variables 17 17 USE dom_ice 18 USE cpl_oce 18 19 USE daymod 19 20 USE phycst ! Define parameters for the routines … … 76 77 77 78 IF( kt == nit000 ) THEN 78 # if defined key_coupled 79 IF(lwp) WRITE(numout,*)80 IF(lwp) WRITE(numout,*) 'ice_stp : Louvain la Neuve Ice Model (LIM)'81 IF(lwp) WRITE(numout,*) '~~~~~~~ coupled case'82 #else 83 IF(lwp) WRITE(numout,*)84 IF(lwp) WRITE(numout,*) 'ice_stp : Louvain la Neuve Ice Model (LIM)'85 IF(lwp) WRITE(numout,*) '~~~~~~~ forced case using bulk formulea'86 #endif 79 IF( lk_cpl ) THEN 80 IF(lwp) WRITE(numout,*) 81 IF(lwp) WRITE(numout,*) 'ice_stp : Louvain la Neuve Ice Model (LIM)' 82 IF(lwp) WRITE(numout,*) '~~~~~~~ coupled case' 83 ELSE 84 IF(lwp) WRITE(numout,*) 85 IF(lwp) WRITE(numout,*) 'ice_stp : Louvain la Neuve Ice Model (LIM)' 86 IF(lwp) WRITE(numout,*) '~~~~~~~ forced case using bulk formulea' 87 ENDIF 87 88 ! Initialize fluxes fields 88 89 gtaux(:,:) = 0.e0 … … 183 184 184 185 185 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)186 IF( l_ctl ) THEN ! print mean trends (used for debugging) 186 187 WRITE(numout,*) 'Ice Forcings ' 187 188 WRITE(numout,*) ' qsr_oce : ', SUM( qsr_oce (:,:) ), ' qsr_ice : ', SUM( qsr_ice (:,:) ) … … 202 203 CALL lim_dyn ! Ice dynamics ! ( rheology/dynamics ) 203 204 ! !--------------! 204 IF( l_ctl .AND. lwp) THEN205 IF( l_ctl ) THEN 205 206 WRITE(numout,*) ' hsnif 2 : ', SUM( hsnif (:,:) ), ' hicnif : ', SUM( hicif (:,:) ) 206 207 WRITE(numout,*) ' frld 2 : ', SUM( frld (:,:) ), ' sist : ', SUM( sist (:,:) ) … … 211 212 CALL lim_trp ! Ice transport ! ( Advection/diffusion ) 212 213 ! !---------------! 213 IF( l_ctl .AND. lwp) THEN214 IF( l_ctl ) THEN 214 215 WRITE(numout,*) ' hsnif 3 : ', SUM( hsnif (:,:) ), ' hicnif : ', SUM( hicif (:,:) ) 215 216 WRITE(numout,*) ' frld 3 : ', SUM( frld (:,:) ), ' sist : ', SUM( sist (:,:) ) … … 220 221 CALL lim_thd ! Ice thermodynamics ! 221 222 ! !--------------------! 222 IF( l_ctl .AND. lwp) THEN223 IF( l_ctl ) THEN 223 224 WRITE(numout,*) ' hsnif 4 : ', SUM( hsnif (:,:) ), ' hicnif : ', SUM( hicif (:,:) ) 224 225 WRITE(numout,*) ' frld 4 : ', SUM( frld (:,:) ), ' sist : ', SUM( sist (:,:) ) … … 270 271 #else 271 272 !!---------------------------------------------------------------------- 272 !! Default option NO LIM sea-ice model 273 !!---------------------------------------------------------------------- 274 USE in_out_manager 275 273 !! Default option Dummy module NO LIM sea-ice model 274 !!---------------------------------------------------------------------- 276 275 CONTAINS 277 278 SUBROUTINE ice_stp ( kt ) ! Empty routine 279 INTEGER, INTENT( in ) :: kt ! ocean time-step index 280 281 IF( kt == nit000 ) THEN 282 IF(lwp) WRITE(numout,*) 283 IF(lwp) WRITE(numout,*) 'No Sea Ice Model' 284 IF(lwp) WRITE(numout,*) '~~~~~~~' 285 ENDIF 286 276 SUBROUTINE ice_stp ( kt ) ! Dummy routine 277 WRITE(*,*) 'ice_stp: You should not have seen this print! error?', kt 287 278 END SUBROUTINE ice_stp 288 289 279 #endif 290 280 -
trunk/NEMO/LIM_SRC/limadv.F90
r3 r88 1 1 MODULE limadv 2 #if defined key_ice_lim3 2 !!====================================================================== 4 3 !! *** MODULE limadv *** 5 4 !! LIM sea-ice model : sea-ice advection 6 5 !!====================================================================== 7 6 #if defined key_ice_lim 7 !!---------------------------------------------------------------------- 8 !! 'key_ice_lim' LIM sea-ice model 8 9 !!---------------------------------------------------------------------- 9 10 !! lim_adv_x : advection of sea ice on x axis … … 221 222 CALL lbc_lnk( psxy, 'T', 1. ) 222 223 223 IF( l_ctl .AND. lwp) THEN224 IF(l_ctl) THEN 224 225 WRITE(numout,*) ' lim_adv_x: psm ', SUM( psm ), ' ps0 ', SUM( ps0 ) 225 226 WRITE(numout,*) ' lim_adv_x: psx ', SUM( psx ), ' psxx ', SUM( psxx ) … … 421 422 CALL lbc_lnk( psxy, 'T', 1. ) 422 423 423 IF( l_ctl .AND. lwp) THEN424 IF(l_ctl) THEN 424 425 WRITE(numout,*) ' lim_adv_y: psm ', SUM( psm ), ' ps0 ', SUM( ps0 ) 425 426 WRITE(numout,*) ' lim_adv_y: psx ', SUM( psx ), ' psxx ', SUM( psxx ) … … 430 431 END SUBROUTINE lim_adv_y 431 432 432 !!======================================================================433 433 #else 434 !!============================================================================== 435 !! *** MODULE limadv *** 436 !! No sea ice 437 !!============================================================================== 434 !!---------------------------------------------------------------------- 435 !! Default option Dummy module NO LIM sea-ice model 436 !!---------------------------------------------------------------------- 438 437 CONTAINS 439 438 SUBROUTINE lim_adv_x ! Empty routine -
trunk/NEMO/LIM_SRC/limflx.F90
r33 r88 9 9 !!---------------------------------------------------------------------- 10 10 !! lim_flx : flux at the ice / ocean interface 11 !!---------------------------------------------------------------------- 11 12 !! * Modules used 12 13 USE par_oce … … 26 27 PUBLIC lim_flx ! called by lim_step 27 28 28 !! * Module variables 29 REAL(wp) :: & ! constant values 30 epsi16 = 1e-16 , & 31 rzero = 0.0 , & 32 rone = 1.0 29 !! * Module variables 30 REAL(wp) :: & ! constant values 31 epsi16 = 1.e-16 , & 32 rzero = 0.e0 , & 33 rone = 1.e0 34 33 35 !! * Substitutions 34 36 # include "vectopt_loop_substitute.h90" … … 41 43 !!------------------------------------------------------------------- 42 44 !! *** ROUTINE lim_flx *** 43 !!44 45 !! 45 46 !! ** Purpose : Computes the mass and heat fluxes to the ocean … … 53 54 !! - fmass : freshwater flux at sea ice/ocean interface 54 55 !! 55 !!56 56 !! ** References : 57 57 !! H. Goosse et al. 1996, Bul. Soc. Roy. Sc. Liege, 65, 87-90 … … 59 59 !! addition : 02-07 (C. Ethe, G. Madec) 60 60 !!--------------------------------------------------------------------- 61 !! * Modules used62 61 !! * Local variables 63 62 INTEGER :: ji, jj ! dummy loop indices … … 174 173 !-----------------------------------------------! 175 174 176 DO jj = 1, jpj 177 DO ji = 1, jpi 178 ftaux (ji,jj) = - tio_u(ji,jj) * rau0 ! taux ( ice: N/m2/rau0, ocean: N/m2 ) 179 ftauy (ji,jj) = - tio_v(ji,jj) * rau0 ! tauy ( ice: N/m2/rau0, ocean: N/m2 ) 180 freeze(ji,jj) = 1.0 - frld(ji,jj) ! Sea ice cover 181 tn_ice(ji,jj) = sist(ji,jj) ! Ice surface temperature 182 END DO 183 END DO 175 ftaux (:,:) = - tio_u(:,:) * rau0 ! taux ( ice: N/m2/rau0, ocean: N/m2 ) 176 ftauy (:,:) = - tio_v(:,:) * rau0 ! tauy ( ice: N/m2/rau0, ocean: N/m2 ) 177 freeze(:,:) = 1.0 - frld(:,:) ! Sea ice cover 178 tn_ice(:,:) = sist(:,:) ! Ice surface temperature 184 179 185 180 #if defined key_coupled … … 194 189 CALL flx_blk_albedo( zalb, zalcn, zalbp, zaldum ) 195 190 196 DO jj = 1, jpj 197 DO ji = 1, jpi 198 alb_ice(ji,jj) = 0.5 * zalbp(ji,jj) + 0.5 * zalb (ji,jj) ! Ice albedo 199 END DO 200 END DO 201 #endif 202 203 IF( l_ctl .AND. lwp ) THEN 191 alb_ice(:,:) = 0.5 * zalbp(:,:) + 0.5 * zalb (:,:) ! Ice albedo 192 #endif 193 194 IF(l_ctl) THEN 204 195 WRITE(numout,*) ' lim_flx ' 205 196 WRITE(numout,*) ' fsolar ', SUM(fsolar), ' fnsolar', SUM( fnsolar ) … … 208 199 WRITE(numout,*) ' freeze ', SUM(freeze), ' tn_ice ', SUM(tn_ice) 209 200 ENDIF 210 211 201 212 202 END SUBROUTINE lim_flx … … 214 204 #else 215 205 !!---------------------------------------------------------------------- 216 !! Default option : Empty module NO LIM sea-ice model206 !! Default option : Dummy module NO LIM sea-ice model 217 207 !!---------------------------------------------------------------------- 218 208 CONTAINS 219 SUBROUTINE lim_flx ! Empty routine209 SUBROUTINE lim_flx ! Dummy routine 220 210 END SUBROUTINE lim_flx 221 211 #endif 222 212 213 !!====================================================================== 223 214 END MODULE limflx -
trunk/NEMO/LIM_SRC/limhdf.F90
r12 r88 1 1 MODULE limhdf 2 #if defined key_ice_lim3 2 !!====================================================================== 4 3 !! *** MODULE limhdf *** 5 !! LIM diffusion ice model : sea-ice variables horizontal diffusion4 !! LIM ice model : horizontal diffusion of sea-ice quantities 6 5 !!====================================================================== 7 6 #if defined key_ice_lim 7 !!---------------------------------------------------------------------- 8 !! 'key_ice_lim' LIM sea-ice model 8 9 !!---------------------------------------------------------------------- 9 10 !! lim_hdf : diffusion trend on sea-ice variable … … 96 97 DO ji = fs_2 , fs_jpim1 ! vector opt. 97 98 zfact(ji,jj) = ( e2u(ji,jj) + e2u(ji-1,jj ) + e1v(ji,jj) + e1v(ji,jj-1) ) & 98 99 & / ( e1t(ji,jj) * e2t(ji,jj) ) 99 100 END DO 100 101 END DO … … 144 145 145 146 ! convergence test 146 zconv = 0. 0147 zconv = 0.e0 147 148 DO jj = 2, jpjm1 148 149 DO ji = 2, jpim1 … … 165 166 166 167 ptab(:,:) = ptab(:,:) 167 IF( l_ctl .AND. lwp ) THEN 168 WRITE(numout,*) ' lim_hdf : ', SUM( ptab-ptab0 ), ' zconv= ', zconv, ' iter= ', iter 169 ENDIF 168 169 IF(l_ctl) WRITE(numout,*) ' lim_hdf : ', SUM( ptab-ptab0 ), ' zconv= ', zconv, ' iter= ', iter 170 170 171 171 END SUBROUTINE lim_hdf 172 172 173 #else 173 !!====================================================================== 174 !! *** MODULE limhdf *** 175 !! no sea ice model 176 !!====================================================================== 174 !!---------------------------------------------------------------------- 175 !! Default option Dummy module NO LIM sea-ice model 176 !!---------------------------------------------------------------------- 177 177 CONTAINS 178 178 SUBROUTINE lim_hdf ! Empty routine -
trunk/NEMO/LIM_SRC/limrst.F90
r3 r88 84 84 zinfo(2) = FLOAT( it0 ) ! iteration number 85 85 86 zsec = 0. 86 zsec = 0.e0 87 87 itime = 0 88 zdept(1) = 0. 88 zdept(1) = 0.e0 89 89 zdt = rdt_ice * nstock 90 90 -
trunk/NEMO/LIM_SRC/limthd_lac.F90
r12 r88 22 22 PUBLIC lim_thd_lac ! called by lim_thd 23 23 24 !! * Module variables25 26 epsi20 = 1e-20, &27 epsi13 = 1e-13, &28 zzero = 0.0, &29 zone = 1.024 !! * Module variables 25 REAL(wp) :: & ! constant values 26 epsi20 = 1.e-20 , & 27 epsi13 = 1.e-13 , & 28 zzero = 0.e0 , & 29 zone = 1.e0 30 30 !!---------------------------------------------------------------------- 31 31 !! LIM 2.0 , UCL-LODYC-IPSL (2003) … … 33 33 CONTAINS 34 34 35 35 SUBROUTINE lim_thd_lac( kideb, kiut ) 36 36 !!------------------------------------------------------------------- 37 37 !! *** ROUTINE lim_thd_lac *** … … 63 63 !! Fichefet T. and M. Maqueda 1997, J. Geo. Res., 102(C6), 64 64 !! 12609 -12646 65 !!66 65 !! History : 67 66 !! 1.0 ! 01-04 (LIM) original code -
trunk/NEMO/LIM_SRC/limthd_zdf.F90
r12 r88 1 1 MODULE limthd_zdf 2 #if defined key_ice_lim3 2 !!====================================================================== 4 3 !! *** MODULE limthd_zdf *** 5 4 !! thermodynamic growth and decay of the ice 6 5 !!====================================================================== 7 6 #if defined key_ice_lim 7 !!---------------------------------------------------------------------- 8 !! 'key_ice_lim' LIM sea-ice model 8 9 !!---------------------------------------------------------------------- 9 10 !! lim_thd_zdf : vertical accr./abl. and lateral ablation of sea ice 11 !!---------------------------------------------------------------------- 10 12 !! * Modules used 11 13 USE par_oce ! ocean parameters … … 25 27 !! * Module variables 26 28 REAL(wp) :: & ! constant values 27 epsi20 = 1 e-20, &28 epsi13 = 1 e-13, &29 zzero = 0. 0, &30 zone = 1. 029 epsi20 = 1.e-20 , & 30 epsi13 = 1.e-13 , & 31 zzero = 0.e0 , & 32 zone = 1.e0 31 33 !!---------------------------------------------------------------------- 32 34 !! LIM 2.0 , UCL-LODYC-IPSL (2003) … … 35 37 36 38 SUBROUTINE lim_thd_zdf( kideb , kiut ) 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 39 !!------------------------------------------------------------------ 40 !! *** ROUTINE lim_thd_zdf *** 41 !! 42 !! ** Purpose : This routine determines the time evolution of snow 43 !! and sea-ice thicknesses, concentration and heat content 44 !! due to the vertical and lateral thermodynamic accretion- 45 !! ablation processes. One only treats the case of lat. abl. 46 !! For lateral accretion, see routine lim_lat_accr 47 !! 48 !! ** Method : The representation of vertical growth and decay of 49 !! the sea-ice model is based upon the diffusion of heat 50 !! through the external and internal boundaries of a 51 !! three-layer system (two layers of ice and one layer and 52 !! one layer of snow, if present, on top of the ice). 53 !! 54 !! ** Action : - Calculation of some intermediates variables 55 !! - Calculation of surface temperature 56 !! - Calculation of available heat for surface ablation 57 !! - Calculation of the changes in internal temperature 58 !! of the three-layer system, due to vertical diffusion 59 !! processes 60 !! - Performs surface ablation and bottom accretion-ablation 61 !! - Performs snow-ice formation 62 !! - Performs lateral ablation 63 !! 64 !! References : 65 !! Fichefet T. and M. Maqueda 1997, J. Geophys. Res., 102(C6), 12609-12646 66 !! Fichefet T. and M. Maqueda 1999, Clim. Dyn, 15(4), 251-268 67 !! 68 !! History : 69 !! original : 01-04 (LIM) 70 !! addition : 02-08 (C. Ethe, G. Madec) 71 !!------------------------------------------------------------------ 72 !! * Arguments 73 INTEGER , INTENT (in) :: & 74 kideb , & ! Start point on which the the computation is applied 75 kiut ! End point on which the the computation is applied 76 77 !! * Local variables 78 INTEGER :: ji ! dummy loop indices 79 80 REAL(wp) , DIMENSION(jpij,2) :: & 81 zqcmlt ! energy due to surface( /1 ) and bottom melting( /2 ) 82 83 REAL(wp), DIMENSION(jpij) :: & 84 ztsmlt & ! snow/ice surface melting temperature 85 ,ztbif & ! int. temp. at the mid-point of the 1st layer of the snow/ice sys. 86 ,zksn & ! effective conductivity of snow 87 ,zkic & ! effective conductivity of ice 88 ,zksndh & ! thermal cond. at the mid-point of the 1st layer of the snow/ice sys. 89 , zfcsu & ! conductive heat flux at the surface of the snow/ice system 90 , zfcsudt & ! = zfcsu * dt 91 , zi0 & ! frac. of the net SW rad. which is not absorbed at the surface 92 , z1mi0 & ! fraction of the net SW radiation absorbed at the surface 93 , zqmax & ! maximum energy stored in brine pockets 94 , zrcpdt & ! h_su*rho_su*cp_su/dt(h_su being the thick. of surf. layer) 95 , zts_old & ! previous surface temperature 96 , zidsn , z1midsn , zidsnic ! tempory variables 97 98 REAL(wp), DIMENSION(jpij) :: & 97 99 zfnet & ! net heat flux at the top surface( incl. conductive heat flux) 98 100 , zsprecip & ! snow accumulation … … 420 422 zplediag(3) = 1 + 3.0 * sbeta * zkhic 421 423 422 zsubdiag(1) = 0.0423 zsubdiag(2) = -1. 0 * z1midsn(ji) * sbeta * zkhicint424 zsubdiag(3) = -1. 0 * sbeta * zkhic425 426 zsupdiag(1) = -1.0 * z1midsn(ji) * sbeta * zkhsnint424 zsubdiag(1) = 0.e0 425 zsubdiag(2) = -1.e0 * z1midsn(ji) * sbeta * zkhicint 426 zsubdiag(3) = -1.e0 * sbeta * zkhic 427 428 zsupdiag(1) = -1.e0 * z1midsn(ji) * sbeta * zkhsnint 427 429 zsupdiag(2) = zsubdiag(3) 428 zsupdiag(3) = 0.0430 zsupdiag(3) = 0.e0 429 431 430 432 ! 6.3. Fulfill the idependent term vector. -
trunk/NEMO/LIM_SRC/limwri.F90
r3 r88 32 32 33 33 !! * Module variables 34 INTEGER, PARAMETER :: & !: 35 jpnoumax = 40 !: maximum number of variable for ice output 34 36 INTEGER :: & 35 37 noumef ! number of fields 36 REAL(wp) , DIMENSION( noumax) :: &38 REAL(wp) , DIMENSION(jpnoumax) :: & 37 39 cmulti , & ! multiplicative constant 38 40 cadd ! additive constant 39 CHARACTER(len = 35), DIMENSION( noumax) :: &41 CHARACTER(len = 35), DIMENSION(jpnoumax) :: & 40 42 titn ! title of the field 41 CHARACTER(len = 8 ), DIMENSION( noumax) :: &43 CHARACTER(len = 8 ), DIMENSION(jpnoumax) :: & 42 44 nam ! name of the field 43 CHARACTER(len = 8 ), DIMENSION( noumax) :: &45 CHARACTER(len = 8 ), DIMENSION(jpnoumax) :: & 44 46 uni ! unit of the field 45 INTEGER , DIMENSION( noumax) :: &47 INTEGER , DIMENSION(jpnoumax) :: & 46 48 nc ! switch for saving field ( = 1 ) or not ( = 0 ) 47 49 48 50 REAL(wp) :: & ! constant values 49 epsi16 = 1e-16 , & 50 zzero = 0.0 , & 51 zone = 1.0 51 epsi16 = 1.e-16 , & 52 zzero = 0.e0 , & 53 zone = 1.e0 54 !!------------------------------------------------------------------- 52 55 53 56 CONTAINS … … 70 73 zindh,zinda,zindb, & 71 74 ztmu 72 REAL(wp), DIMENSION(jpi,jpj, noumax) :: &75 REAL(wp), DIMENSION(jpi,jpj,jpnoumax) :: & 73 76 zcmo 74 77 REAL(wp), DIMENSION(jpi,jpj) :: & … … 84 87 ndex51 85 88 !!------------------------------------------------------------------- 86 87 88 89 89 90 IF ( numit == nstart ) THEN … … 111 112 CALL wheneq ( jpij , tmask(:,:,1), 1, 1., ndex51, ndim) 112 113 113 DO jf = 1 114 DO jf = 1, noumef 114 115 IF ( nc(jf) == 1 ) THEN 115 CALL histdef( nice, nam(jf), titn(jf), uni(jf), jpi, jpj &116 CALL histdef( nice, nam(jf), titn(jf), uni(jf), jpi, jpj & 116 117 , nhorid, 1, 1, 1, -99, 32, clop, zsto, zout ) 117 118 ENDIF … … 133 134 !-- calculs des valeurs instantanees 134 135 135 zcmo( 1:jpi, 1:jpj, 1:noumax ) = 0.0136 zcmo(:,:, 1:jpnoumax ) = 0.e0 136 137 DO jj = 2 , jpjm1 137 138 DO ji = 2 , jpim1 … … 229 230 field_19 230 231 231 TYPE(FIELD) , DIMENSION( noumax) :: zfield232 TYPE(FIELD) , DIMENSION(jpnoumax) :: zfield 232 233 233 234 NAMELIST/namiceout/ noumef, & -
trunk/NEMO/LIM_SRC/par_ice.F90
r12 r88 7 7 USE par_oce 8 8 9 INTEGER, PARAMETER :: & !: 10 kmax = 1 , & !: ??? 11 nsmax = 2 !: ??? 9 IMPLICIT NONE 10 PUBLIC ! allows par_oce and par_kind to be known in ice modules 12 11 13 !!-- Parameter providing the number of vertical ice layers 14 15 INTEGER , PARAMETER :: & !: 16 nlayers = 2 , & !: ??? 17 nlayersp1 = nlayers + 1 !: ??? 12 INTEGER, PUBLIC, PARAMETER :: & !: 13 jpkmax = 1 , & !: ??? 14 jpsmax = 2 !: ??? 18 15 19 ! maximum number of variable for output 20 INTEGER, PARAMETER :: & !: 21 noumax = 40 !: ??? 22 23 ! Parameters for outputs to files "evolu" made by routine "informe" : ??? 24 INTEGER, PARAMETER :: & !: 25 ninfmx = 100 , & !: maximum number of key variables 26 nchinf = 5 , & !: ??? 27 nchsep = nchinf + 2 !: ??? 16 INTEGER, PUBLIC, PARAMETER :: & !: 17 jplayers = 2 , & !: number of vertical ice layers 18 jplayersp1 = jplayers + 1 !: ??? 28 19 29 20 !!====================================================================== -
trunk/NEMO/LIM_SRC/thd_ice.F90
r12 r88 76 76 dqla_ice_1d !: " " dqla_ice 77 77 78 REAL(wp), PUBLIC, DIMENSION(jpij, nlayersp1) :: & !:78 REAL(wp), PUBLIC, DIMENSION(jpij,jplayersp1) :: & !: 79 79 tbif_1d !: corresponding to the 2D var tbif 80 80 -
trunk/NEMO/OPA_SRC/cpl_oce.F90
r14 r88 234 234 cpl_f_readflx, & !: coupler to ocean file name for flx.coupled 235 235 cpl_f_readtau, & !: coupler to ocean file name for tau.coupled 236 cpl_f_writ , & !: ocean to coupler file name for stp_cmo236 cpl_f_writ , & !: ocean to coupler file name for cpl_stp 237 237 cpl_readflx , & !: coupler to ocean field name for flx.coupled 238 238 cpl_readtau , & !: coupler to ocean field name for tau.coupled 239 cpl_writ !: ocean to coupler field name for stp_cmo239 cpl_writ !: ocean to coupler field name for cpl_stp 240 240 241 241 REAL(wp), DIMENSION(jpi,jpj) :: & !: -
trunk/NEMO/OPA_SRC/geo2ocean.F90
r3 r88 233 233 pte, ptn, ptv 234 234 REAL(wp), PARAMETER :: rpi = 3.141592653E0 235 REAL(wp), PARAMETER :: rad = rpi / 180. 0E0235 REAL(wp), PARAMETER :: rad = rpi / 180.e0 236 236 237 237 !! * Local variables -
trunk/NEMO/OPA_SRC/in_out_manager.F90
r15 r88 64 64 numwri = 40 , & !: logical unit for output write 65 65 numisp = 41 , & !: logical unit for island statistics 66 numgap = 45 , & !: logical unit for differences diagnostic 66 67 numwrs = 46 , & !: logical unit for output restart 67 68 numtdt = 62 , & !: logical unit for data temperature 68 69 numsdt = 63 , & !: logical unit for data salinity 70 numrnf = 64 , & !: logical unit for runoff data 69 71 numwso = 71 , & !: logical unit for 2d output write 70 72 numwvo = 72 , & !: logical unit for 3d output write 71 73 numsst = 65 , & !: logical unit for surface temperature data 72 numgap = 45 , & !: logical unit for differences diagnostic73 74 numbol = 67 , & !: logical unit for "bol" diagnostics 74 75 numptr = 68 , & !: logical unit for Poleward TRansports -
trunk/NEMO/OPA_SRC/lbclnk.F90
r15 r88 72 72 ! ! =-1 , the sign is changed if north fold boundary 73 73 ! ! = 1 , no sign change 74 ! ! = 0 , no sign change and > 0 required (use the inner 75 ! ! row/column if closed boundary) 74 76 75 77 !! * Local declarations … … 89 91 90 92 CASE ( 1 , 4 , 6 ) ! * cyclic east-west 91 92 93 pt3d( 1 ,:,jk) = pt3d(jpim1,:,jk) ! all points 93 94 pt3d(jpi,:,jk) = pt3d( 2 ,:,jk) 94 95 95 96 CASE DEFAULT ! * closed 96 97 97 SELECT CASE ( cd_type ) 98 99 98 CASE ( 'T' , 'U' , 'V' , 'W' ) ! T-, U-, V-, W-points 100 99 pt3d( 1 ,:,jk) = 0.e0 101 100 pt3d(jpi,:,jk) = 0.e0 102 103 101 CASE ( 'F' ) ! F-point 104 102 pt3d(jpi,:,jk) = 0.e0 105 106 103 END SELECT 107 104 … … 115 112 116 113 SELECT CASE ( cd_type ) 117 118 114 CASE ( 'T' , 'U' , 'W' ) ! T-, U-, W-points 119 115 pt3d(:, 1 ,jk) = pt3d(:,3,jk) 120 116 pt3d(:,jpj,jk) = 0.e0 121 122 117 CASE ( 'V' , 'F' ) ! V-, F-points 123 118 pt3d(:, 1 ,jk) = psgn * pt3d(:,2,jk) 124 119 pt3d(:,jpj,jk) = 0.e0 125 126 120 END SELECT 127 121 128 CASE ( 3 , 4 ) 122 CASE ( 3 , 4 ) ! * North fold T-point pivot 129 123 130 124 pt3d( 1 ,jpj,jk) = 0.e0 … … 132 126 133 127 SELECT CASE ( cd_type ) 134 135 128 CASE ( 'T' , 'W' ) ! T-, W-point 136 129 DO ji = 2, jpi … … 143 136 pt3d(ji,jpjm1,jk) = psgn * pt3d(ijt,jpjm1,jk) 144 137 END DO 145 146 138 CASE ( 'U' ) ! U-point 147 139 DO ji = 1, jpi-1 … … 154 146 pt3d(ji,jpjm1,jk) = psgn * pt3d(iju,jpjm1,jk) 155 147 END DO 156 157 148 CASE ( 'V' ) ! V-point 158 149 DO ji = 2, jpi … … 162 153 pt3d(ji,jpj ,jk) = psgn * pt3d(ijt,jpj-3,jk) 163 154 END DO 164 165 155 CASE ( 'F' ) ! F-point 166 156 DO ji = 1, jpi-1 … … 169 159 pt3d(ji,jpj ,jk) = pt3d(iju,jpj-3,jk) 170 160 END DO 171 172 161 END SELECT 173 162 … … 178 167 179 168 SELECT CASE ( cd_type ) 180 181 169 CASE ( 'T' , 'W' ) ! T-, W-point 182 170 DO ji = 1, jpi … … 185 173 pt3d(ji,jpj,jk) = psgn * pt3d(ijt,jpj-1,jk) 186 174 END DO 187 188 175 CASE ( 'U' ) ! U-point 189 176 DO ji = 1, jpi-1 … … 192 179 pt3d(ji,jpj,jk) = psgn * pt3d(iju,jpj-1,jk) 193 180 END DO 194 195 181 CASE ( 'V' ) ! V-point 196 182 DO ji = 1, jpi … … 203 189 pt3d(ji,jpjm1,jk) = psgn * pt3d(ijt,jpjm1,jk) 204 190 END DO 205 206 191 CASE ( 'F' ) ! F-point 207 192 DO ji = 1, jpi-1 … … 215 200 END SELECT 216 201 217 CASE DEFAULT 202 CASE DEFAULT ! * closed 218 203 219 204 SELECT CASE ( cd_type ) 220 221 205 CASE ( 'T' , 'U' , 'V' , 'W' ) ! T-, U-, V-, W-points 222 206 pt3d(:, 1 ,jk) = 0.e0 223 207 pt3d(:,jpj,jk) = 0.e0 224 225 208 CASE ( 'F' ) ! F-point 226 209 pt3d(:,jpj,jk) = 0.e0 227 228 210 END SELECT 229 211 … … 273 255 274 256 CASE ( 1 , 4 , 6 ) ! * cyclic east-west 275 276 257 pt2d( 1 ,:) = pt2d(jpim1,:) 277 258 pt2d(jpi,:) = pt2d( 2 ,:) 278 259 279 260 CASE DEFAULT ! * closed 280 281 261 SELECT CASE ( cd_type ) 282 283 262 CASE ( 'T' , 'U' , 'V' , 'W' ) ! T-, U-, V-, W-points 284 263 pt2d( 1 ,:) = 0.e0 285 264 pt2d(jpi,:) = 0.e0 286 287 CASE ( 'F' , 'I' ) ! F-point, ice U-V point 265 CASE ( 'F' ) ! F-point, ice U-V point 288 266 pt2d(jpi,:) = 0.e0 289 267 CASE ( 'I' ) ! F-point, ice U-V point 268 pt2d( 1 ,:) = 0.e0 269 pt2d(jpi,:) = 0.e0 290 270 END SELECT 291 271 … … 299 279 300 280 SELECT CASE ( cd_type ) 301 302 281 CASE ( 'T' , 'U' , 'W' ) ! T-, U-, W-points 303 282 pt2d(:, 1 ) = pt2d(:,3) 304 283 pt2d(:,jpj) = 0.e0 305 306 CASE ( 'V' , 'F' ) ! V-, F-points, ice U-V point 284 CASE ( 'V' , 'F' , 'I' ) ! V-, F-points, ice U-V point 307 285 pt2d(:, 1 ) = psgn * pt2d(:,2) 308 286 pt2d(:,jpj) = 0.e0 309 310 287 END SELECT 311 288 … … 419 396 420 397 SELECT CASE ( cd_type ) 421 422 398 CASE ( 'T' , 'U' , 'V' , 'W' ) ! T-, U-, V-, W-points 423 399 pt2d(:, 1 ) = 0.e0 424 400 pt2d(:,jpj) = 0.e0 425 426 401 CASE ( 'F' ) ! F-point 427 402 pt2d(:,jpj) = 0.e0 428 429 403 CASE ( 'I' ) ! ice U-V point 430 404 pt2d(:, 1 ) = 0.e0 431 405 pt2d(:,jpj) = 0.e0 432 433 406 END SELECT 434 407 -
trunk/NEMO/OPA_SRC/lib_cray.f90
r3 r88 9 9 ! isrchne 10 10 !--------------------------------------------------------- 11 11 FUNCTION sdot( I, X, J, Y, K ) 12 12 DIMENSION X(1), Y(1) 13 13 SDOT = 0. … … 15 15 SDOT = SDOT + X(1+(N-1)*J) * Y(1+(N-1)*K) 16 16 END DO 17 17 END FUNCTION sdot 18 18 !--------------------------------------------------------- 19 19 SUBROUTINE wheneq ( i, x, j, t, ind, nn ) 20 20 IMPLICIT NONE 21 21 … … 35 35 END DO 36 36 37 37 END SUBROUTINE wheneq 38 38 !--------------------------------------------------------- 39 SUBROUTINE SAXPY(I,A,X,J,Y,K)39 SUBROUTINE saxpy( I, A, X, J, Y, K ) 40 40 DIMENSION X(1),Y(1) 41 DO 1 N=1,I 42 Y(1+(N-1)*K)=A*X(1+(N-1)*J)+Y(1+(N-1)*K) 43 1 CONTINUE 44 RETURN 45 END 41 DO N = 1, I 42 Y(1+(N-1)*K)=A*X(1+(N-1)*J)+Y(1+(N-1)*K) 43 END DO 44 END SUBROUTINE saxpy 46 45 !--------------------------------------------------------- 47 FUNCTION ISRCHNE(K,X,I,B)46 FUNCTION isrchne( K, X, I, B ) 48 47 DIMENSION X(1) 49 DO 1 N=1,K 50 IF(X(1+(N-1)*I) /= B)THEN 51 ISRCHNE=N 52 RETURN 53 ELSE 54 ISRCHNE=N+1 55 ENDIF 56 1 CONTINUE 57 RETURN 58 END 48 DO N = 1, K 49 IF( X(1+(N-1)*I) /= B ) THEN 50 ISRCHNE = N 51 RETURN 52 ELSE 53 ISRCHNE = N + 1 54 ENDIF 55 END DO 56 END FUNCTION isrchne -
trunk/NEMO/OPA_SRC/lib_isml.f90
r3 r88 14 14 ! 15 15 !--------------------------------------------------------- 16 17 18 ! compute inverse matrix16 SUBROUTINE linrg(kn,pa,klda,painv,kldainv) 17 18 !! compute inverse matrix 19 19 20 20 IMPLICIT NONE … … 26 26 INTEGER ji 27 27 28 IF (kn /= klda.or.kn /= kldainv) THEN28 IF( kn /= klda .OR. kn /= kldainv ) THEN 29 29 write(0,*)'change your parameters' 30 30 STOP 31 31 ENDIF 32 32 33 CALL vmov( kn*kn,pa,painv)34 35 CALL gauss( kn,painv,iplin,zv)36 37 zb(:,:) = 0. 038 DO ji =1,kn39 zb(ji,ji) =1.40 CALL desremopt( kn,painv,iplin,zb(1,ji),zb(1,ji),zv)33 CALL vmov( kn*kn, pa, painv ) 34 35 CALL gauss( kn, painv, iplin, zv ) 36 37 zb(:,:) = 0.e0 38 DO ji = 1, kn 39 zb(ji,ji) = 1.e0 40 CALL desremopt( kn, painv, iplin, zb(1,ji), zb(1,ji), zv ) 41 41 END DO 42 CALL vmov( kn*kn,zb,painv)43 44 45 !--------------------------------------------------------- 46 42 CALL vmov( kn*kn, zb, painv ) 43 44 END SUBROUTINE linrg 45 !--------------------------------------------------------- 46 SUBROUTINE gauss(kn,pa,kplin,pv) 47 47 48 48 IMPLICIT NONE … … 108 108 END DO 109 109 110 END SUBROUTINE gauss 111 !--------------------------------------------------------- 112 FUNCTION isamax( I, X ) 113 DIMENSION X(I) 114 ISAMAX=0 115 XMIN=-1E+50 116 DO 1 N=1,I 117 IF(ABS(X(N)) > XMIN) THEN 118 XMIN=X(N) 119 ISAMAX=N 120 ENDIF 121 1 CONTINUE 122 RETURN 123 END 124 !--------------------------------------------------------- 125 SUBROUTINE vmov(kn,px,py) 110 END SUBROUTINE gauss 111 !--------------------------------------------------------- 112 FUNCTION isamax( I, X ) 113 DIMENSION X(I) 114 ISAMAX = 0 115 XMIN = -1e+50 116 DO N = 1, I 117 IF(ABS(X(N)) > XMIN ) THEN 118 XMIN = X(N) 119 ISAMAX = N 120 ENDIF 121 END DO 122 END FUNCTION isamax 123 !--------------------------------------------------------- 124 SUBROUTINE vmov(kn,px,py) 126 125 127 126 IMPLICIT NONE … … 131 130 132 131 DO ji=1,kn 133 py(ji)=px(ji)132 py(ji)=px(ji) 134 133 END DO 135 134 136 RETURN 137 END 138 !--------------------------------------------------------- 139 subroutine desremopt(n,a,plin,y,x,v) 135 END SUBROUTINE vmov 136 !--------------------------------------------------------- 137 subroutine desremopt(n,a,plin,y,x,v) 140 138 implicit none 141 139 integer n,i, j0 … … 176 174 end do 177 175 178 179 !--------------------------------------------------------- 180 176 end SUBROUTINE desremopt 177 !--------------------------------------------------------- 178 SUBROUTINE DTRSV ( UPLO, TRANS, DIAG, N, A, LDA, X, INCX ) 181 179 !! .. Scalar Arguments .. 182 180 INTEGER INCX, LDA, N … … 457 455 END IF 458 456 459 RETURN 460 461 !! End of DTRSV . 462 463 END 464 !--------------------------------------------------------- 465 SUBROUTINE DGER ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 457 END SUBROUTINE DTRSV 458 !--------------------------------------------------------- 459 SUBROUTINE DGER ( M, N, ALPHA, X, INCX, Y, INCY, A, LDA ) 466 460 !! .. Scalar Arguments .. 467 461 ! DOUBLE PRECISION ALPHA … … 620 614 END IF 621 615 622 RETURN 623 624 !! End of DGER . 625 626 END 627 !--------------------------------------------------------- 628 SUBROUTINE XERBLA ( SRNAME, INFO ) 616 END SUBROUTINE DGER 617 !--------------------------------------------------------- 618 SUBROUTINE XERBLA ( SRNAME, INFO ) 629 619 !! .. Scalar Arguments .. 630 620 INTEGER INFO … … 668 658 ' had an illegal value' ) 669 659 670 !! End of XERBLA. 671 672 END 660 END SUBROUTINE XERBLA 673 661 !----------------------------------------------------------- 674 662 FUNCTION lsame( c1, c2 ) 675 663 logical lsame 676 664 CHARACTER (len=*), INTENT(in) :: c1, c2 … … 680 668 lsame=.FALSE. 681 669 ENDIF 682 683 END FUNCTION lsame 670 END FUNCTION lsame -
trunk/NEMO/OPA_SRC/mppini.F90
r15 r88 9 9 !! mpp_init2 : Lay out the global domain over processors 10 10 !! with land processor elimination 11 !! mpp_init_ioispl: IOIPSL initialization in mpp 11 12 !!---------------------------------------------------------------------- 12 13 !! * Modules used … … 66 67 WRITE(numout,*) '~~~~~~~~~~~: ' 67 68 WRITE(numout,*) ' nperio = ', nperio 69 WRITE(numout,*) ' npolj = ', npolj 68 70 WRITE(numout,*) ' nimpp = ', nimpp 69 71 WRITE(numout,*) ' njmpp = ', njmpp … … 140 142 141 143 #if defined key_mpp_shmem 142 IF(lwp) WRITE(numout,*)143 IF(lwp) WRITE(numout,*) 'mpp_init : Message Passing PVM T3E + SHMEM'144 IF(lwp) WRITE(numout,*) '~~~~~~~~'144 IF(lwp) WRITE(numout,*) 145 IF(lwp) WRITE(numout,*) 'mpp_init : Message Passing PVM T3E + SHMEM' 146 IF(lwp) WRITE(numout,*) '~~~~~~~~' 145 147 146 148 CALL mppshmem ! Initialisation of shmem array … … 148 150 #endif 149 151 #if defined key_mpp_mpi 150 IF(lwp) WRITE(numout,*)151 IF(lwp) WRITE(numout,*) 'mpp_init : Message Passing MPI'152 IF(lwp) WRITE(numout,*) '~~~~~~~~'152 IF(lwp) WRITE(numout,*) 153 IF(lwp) WRITE(numout,*) 'mpp_init : Message Passing MPI' 154 IF(lwp) WRITE(numout,*) '~~~~~~~~' 153 155 #endif 154 156 … … 472 474 END IF 473 475 476 ! Prepare NetCDF output file (if necessary) 477 CALL mpp_init_ioipsl 474 478 475 479 END SUBROUTINE mpp_init 476 480 477 478 481 # include "mppini_2.h90" 479 482 483 # if defined key_fdir || defined key_dimgout 484 !!---------------------------------------------------------------------- 485 !! 'key_fdir' OR 'key_dimgout' NO use of NetCDF files 486 !!---------------------------------------------------------------------- 487 SUBROUTINE mpp_init_ioipsl ! Dummy routine 488 END SUBROUTINE mpp_init_ioipsl 489 # else 490 SUBROUTINE mpp_init_ioipsl 491 !!---------------------------------------------------------------------- 492 !! *** ROUTINE mpp_init_ioipsl *** 493 !! 494 !! ** Purpose : 495 !! 496 !! ** Method : 497 !! 498 !! History : 499 !! 9.0 ! 04-03 (G. Madec) MPP-IOIPSL 500 !!---------------------------------------------------------------------- 501 USE ioipsl 502 INTEGER, DIMENSION(4) :: & 503 iglo, iloc, iabsf, iabsl, ihals, ihale ! ??? 504 !!---------------------------------------------------------------------- 505 iglo(1) = jpiglo 506 iglo(2) = jpjglo 507 iglo(3) = jpk 508 iglo(4) = 1 509 iloc(1) = nlci 510 iloc(2) = nlcj 511 iloc(3) = jpk 512 iloc(4) = 1 513 iabsf(1) = nimppt(narea) 514 iabsf(2) = njmppt(narea) 515 iabsf(3) = 1 516 iabsf(4) = 1 517 iabsl(:) = iabsf(:) + iloc(:) - 1 518 ihals(1) = jpreci 519 ihals(2) = jprecj 520 ihals(3) = 0 521 ihals(4) = 0 522 ihale(1) = jpreci 523 ihale(2) = jprecj 524 ihale(3) = 0 525 ihale(4) = 0 526 IF( nbondi == -1 .OR. nbondi == 2 ) ihals(1) = 0 527 IF( nbondi == 1 .OR. nbondi == 2 ) ihale(1) = 0 528 IF( nbondj == -1 .OR. nbondj == 2 ) ihals(2) = 0 529 IF( nbondj == 1 .OR. nbondj == 2 ) ihale(2) = 0 530 IF(lwp) THEN 531 WRITE(numout,*) 'mpp_init_ioipsl : iloc = ', iloc (1), iloc (2), iloc (3), iloc (4) 532 WRITE(numout,*) '~~~~~~~~~~~~~~~ iabsf = ', iabsf(1), iabsf(2), iabsf(3), iabsf(4) 533 WRITE(numout,*) ' ihals = ', ihals(1), ihals(2), ihals(3), ihals(4) 534 WRITE(numout,*) ' ihale = ', ihale(1), ihale(2), ihale(3), ihale(4) 535 ENDIF 536 537 CALL ioipsl_inimpp( jpnij, nproc, iglo, iloc, iabsf, iabsl, ihals, ihale ) 538 539 END SUBROUTINE mpp_init_ioipsl 540 541 # endif 480 542 #endif 543 481 544 !!====================================================================== 482 545 END MODULE mppini -
trunk/NEMO/OPA_SRC/oce.F90
r15 r88 22 22 !! -------------------------- 23 23 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) :: & !: 24 ! before ! now ! after ! 24 ! before ! now ! after ! ! the after trends becomes the fields 25 ! fields ! fields ! trends ! ! only in dyn(tra)_zdf and dyn(tra)_nxt 25 26 ub , un , ua , & !: i-horizontal velocity (m/s) 26 27 vb , vn , va , & !: j-horizontal velocity (m/s) -
trunk/NEMO/OPA_SRC/opa.F90
r37 r88 131 131 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA 132 132 133 CALL opa_flg134 133 ! Domain decomposition 135 134 IF( jpni*jpnj == jpnij ) THEN … … 173 172 #endif 174 173 174 ! ! Ocean scheme 175 176 CALL opa_flg ! Choice of algorithms 177 175 178 ! ! Ocean physics 176 179 177 CALL tra_qsr_init ! S alor radiation penetration180 CALL tra_qsr_init ! Solar radiation penetration 178 181 179 182 CALL ldf_dyn_init ! Lateral ocean momentum physics -
trunk/NEMO/OPA_SRC/phycst.F90
r15 r88 91 91 !!---------------------------------------------------------------------- 92 92 !! * Local variables 93 CHARACTER (len=64) :: cform = "( 4(A13, I7) )"93 CHARACTER (len=64) :: cform = "(A9, 3(A13, I7) )" 94 94 !!---------------------------------------------------------------------- 95 95 … … 97 97 IF(lwp) WRITE(numout,*) ' phy_cst : initialization of ocean parameters and constants' 98 98 IF(lwp) WRITE(numout,*) ' ~~~~~~~' 99 IF(lwp) WRITE(numout,*)100 101 99 102 100 ! Ocean Parameters 103 101 ! ---------------- 104 102 IF(lwp) THEN 103 WRITE(numout,*) ' parameter file' 105 104 WRITE(numout,*) 106 WRITE(numout,*) ' parameter file' 107 WRITE(numout,*) ' ~~~~~~~~~~~~~~' 105 WRITE(numout,*) ' dimension of model' 106 WRITE(numout,*) ' Local domain Global domain Data domain ' 107 WRITE(numout,cform) ' ',' jpi : ', jpi, ' jpiglo : ', jpiglo, ' jpidta : ', jpidta 108 WRITE(numout,cform) ' ',' jpj : ', jpj, ' jpjglo : ', jpjglo, ' jpjdta : ', jpjdta 109 WRITE(numout,cform) ' ',' jpk : ', jpk, ' jpk : ', jpk , ' jpkdta : ', jpkdta 110 WRITE(numout,*) ' ',' jpij : ', jpij 111 WRITE(numout,*) 112 WRITE(numout,*) ' mpp local domain info (mpp)' 113 WRITE(numout,*) ' jpni : ', jpni, ' jpreci : ', jpreci 114 WRITE(numout,*) ' jpnj : ', jpnj, ' jprecj : ', jprecj 115 WRITE(numout,*) ' jpnij : ', jpnij 108 116 109 117 WRITE(numout,*) 110 WRITE(numout,*) ' dimension of model' 111 WRITE(numout,*) ' local domain Global domain Data domain ' 112 WRITE(numout,cform) ' jpi : ', jpi, ' jpim1 : ', jpim1, ' jpiglo : ', jpiglo, ' jpidta : ', jpidta 113 WRITE(numout,cform) ' jpj : ', jpj, ' jpjm1 : ', jpjm1, ' jpjglo : ', jpjglo, ' jpjdta : ', jpjdta 114 WRITE(numout,cform) ' jpk : ', jpk, ' jpkm1 : ', jpkm1, ' jpk : ', jpk , ' jpkdta : ', jpkdta 115 WRITE(numout,*) ' jpij : ', jpij 116 WRITE(numout,*) 117 WRITE(numout,*) ' mpp local domain info (mpp)' 118 WRITE(numout,*) ' jpni : ', jpni, ' jpreci : ', jpreci 119 WRITE(numout,*) ' jpnj : ', jpnj, ' jprecj : ', jprecj 120 WRITE(numout,*) ' jpnij : ', jpnij 121 122 WRITE(numout,*) 123 WRITE(numout,*) ' lateral domain boundary condition type : jperio = ', jperio 124 WRITE(numout,*) ' domain island (use in rigid-lid case) : jpisl = ', jpisl 125 WRITE(numout,*) ' jpnisl = ', jpnisl 118 WRITE(numout,*) ' lateral domain boundary condition type : jperio = ', jperio 119 WRITE(numout,*) ' domain island (use in rigid-lid case) : jpisl = ', jpisl 120 WRITE(numout,*) ' jpnisl = ', jpnisl 126 121 ENDIF 127 128 122 129 123 ! Define constants 130 124 ! ---------------- 131 125 IF(lwp) WRITE(numout,*) 132 IF(lwp) WRITE(numout,*) ' constants' 133 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~' 126 IF(lwp) WRITE(numout,*) ' constants' 134 127 135 128 IF(lwp) WRITE(numout,*) 136 IF(lwp) WRITE(numout,*) ' mathematical constantrpi = ', rpi129 IF(lwp) WRITE(numout,*) ' mathematical constant rpi = ', rpi 137 130 138 131 rsiyea = 365.25 * rday * 2. * rpi / 6.283076 … … 140 133 omega = 2. * rpi / rsiday 141 134 IF(lwp) WRITE(numout,*) 142 IF(lwp) WRITE(numout,*) ' dayrday = ', rday, ' s'143 IF(lwp) WRITE(numout,*) ' sideral yearrsiyea = ', rsiyea, ' s'144 IF(lwp) WRITE(numout,*) ' sideral dayrsiday = ', rsiday, ' s'145 IF(lwp) WRITE(numout,*) ' omegaomega = ', omega, ' s-1'135 IF(lwp) WRITE(numout,*) ' day rday = ', rday, ' s' 136 IF(lwp) WRITE(numout,*) ' sideral year rsiyea = ', rsiyea, ' s' 137 IF(lwp) WRITE(numout,*) ' sideral day rsiday = ', rsiday, ' s' 138 IF(lwp) WRITE(numout,*) ' omega omega = ', omega, ' s-1' 146 139 147 140 rjjss = rjjhh * rhhmm * rmmss 148 141 IF(lwp) WRITE(numout,*) 149 IF(lwp) WRITE(numout,*) ' nb of months per yearraamo = ', raamo, ' months'150 IF(lwp) WRITE(numout,*) ' nb of hours per dayrjjhh = ', rjjhh, ' hours'151 IF(lwp) WRITE(numout,*) ' nb of minutes per hourrhhmm = ', rhhmm, ' mn'152 IF(lwp) WRITE(numout,*) ' nb of seconds per minutermmss = ', rmmss, ' s'153 IF(lwp) WRITE(numout,*) ' nb of seconds per dayrjjss = ', rjjss, ' s'142 IF(lwp) WRITE(numout,*) ' nb of months per year raamo = ', raamo, ' months' 143 IF(lwp) WRITE(numout,*) ' nb of hours per day rjjhh = ', rjjhh, ' hours' 144 IF(lwp) WRITE(numout,*) ' nb of minutes per hour rhhmm = ', rhhmm, ' mn' 145 IF(lwp) WRITE(numout,*) ' nb of seconds per minute rmmss = ', rmmss, ' s' 146 IF(lwp) WRITE(numout,*) ' nb of seconds per day rjjss = ', rjjss, ' s' 154 147 155 148 IF(lwp) WRITE(numout,*) 156 IF(lwp) WRITE(numout,*) ' earth radiusra = ', ra, ' m'157 IF(lwp) WRITE(numout,*) ' gravity grav = ', grav , ' m/s2'149 IF(lwp) WRITE(numout,*) ' earth radius ra = ', ra, ' m' 150 IF(lwp) WRITE(numout,*) ' gravity grav = ', grav , ' m/s^2' 158 151 159 152 IF(lwp) WRITE(numout,*) 160 IF(lwp) WRITE(numout,*) ' triple point of temperature rtt = ', rtt , ' K'161 IF(lwp) WRITE(numout,*) ' freezing point of water ( C)rt0 = ', rt0 , ' K'162 IF(lwp) WRITE(numout,*) ' melting point of snow rt0_snow = ', rt0_snow, ' K'163 IF(lwp) WRITE(numout,*) ' melting point of ice rt0_ice = ', rt0_ice , ' K'153 IF(lwp) WRITE(numout,*) ' triple point of temperature rtt = ', rtt , ' K' 154 IF(lwp) WRITE(numout,*) ' freezing point of water rt0 = ', rt0 , ' K' 155 IF(lwp) WRITE(numout,*) ' melting point of snow rt0_snow = ', rt0_snow, ' K' 156 IF(lwp) WRITE(numout,*) ' melting point of ice rt0_ice = ', rt0_ice , ' K' 164 157 165 ro0cpr = 1. / ( rau0 * rcp ) !158 ro0cpr = 1. / ( rau0 * rcp ) 166 159 IF(lwp) WRITE(numout,*) 167 IF(lwp) WRITE(numout,*) ' volumic mass of pure water (kg/m3) rauw = ', rauw, ' kg/m3'168 IF(lwp) WRITE(numout,*) ' volumic mass of reference (kg/m3) rau0 = ', rau0, ' kg/m3'169 IF(lwp) WRITE(numout,*) ' ocean specific heatrcp = ', rcp170 IF(lwp) WRITE(numout,*) ' 1. / ( rau0 * rcp ) = ro0cpr = ', ro0cpr160 IF(lwp) WRITE(numout,*) ' volumic mass of pure water rauw = ', rauw, ' kg/m^3' 161 IF(lwp) WRITE(numout,*) ' volumic mass of reference rau0 = ', rau0, ' kg/m^3' 162 IF(lwp) WRITE(numout,*) ' ocean specific heat rcp = ', rcp 163 IF(lwp) WRITE(numout,*) ' 1. / ( rau0 * rcp ) = ro0cpr = ', ro0cpr 171 164 172 165 IF(lwp) THEN 173 166 WRITE(numout,*) 174 WRITE(numout,*) ' thermal conductivity of the snow = ', rcdsn , ' J.s-1.m-1.K-1'175 WRITE(numout,*) ' thermal conductivity of the ice = ', rcdic , ' J.s-1.m-1.K-1'176 WRITE(numout,*) ' density times specific heat for snow = ', rcpsn , ' J.m-3.K-1'177 WRITE(numout,*) ' density times specific heat for ice = ', rcpic , ' J.m-3.K-1'178 WRITE(numout,*) ' volumetric latent heat fusion of sea ice = ', xlic , ' J.m-3'179 WRITE(numout,*) ' volumetric latent heat fusion of snow = ', xlsn , ' J.m-3'180 WRITE(numout,*) ' latent heat of sublimation of snow = ', xsn , ' J.kg-1'181 WRITE(numout,*) ' density of sea ice = ', rhoic , ' kg.m-3'182 WRITE(numout,*) ' density of snow = ', rhosn , ' kg.m-3'183 WRITE(numout,*) ' emissivity of snow or ice = ', emic184 WRITE(numout,*) ' salinity of ice = ', sice , ' psu'185 WRITE(numout,*) ' salinity of sea = ', soce , ' psu'186 WRITE(numout,*) ' latent heat of evaporation (water) = ', cevap , ' J.m-3'187 WRITE(numout,*) ' correction factor for solar radiation = ', srgamma188 WRITE(numout,*) ' von Karman constant = ', vkarmn189 WRITE(numout,*) ' Stefan-Boltzmann constant = ', stefan , ' J.s-1.m-2.K-4'167 WRITE(numout,*) ' thermal conductivity of the snow = ', rcdsn , ' J/s/m/K' 168 WRITE(numout,*) ' thermal conductivity of the ice = ', rcdic , ' J/s/m/K' 169 WRITE(numout,*) ' density times specific heat for snow = ', rcpsn , ' J/m^3/K' 170 WRITE(numout,*) ' density times specific heat for ice = ', rcpic , ' J/m^3/K' 171 WRITE(numout,*) ' volumetric latent heat fusion of sea ice = ', xlic , ' J/m' 172 WRITE(numout,*) ' volumetric latent heat fusion of snow = ', xlsn , ' J/m' 173 WRITE(numout,*) ' latent heat of sublimation of snow = ', xsn , ' J/kg' 174 WRITE(numout,*) ' density of sea ice = ', rhoic , ' kg/m^3' 175 WRITE(numout,*) ' density of snow = ', rhosn , ' kg/m^3' 176 WRITE(numout,*) ' emissivity of snow or ice = ', emic 177 WRITE(numout,*) ' salinity of ice = ', sice , ' psu' 178 WRITE(numout,*) ' salinity of sea = ', soce , ' psu' 179 WRITE(numout,*) ' latent heat of evaporation (water) = ', cevap , ' J/m^3' 180 WRITE(numout,*) ' correction factor for solar radiation = ', srgamma 181 WRITE(numout,*) ' von Karman constant = ', vkarmn 182 WRITE(numout,*) ' Stefan-Boltzmann constant = ', stefan , ' J/s/m^2/K^4' 190 183 191 184 WRITE(numout,*) 192 WRITE(numout,*) ' conversion: degre ==> radianrad = ', rad185 WRITE(numout,*) ' conversion: degre ==> radian rad = ', rad 193 186 194 187 WRITE(numout,*) 195 WRITE(numout,*) ' smallest real computer value= ', rsmall188 WRITE(numout,*) ' smallest real computer value rsmall = ', rsmall 196 189 ENDIF 197 190
Note: See TracChangeset
for help on using the changeset viewer.