Changeset 1446
- Timestamp:
- Oct 22, 2010, 11:27:25 AM (14 years ago)
- Location:
- LMDZ5/branches/LMDZ5V1.0-dev/libf
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/addfi.F
r1146 r1446 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 SUBROUTINE addfi(pdt, leapf, forward, … … 7 7 8 8 USE infotrac, ONLY : nqtot 9 USE control_mod, ONLY : planet_type 9 10 IMPLICIT NONE 10 11 c … … 116 117 ENDDO 117 118 118 DO iq = 1, 2 119 if (planet_type=="earth") then 120 ! earth case, special treatment for first 2 tracers (water) 121 DO iq = 1, 2 119 122 DO k = 1,llm 120 123 DO j = 1,ip1jmp1 … … 123 126 ENDDO 124 127 ENDDO 125 ENDDO128 ENDDO 126 129 127 DO iq = 3, nqtot130 DO iq = 3, nqtot 128 131 DO k = 1,llm 129 132 DO j = 1,ip1jmp1 … … 132 135 ENDDO 133 136 ENDDO 134 ENDDO 137 ENDDO 138 else 139 ! general case, treat all tracers equally) 140 DO iq = 1, nqtot 141 DO k = 1,llm 142 DO j = 1,ip1jmp1 143 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt 144 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt ) 145 ENDDO 146 ENDDO 147 ENDDO 148 endif ! of if (planet_type=="earth") 135 149 136 150 -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/advtrac.F
r1403 r1446 236 236 call vlsplt(q(1,1,iq),2.,massem,wg,pbarug,pbarvg,dtvr) 237 237 238 239 238 c ---------------------------------------------------------------- 240 239 c Schema "pseudo amont" + test sur humidite specifique -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/caladvtrac.F
r1403 r1446 8 8 * flxw, pk) 9 9 c 10 USE infotrac 11 USE control_mod 10 USE infotrac, ONLY : nqtot 11 USE control_mod, ONLY : iapp_tracvl,planet_type 12 12 13 13 IMPLICIT NONE … … 30 30 c ---------- 31 31 REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm) 32 REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 ) 32 REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot) 33 real :: dq(ip1jmp1,llm,nqtot) 33 34 REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm) 34 35 REAL :: flxw(ip1jmp1,llm) … … 49 50 cc 50 51 c 52 ! Earth-specific stuff for the first 2 tracers (water) 53 if (planet_type.eq."earth") then 51 54 C initialisation 52 dq = 0. 53 54 CALL SCOPY( 2 * ijp1llm, q, 1, dq, 1 ) 55 55 dq(:,:,1:2)=q(:,:,1:2) 56 56 57 c test des valeurs minmax 57 58 cc CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ') 58 59 cc CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ') 59 60 endif ! of if (planet_type.eq."earth") 60 61 c advection 61 62 … … 63 64 * p, masse,q,iapptrac, teta, 64 65 . flxw, pk) 66 65 67 c 66 68 67 IF( iapptrac.EQ.iapp_tracvl ) THEN 69 IF( iapptrac.EQ.iapp_tracvl ) THEN 70 if (planet_type.eq."earth") then 71 ! Earth-specific treatment for the first 2 tracers (water) 68 72 c 69 73 cc CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur ') … … 78 82 ENDDO 79 83 80 if (planet_type.eq."earth") then 81 ! Earth-specific treatment of first 2 tracers (water) 82 CALL qminimum( q, 2, finmasse ) 83 endif 84 CALL qminimum( q, 2, finmasse ) 84 85 85 86 CALL SCOPY ( ip1jmp1*llm, masse, 1, finmasse, 1 ) … … 100 101 ENDDO 101 102 c 102 ELSE 103 DO iq = 1 , 2 104 DO l = 1, llm 105 DO ij = 1,ip1jmp1 106 dq(ij,l,iq) = 0. 107 ENDDO 108 ENDDO 109 ENDDO 103 endif ! of if (planet_type.eq."earth") 104 ELSE 105 if (planet_type.eq."earth") then 106 ! Earth-specific treatment for the first 2 tracers (water) 107 dq(:,:,1:2)=0. 108 endif ! of if (planet_type.eq."earth") 109 ENDIF ! of IF( iapptrac.EQ.iapp_tracvl ) 110 110 111 112 ENDIF113 114 c115 116 c ... On appelle qminimum uniquement pour l'eau vapeur et liquide ..117 118 119 RETURN120 111 END 121 112 -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/gcm.F
r1403 r1446 249 249 endif 250 250 251 if (planet_type.eq."earth") then 252 #ifdef CPP_EARTH 251 ! if (planet_type.eq."earth") then 253 252 ! Load an Earth-format start file 254 253 CALL dynetat0("start.nc",vcov,ucov, 255 254 & teta,q,masse,ps,phis, time_0) 256 #else 257 ! SW model also has Earth-format start files 258 ! (but can be used without the CPP_EARTH directive) 259 if (iflag_phys.eq.0) then 260 CALL dynetat0("start.nc",vcov,ucov, 261 & teta,q,masse,ps,phis, time_0) 262 endif 263 #endif 264 endif ! of if (planet_type.eq."earth") 255 ! endif ! of if (planet_type.eq."earth") 265 256 266 257 c write(73,*) 'ucov',ucov … … 468 459 #endif 469 460 470 if (planet_type.eq."earth") then 461 ! if (planet_type.eq."earth") then 462 ! Write an Earth-format restart file 471 463 CALL dynredem0("restart.nc", day_end, phis) 472 endif464 ! endif 473 465 474 466 ecripar = .TRUE. -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/infotrac.F90
r1443 r1446 65 65 INTEGER :: nqtrue ! number of tracers read from tracer.def, without higer order of moment 66 66 INTEGER :: iq, new_iq, iiq, jq, ierr 67 67 68 character(len=*),parameter :: modname="infotrac_init" 68 69 !----------------------------------------------------------------------- 69 70 ! Initialization : … … 99 100 OPEN(90,file='traceur.def',form='formatted',status='old', iostat=ierr) 100 101 IF(ierr.EQ.0) THEN 101 WRITE(lunout,*) 'Open traceur.def : ok'102 WRITE(lunout,*) trim(modname),': Open traceur.def : ok' 102 103 READ(90,*) nqtrue 103 104 ELSE 104 WRITE(lunout,*) 'Problem in opening traceur.def'105 WRITE(lunout,*) 'ATTENTIONusing defaut values'105 WRITE(lunout,*) trim(modname),': Problem in opening traceur.def' 106 WRITE(lunout,*) trim(modname),': WARNING using defaut values' 106 107 nqtrue=4 ! Defaut value 107 108 END IF 108 ! Attention! Only for planet_type=='earth' 109 nbtr=nqtrue-2 109 if ( planet_type=='earth') then 110 ! For Earth, water vapour & liquid tracers are not in the physics 111 nbtr=nqtrue-2 112 else 113 ! Other planets (for now); we have the same number of tracers 114 ! in the dynamics than in the physics 115 nbtr=nqtrue 116 endif 110 117 ELSE 111 118 ! nbtr has been read from INCA by init_cont_lmdz() in gcm.F … … 113 120 END IF 114 121 115 IF ( nqtrue < 2) THEN116 WRITE(lunout,*) 'nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum'122 IF ((planet_type=="earth").and.(nqtrue < 2)) THEN 123 WRITE(lunout,*) trim(modname),': nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum' 117 124 CALL abort_gcm('infotrac_init','Not enough tracers',1) 118 125 END IF … … 158 165 END DO 159 166 CLOSE(90) 160 ELSE ! Without tracer.def 167 ELSE ! Without tracer.def, set default values (for Earth!) 168 if ((nqtrue==4).and.(planet_type=="earth")) then 161 169 hadv(1) = 14 162 170 vadv(1) = 14 … … 171 179 vadv(4) = 10 172 180 tnom_0(4) = 'PB' 181 else 182 ! Error message, we need a traceur.def file 183 write(lunout,*) trim(modname),& 184 ': Cannot set default tracer names!' 185 write(lunout,*) trim(modname),' Make a traceur.def file!!!' 186 CALL abort_gcm('infotrac_init','Need a traceur.def file!',1) 187 endif ! of if (nqtrue==4) 173 188 END IF 174 189 175 WRITE(lunout,*) 'Valeur de traceur.def :'176 WRITE(lunout,*) 'nombre de traceurs ',nqtrue190 WRITE(lunout,*) trim(modname),': Valeur de traceur.def :' 191 WRITE(lunout,*) trim(modname),': nombre de traceurs ',nqtrue 177 192 DO iq=1,nqtrue 178 193 WRITE(lunout,*) hadv(iq),vadv(iq),tnom_0(iq) … … 216 231 new_iq=new_iq+10 ! 9 tracers added 217 232 ELSE 218 WRITE(lunout,*) 'This choice of advection schema is not available',iq,hadv(iq),vadv(iq)233 WRITE(lunout,*) trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq) 219 234 CALL abort_gcm('infotrac_init','Bad choice of advection schema - 1',1) 220 235 END IF … … 226 241 nqtot = new_iq 227 242 228 WRITE(lunout,*) 'The choice of advection schema for one or more tracers'243 WRITE(lunout,*) trim(modname),': The choice of advection schema for one or more tracers' 229 244 WRITE(lunout,*) 'makes it necessary to add tracers' 230 WRITE(lunout,*) nqtrue,' is the number of true tracers'231 WRITE(lunout,*) nqtot, ' is the total number of tracers needed'245 WRITE(lunout,*) trim(modname)//': ',nqtrue,' is the number of true tracers' 246 WRITE(lunout,*) trim(modname)//': ',nqtot, ' is the total number of tracers needed' 232 247 233 248 ELSE … … 257 272 iadv(new_iq)=11 258 273 ELSE 259 WRITE(lunout,*) 'This choice of advection schema is not available',iq,hadv(iq),vadv(iq)274 WRITE(lunout,*)trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq) 260 275 261 276 CALL abort_gcm('infotrac_init','Bad choice of advection schema - 2',1) … … 303 318 304 319 305 WRITE(lunout,*) 'Information stored in infotrac :'306 WRITE(lunout,*) 'iadv niadv tname ttext :'320 WRITE(lunout,*) trim(modname),': Information stored in infotrac :' 321 WRITE(lunout,*) trim(modname),': iadv niadv tname ttext :' 307 322 DO iq=1,nqtot 308 WRITE(lunout,*) iadv(iq),niadv(iq), tname(iq), ttext(iq) 323 WRITE(lunout,*) iadv(iq),niadv(iq),& 324 ' ',trim(tname(iq)),' ',trim(ttext(iq)) 309 325 END DO 310 326 … … 315 331 DO iq=1,nqtot 316 332 IF (iadv(iq)/=10 .AND. iadv(iq)/=14 .AND. iadv(iq)/=0) THEN 317 WRITE(lunout,*) 'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'333 WRITE(lunout,*)trim(modname),' STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ' 318 334 CALL abort_gcm('infotrac_init','In this version only iadv=10 and iadv=14 is tested!',1) 319 335 ELSE IF (iadv(iq)==14 .AND. iq/=1) THEN 320 WRITE(lunout,*) 'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'336 WRITE(lunout,*)trim(modname),'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ' 321 337 CALL abort_gcm('infotrac_init','In this version iadv=14 is only permitted for water vapour!',1) 322 338 END IF -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/iniacademic.F
r1437 r1446 8 8 USE filtreg_mod 9 9 USE infotrac, ONLY : nqtot 10 USE control_mod 10 USE control_mod, ONLY: day_step,planet_type 11 11 #ifdef CPP_IOIPSL 12 12 USE IOIPSL … … 95 95 ! 1. Initializations for Earth-like case 96 96 ! -------------------------------------- 97 if (planet_type=="earth") then98 97 c 99 98 ! initialize planet radius, rotation rate,... … … 128 127 if (.not.read_start) then 129 128 phis(:)=0. 130 q(:,:,1)=1.e-10 131 q(:,:,2)=1.e-15 132 q(:,:,3:nqtot)=0. 129 q(:,:,:)=0 133 130 CALL sw_case_williamson91_6(vcov,ucov,teta,masse,ps) 134 131 endif … … 138 135 ! initializations for the academic case 139 136 137 ! if (planet_type=="earth") then 138 140 139 ! 1. local parameters 141 140 ! by convention, winter is in the southern hemisphere … … 219 218 enddo 220 219 220 221 ! else 222 ! write(lunout,*)"iniacademic: planet types other than earth", 223 ! & " not implemented (yet)." 224 ! stop 225 ! endif ! of if (planet_type=="earth") 226 221 227 ! 3. Initialize fields (if necessary) 222 228 IF (.NOT. read_start) THEN … … 245 251 246 252 ! bulk initialization of tracers 247 do i=1,nqtot 248 if (i.eq.1) q(:,:,i)=1.e-10 249 if (i.eq.2) q(:,:,i)=1.e-15 250 if (i.gt.2) q(:,:,i)=0. 251 enddo 253 if (planet_type=="earth") then 254 ! Earth: first two tracers will be water 255 do i=1,nqtot 256 if (i.eq.1) q(:,:,i)=1.e-10 257 if (i.eq.2) q(:,:,i)=1.e-15 258 if (i.gt.2) q(:,:,i)=0. 259 enddo 260 else 261 q(:,:,:)=0 262 endif ! of if (planet_type=="earth") 252 263 253 264 ! add random perturbation to temperature … … 261 272 enddo 262 273 274 ! maintain periodicity in longitude 263 275 do l=1,llm 264 276 do ij=1,ip1jmp1,iip1 … … 267 279 enddo 268 280 269 c PRINT *,' Appel test_period avec tetarappel '270 c CALL test_period ( ucov,vcov,tetarappel,q,p,phis )271 c PRINT *,' Appel test_period avec teta '272 c CALL test_period ( ucov,vcov,teta,q,p,phis )273 274 ! initialize a traceur on one column275 ! j=jjp1*3/4276 ! i=iip1/2277 ! ij=(j-1)*iip1+i278 ! q(ij,:,3)=1.279 280 281 ENDIF ! of IF (.NOT. read_start) 281 282 endif ! of if (iflag_phys.eq.2) 282 283 283 else284 write(lunout,*)"iniacademic: planet types other than earth",285 & " not implemented (yet)."286 stop287 endif ! of if (planet_type=="earth")288 return289 284 END 290 285 c----------------------------------------------------------------------- -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/integrd.F
r1403 r1446 6 6 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis,finvmaold ) 7 7 8 USE control_mod8 use control_mod, only : planet_type 9 9 10 10 IMPLICIT NONE … … 81 81 CALL SCOPY(ip1jmp1*llm, masse, 1, massescr, 1) 82 82 83 DO 2ij = 1,ip1jmp183 DO ij = 1,ip1jmp1 84 84 pscr (ij) = ps(ij) 85 85 ps (ij) = psm1(ij) + dt * dp(ij) 86 2 CONTINUE86 ENDDO 87 87 c 88 88 DO ij = 1,ip1jmp1 … … 115 115 c ............ integration de ucov, vcov, h .............. 116 116 117 DO 10l = 1,llm118 119 DO 4ij = iip2,ip1jm120 uscr( ij ) = ucov( ij,l )121 ucov( ij,l ) = ucovm1( ij,l ) + dt * du( ij,l )122 4 CONTINUE123 124 DO 5ij = 1,ip1jm125 vscr( ij ) = vcov( ij,l )126 vcov( ij,l ) = vcovm1( ij,l ) + dt * dv( ij,l )127 5 CONTINUE128 129 DO 6ij = 1,ip1jmp1130 hscr( ij ) = teta(ij,l)131 teta ( ij,l ) = tetam1(ij,l) * massem1(ij,l) / masse(ij,l)132 $+ dt * dteta(ij,l) / masse(ij,l)133 6 CONTINUE117 DO l = 1,llm 118 119 DO ij = iip2,ip1jm 120 uscr( ij ) = ucov( ij,l ) 121 ucov( ij,l ) = ucovm1( ij,l ) + dt * du( ij,l ) 122 ENDDO 123 124 DO ij = 1,ip1jm 125 vscr( ij ) = vcov( ij,l ) 126 vcov( ij,l ) = vcovm1( ij,l ) + dt * dv( ij,l ) 127 ENDDO 128 129 DO ij = 1,ip1jmp1 130 hscr( ij ) = teta(ij,l) 131 teta ( ij,l ) = tetam1(ij,l) * massem1(ij,l) / masse(ij,l) 132 & + dt * dteta(ij,l) / masse(ij,l) 133 ENDDO 134 134 135 135 c .... Calcul de la valeur moyenne, unique aux poles pour teta ...... 136 136 c 137 137 c 138 DO ij = 1, iim138 DO ij = 1, iim 139 139 tppn(ij) = aire( ij ) * teta( ij ,l) 140 140 tpps(ij) = aire(ij+ip1jm) * teta(ij+ip1jm,l) 141 ENDDO141 ENDDO 142 142 tpn = SSUM(iim,tppn,1)/apoln 143 143 tps = SSUM(iim,tpps,1)/apols 144 144 145 DO ij = 1, iip1145 DO ij = 1, iip1 146 146 teta( ij ,l) = tpn 147 147 teta(ij+ip1jm,l) = tps 148 ENDDO149 c 150 151 IF(leapf) THEN148 ENDDO 149 c 150 151 IF(leapf) THEN 152 152 CALL SCOPY ( ip1jmp1, uscr(1), 1, ucovm1(1, l), 1 ) 153 153 CALL SCOPY ( ip1jm, vscr(1), 1, vcovm1(1, l), 1 ) 154 154 CALL SCOPY ( ip1jmp1, hscr(1), 1, tetam1(1, l), 1 ) 155 END IF156 157 10 CONTINUE155 END IF 156 157 ENDDO ! of DO l = 1,llm 158 158 159 159 … … 185 185 c$$$ ENDIF 186 186 187 187 if (planet_type.eq."earth") then 188 188 ! Earth-specific treatment of first 2 tracers (water) 189 190 189 DO l = 1, llm 190 DO ij = 1, ip1jmp1 191 191 deltap(ij,l) = p(ij,l) - p(ij,l+1) 192 ENDDO193 192 ENDDO 194 195 CALL qminimum( q, nq, deltap ) 196 endif ! of if (planet_type.eq."earth")193 ENDDO 194 195 CALL qminimum( q, nq, deltap ) 197 196 198 197 c … … 200 199 c 201 200 202 DO iq = 1, nq201 DO iq = 1, nq 203 202 DO l = 1, llm 204 203 … … 216 215 217 216 ENDDO 218 ENDDO 219 220 221 CALL SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 ) 217 ENDDO 218 219 220 CALL SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 ) 221 222 endif ! of if (planet_type.eq."earth") 222 223 c 223 224 c 224 225 c ..... FIN de l'integration de q ....... 225 226 15 continue227 226 228 227 c ................................................................. -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/leapfrog.F
r1437 r1446 209 209 c -------------------------------------------------- 210 210 211 dq =0.211 dq(:,:,:)=0. 212 212 CALL pression ( ip1jmp1, ap, bp, ps, p ) 213 213 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) … … 253 253 CALL SCOPY ( ijp1llm, masse, 1, finvmaold, 1 ) 254 254 CALL filtreg ( finvmaold ,jjp1, llm, -2,2, .TRUE., 1 ) 255 256 ! Ehouarn: what is this for? zqmin & zqmax are not used anyway ...257 ! call minmax(ijp1llm,q(:,:,3),zqmin,zqmax)258 255 259 256 2 CONTINUE … … 632 629 633 630 634 if (planet_type.eq."earth") then631 ! if (planet_type.eq."earth") then 635 632 ! Write an Earth-format restart file 636 633 CALL dynredem1("restart.nc",0.0, 637 634 & vcov,ucov,teta,q,masse,ps) 638 endif ! of if (planet_type.eq."earth")635 ! endif ! of if (planet_type.eq."earth") 639 636 640 637 CLOSE(99) … … 744 741 745 742 IF(itau.EQ.itaufin) THEN 746 if (planet_type.eq."earth") then743 ! if (planet_type.eq."earth") then 747 744 CALL dynredem1("restart.nc",0.0, 748 745 & vcov,ucov,teta,q,masse,ps) 749 endif ! of if (planet_type.eq."earth")746 ! endif ! of if (planet_type.eq."earth") 750 747 ENDIF ! of IF(itau.EQ.itaufin) 751 748 -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/addfi_p.F
r1146 r1446 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 SUBROUTINE addfi_p(pdt, leapf, forward, … … 7 7 USE parallel 8 8 USE infotrac, ONLY : nqtot 9 USE control_mod, ONLY : planet_type 9 10 IMPLICIT NONE 10 11 c … … 154 155 c$OMP END MASTER 155 156 156 DO iq = 1, 2 157 if (planet_type=="earth") then 158 ! earth case, special treatment for first 2 tracers (water) 159 DO iq = 1, 2 157 160 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 158 161 DO k = 1,llm … … 163 166 ENDDO 164 167 c$OMP END DO NOWAIT 165 ENDDO166 167 DO iq = 3, nqtot168 ENDDO 169 170 DO iq = 3, nqtot 168 171 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 169 172 DO k = 1,llm … … 174 177 ENDDO 175 178 c$OMP END DO NOWAIT 176 ENDDO 179 ENDDO 180 else 181 ! general case, treat all tracers equally) 182 DO iq = 1, nqtot 183 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 184 DO k = 1,llm 185 DO j = ijb,ije 186 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt 187 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt ) 188 ENDDO 189 ENDDO 190 c$OMP END DO NOWAIT 191 ENDDO 192 endif ! of if (planet_type=="earth") 177 193 178 194 c$OMP MASTER -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/advtrac_p.F
r1403 r1446 132 132 ccc CALL filtreg ( massem ,jjp1, llm,-2, 2, .TRUE., 1 ) 133 133 c 134 ENDIF 134 ENDIF ! of IF(iadvtr.EQ.0) 135 135 136 136 iadvtr = iadvtr+1 … … 266 266 cym ----> Revérifier lors de la parallélisation des autres schemas 267 267 268 cym call massbar_p(massem,massebx,masseby) 268 cym call massbar_p(massem,massebx,masseby) 269 269 270 270 call vlspltgen_p( q,iadv, 2., massem, wg , … … 452 452 c$OMP BARRIER 453 453 454 ijb=ij_begin 455 ije=ij_end 454 if (planet_type=="earth") then 455 456 ijb=ij_begin 457 ije=ij_end 456 458 457 459 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 458 DO l = 1, llm460 DO l = 1, llm 459 461 DO ij = ijb, ije 460 462 finmasse(ij,l) = p(ij,l) - p(ij,l+1) 461 463 ENDDO 462 ENDDO464 ENDDO 463 465 c$OMP END DO 464 466 465 CALL qminimum_p( q, 2, finmasse )467 CALL qminimum_p( q, 2, finmasse ) 466 468 467 469 c------------------------------------------------------------------ … … 496 498 c$OMP BARRIER 497 499 iadvtr=0 500 endif ! of if (planet_type=="earth") 498 501 ENDIF ! if iadvtr.EQ.iapp_tracvl 499 502 -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/caladvtrac_p.F
r1403 r1446 8 8 * flxw, pk, iapptrac) 9 9 USE parallel 10 USE infotrac 11 USE control_mod 10 USE infotrac, ONLY : nqtot 11 USE control_mod, ONLY : iapp_tracvl,planet_type 12 12 c 13 13 IMPLICIT NONE … … 30 30 c ---------- 31 31 REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm) 32 REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 ) 32 REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot) 33 real :: dq( ip1jmp1,llm,nqtot) 33 34 REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm) 34 35 REAL :: flxw(ip1jmp1,llm) -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/gcm.F
r1403 r1446 276 276 endif 277 277 278 if (planet_type.eq."earth") then 279 #ifdef CPP_EARTH 278 ! if (planet_type.eq."earth") then 280 279 ! Load an Earth-format start file 281 280 CALL dynetat0("start.nc",vcov,ucov, 282 281 & teta,q,masse,ps,phis, time_0) 283 #else 284 ! SW model also has Earth-format start files 285 ! (but can be used without the CPP_EARTH directive) 286 if (iflag_phys.eq.0) then 287 CALL dynetat0("start.nc",vcov,ucov, 288 & teta,q,masse,ps,phis, time_0) 289 endif 290 #endif 291 endif ! of if (planet_type.eq."earth") 282 ! endif ! of if (planet_type.eq."earth") 283 292 284 c write(73,*) 'ucov',ucov 293 285 c write(74,*) 'vcov',vcov … … 494 486 #endif 495 487 496 if (planet_type.eq."earth") then 488 ! if (planet_type.eq."earth") then 489 ! Write an Earth-format restart file 497 490 CALL dynredem0_p("restart.nc", day_end, phis) 498 endif491 ! endif 499 492 500 493 ecripar = .TRUE. -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/infotrac.F90
r1443 r1446 65 65 INTEGER :: nqtrue ! number of tracers read from tracer.def, without higer order of moment 66 66 INTEGER :: iq, new_iq, iiq, jq, ierr 67 67 68 character(len=*),parameter :: modname="infotrac_init" 68 69 !----------------------------------------------------------------------- 69 70 ! Initialization : … … 99 100 OPEN(90,file='traceur.def',form='formatted',status='old', iostat=ierr) 100 101 IF(ierr.EQ.0) THEN 101 WRITE(lunout,*) 'Open traceur.def : ok'102 WRITE(lunout,*) trim(modname),': Open traceur.def : ok' 102 103 READ(90,*) nqtrue 103 104 ELSE 104 WRITE(lunout,*) 'Problem in opening traceur.def'105 WRITE(lunout,*) 'ATTENTIONusing defaut values'105 WRITE(lunout,*) trim(modname),': Problem in opening traceur.def' 106 WRITE(lunout,*) trim(modname),': WARNING using defaut values' 106 107 nqtrue=4 ! Defaut value 107 108 END IF 108 ! Attention! Only for planet_type=='earth' 109 nbtr=nqtrue-2 109 if ( planet_type=='earth') then 110 ! For Earth, water vapour & liquid tracers are not in the physics 111 nbtr=nqtrue-2 112 else 113 ! Other planets (for now); we have the same number of tracers 114 ! in the dynamics than in the physics 115 nbtr=nqtrue 116 endif 110 117 ELSE 111 118 ! nbtr has been read from INCA by init_cont_lmdz() in gcm.F … … 113 120 END IF 114 121 115 IF ( nqtrue < 2) THEN116 WRITE(lunout,*) 'nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum'122 IF ((planet_type=="earth").and.(nqtrue < 2)) THEN 123 WRITE(lunout,*) trim(modname),': nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum' 117 124 CALL abort_gcm('infotrac_init','Not enough tracers',1) 118 125 END IF … … 158 165 END DO 159 166 CLOSE(90) 160 ELSE ! Without tracer.def 167 ELSE ! Without tracer.def, set default values (for Earth!) 168 if ((nqtrue==4).and.(planet_type=="earth")) then 161 169 hadv(1) = 14 162 170 vadv(1) = 14 … … 171 179 vadv(4) = 10 172 180 tnom_0(4) = 'PB' 181 else 182 ! Error message, we need a traceur.def file 183 write(lunout,*) trim(modname),& 184 ': Cannot set default tracer names!' 185 write(lunout,*) trim(modname),' Make a traceur.def file!!!' 186 CALL abort_gcm('infotrac_init','Need a traceur.def file!',1) 187 endif ! of if (nqtrue==4) 173 188 END IF 174 189 175 WRITE(lunout,*) 'Valeur de traceur.def :'176 WRITE(lunout,*) 'nombre de traceurs ',nqtrue190 WRITE(lunout,*) trim(modname),': Valeur de traceur.def :' 191 WRITE(lunout,*) trim(modname),': nombre de traceurs ',nqtrue 177 192 DO iq=1,nqtrue 178 193 WRITE(lunout,*) hadv(iq),vadv(iq),tnom_0(iq) … … 216 231 new_iq=new_iq+10 ! 9 tracers added 217 232 ELSE 218 WRITE(lunout,*) 'This choice of advection schema is not available',iq,hadv(iq),vadv(iq)233 WRITE(lunout,*) trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq) 219 234 CALL abort_gcm('infotrac_init','Bad choice of advection schema - 1',1) 220 235 END IF … … 226 241 nqtot = new_iq 227 242 228 WRITE(lunout,*) 'The choice of advection schema for one or more tracers'243 WRITE(lunout,*) trim(modname),': The choice of advection schema for one or more tracers' 229 244 WRITE(lunout,*) 'makes it necessary to add tracers' 230 WRITE(lunout,*) nqtrue,' is the number of true tracers'231 WRITE(lunout,*) nqtot, ' is the total number of tracers needed'245 WRITE(lunout,*) trim(modname)//': ',nqtrue,' is the number of true tracers' 246 WRITE(lunout,*) trim(modname)//': ',nqtot, ' is the total number of tracers needed' 232 247 233 248 ELSE … … 257 272 iadv(new_iq)=11 258 273 ELSE 259 WRITE(lunout,*) 'This choice of advection schema is not available',iq,hadv(iq),vadv(iq)274 WRITE(lunout,*)trim(modname),': This choice of advection schema is not available',iq,hadv(iq),vadv(iq) 260 275 261 276 CALL abort_gcm('infotrac_init','Bad choice of advection schema - 2',1) … … 303 318 304 319 305 WRITE(lunout,*) 'Information stored in infotrac :'306 WRITE(lunout,*) 'iadv niadv tname ttext :'320 WRITE(lunout,*) trim(modname),': Information stored in infotrac :' 321 WRITE(lunout,*) trim(modname),': iadv niadv tname ttext :' 307 322 DO iq=1,nqtot 308 WRITE(lunout,*) iadv(iq),niadv(iq), tname(iq), ttext(iq) 323 WRITE(lunout,*) iadv(iq),niadv(iq),& 324 ' ',trim(tname(iq)),' ',trim(ttext(iq)) 309 325 END DO 310 326 … … 315 331 DO iq=1,nqtot 316 332 IF (iadv(iq)/=10 .AND. iadv(iq)/=14 .AND. iadv(iq)/=0) THEN 317 WRITE(lunout,*) 'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'333 WRITE(lunout,*)trim(modname),' STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ' 318 334 CALL abort_gcm('infotrac_init','In this version only iadv=10 and iadv=14 is tested!',1) 319 335 ELSE IF (iadv(iq)==14 .AND. iq/=1) THEN 320 WRITE(lunout,*) 'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ'336 WRITE(lunout,*)trim(modname),'STOP : The option iadv=',iadv(iq),' is not tested in this version of LMDZ' 321 337 CALL abort_gcm('infotrac_init','In this version iadv=14 is only permitted for water vapour!',1) 322 338 END IF -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/iniacademic.F
r1437 r1446 8 8 USE filtreg_mod 9 9 USE infotrac, ONLY : nqtot 10 USE control_mod 10 USE control_mod, ONLY: day_step,planet_type 11 11 #ifdef CPP_IOIPSL 12 12 USE IOIPSL … … 95 95 ! 1. Initializations for Earth-like case 96 96 ! -------------------------------------- 97 if (planet_type=="earth") then98 97 c 99 98 ! initialize planet radius, rotation rate,... … … 128 127 if (.not.read_start) then 129 128 phis(:)=0. 130 q(:,:,1)=1.e-10 131 q(:,:,2)=1.e-15 132 q(:,:,3:nqtot)=0. 129 q(:,:,:)=0 133 130 CALL sw_case_williamson91_6(vcov,ucov,teta,masse,ps) 134 131 endif … … 138 135 ! initializations for the academic case 139 136 137 ! if (planet_type=="earth") then 138 140 139 ! 1. local parameters 141 140 ! by convention, winter is in the southern hemisphere … … 219 218 enddo 220 219 220 221 ! else 222 ! write(lunout,*)"iniacademic: planet types other than earth", 223 ! & " not implemented (yet)." 224 ! stop 225 ! endif ! of if (planet_type=="earth") 226 221 227 ! 3. Initialize fields (if necessary) 222 228 IF (.NOT. read_start) THEN … … 245 251 246 252 ! bulk initialization of tracers 247 do i=1,nqtot 248 if (i.eq.1) q(:,:,i)=1.e-10 249 if (i.eq.2) q(:,:,i)=1.e-15 250 if (i.gt.2) q(:,:,i)=0. 251 enddo 253 if (planet_type=="earth") then 254 ! Earth: first two tracers will be water 255 do i=1,nqtot 256 if (i.eq.1) q(:,:,i)=1.e-10 257 if (i.eq.2) q(:,:,i)=1.e-15 258 if (i.gt.2) q(:,:,i)=0. 259 enddo 260 else 261 q(:,:,:)=0 262 endif ! of if (planet_type=="earth") 252 263 253 264 ! add random perturbation to temperature … … 261 272 enddo 262 273 274 ! maintain periodicity in longitude 263 275 do l=1,llm 264 276 do ij=1,ip1jmp1,iip1 … … 267 279 enddo 268 280 269 c PRINT *,' Appel test_period avec tetarappel '270 c CALL test_period ( ucov,vcov,tetarappel,q,p,phis )271 c PRINT *,' Appel test_period avec teta '272 c CALL test_period ( ucov,vcov,teta,q,p,phis )273 274 ! initialize a traceur on one column275 ! j=jjp1*3/4276 ! i=iip1/2277 ! ij=(j-1)*iip1+i278 ! q(ij,:,3)=1.279 280 281 ENDIF ! of IF (.NOT. read_start) 281 282 endif ! of if (iflag_phys.eq.2) 282 283 283 else284 write(lunout,*)"iniacademic: planet types other than earth",285 & " not implemented (yet)."286 stop287 endif ! of if (planet_type=="earth")288 return289 284 END 290 285 c----------------------------------------------------------------------- -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/integrd_p.F
r1403 r1446 6 6 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps0,masse,phis,finvmaold) 7 7 USE parallel 8 USE control_mod 8 USE control_mod, only : planet_type 9 9 IMPLICIT NONE 10 10 … … 279 279 280 280 CALL qminimum_p( q, nq, deltap ) 281 endif ! of if (planet_type.eq."earth")282 281 c 283 282 c ..... Calcul de la valeur moyenne, unique aux poles pour q ..... … … 337 336 ENDDO 338 337 c$OMP END DO NOWAIT 338 339 endif ! of if (planet_type.eq."earth") 340 339 341 c 340 342 c -
LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3dpar/leapfrog_p.F
r1438 r1446 234 234 235 235 c$OMP MASTER 236 dq =0.236 dq(:,:,:)=0. 237 237 CALL pression ( ip1jmp1, ap, bp, ps, p ) 238 238 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) … … 1488 1488 c$OMP MASTER 1489 1489 1490 if (planet_type.eq."earth") then1490 ! if (planet_type.eq."earth") then 1491 1491 ! Write an Earth-format restart file 1492 1492 CALL dynredem1_p("restart.nc",0.0, 1493 1493 & vcov,ucov,teta,q,masse,ps) 1494 endif ! of if (planet_type.eq."earth")1494 ! endif ! of if (planet_type.eq."earth") 1495 1495 1496 1496 ! CLOSE(99) … … 1681 1681 1682 1682 IF(itau.EQ.itaufin) THEN 1683 if (planet_type.eq."earth") then1683 ! if (planet_type.eq."earth") then 1684 1684 c$OMP MASTER 1685 1685 CALL dynredem1_p("restart.nc",0.0, 1686 1686 . vcov,ucov,teta,q,masse,ps) 1687 1687 c$OMP END MASTER 1688 endif ! of if (planet_type.eq."earth")1688 ! endif ! of if (planet_type.eq."earth") 1689 1689 ENDIF ! of IF(itau.EQ.itaufin) 1690 1690
Note: See TracChangeset
for help on using the changeset viewer.