Changeset 552 for trunk/LMDZ.MARS/libf/phymars
- Timestamp:
- Mar 2, 2012, 9:53:27 AM (13 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/callkeys.h
r544 r552 18 18 & ,dustbin,nqchem_min,nltemodel,nircorr 19 19 20 COMMON/callkeys_r/topdustref,solarcondate,semi,alphan, 20 COMMON/callkeys_r/topdustref,solarcondate,semi,alphan,euveff, & 21 21 & tke_heat_flux 22 22 … … 37 37 real alphan 38 38 real solarcondate 39 real euveff 39 40 real tke_heat_flux 40 41 -
trunk/LMDZ.MARS/libf/phymars/inifis.F
r551 r552 249 249 $ "1-> new correction", 250 250 $ "(matters only if callnirco2=T)" 251 nircorr= 0251 nircorr=1 !default value 252 252 call getin("nircorr",nircorr) 253 253 write(*,*) " nircorr = ",nircorr … … 594 594 write(*,*) " solarcondate = ",solarcondate 595 595 596 write(*,*) "UV heating efficiency:", 597 & "measured values between 0.19 and 0.23 (Fox et al. 1996)", 598 & "lower values may be used to compensate low 15 um cooling" 599 euveff=0.21 !default value 600 call getin("euveff",euveff) 601 write(*,*) " euveff = ", euveff 596 602 597 603 if (.not.callthermos) then -
trunk/LMDZ.MARS/libf/phymars/nirco2abs.F
r498 r552 50 50 #include "comdiurn.h" 51 51 #include "nirdata.h" 52 #include "tracer.h" 52 53 53 54 c----------------------------------------------------------------------- 54 55 c Input/Output 55 56 c ------------ 56 INTEGER ngrid,nlayer 57 58 REAL pplay(ngrid,nlayer) 59 REAL dist_sol,mu0(ngridmx),fract(ngridmx),declin 60 61 REAL pdtnirco2(ngrid,nlayer) 57 integer,intent(in) :: ngrid ! number of (horizontal) grid points 58 integer,intent(in) :: nlayer ! number of atmospheric layers 59 real,intent(in) :: pplay(ngrid,nlayer) ! Pressure 60 real,intent(in) :: dist_sol ! Sun-Mars distance (in AU) 61 integer,intent(in) :: nq ! number of tracers 62 real,intent(in) :: pq(ngrid,nlayer,nq) ! tracers 63 real,intent(in) :: mu0(ngridmx) ! solar angle 64 real,intent(in) :: fract(ngridmx) ! day fraction of the time interval 65 real,intent(in) :: declin ! latitude of sub-solar point 66 67 real,intent(out) :: pdtnirco2(ngrid,nlayer) ! heating rate (K/s) 62 68 c 63 69 c Local variables : … … 73 79 c local saved variables 74 80 c --------------------- 75 81 logical,save :: firstcall=.true. 82 real,save :: ico2=0 ! index of "co2" tracer 83 real,save :: io=0 ! index of "o" tracer 76 84 c p0noonlte is a pressure below which non LTE effects are significant. 77 85 c REAL p0nonlte … … 90 98 real p2011,cociente1,merge 91 99 real cor0,oco2gcm 92 integer nq93 real pq(ngrid,nlayer,nq)94 100 95 101 c---------------------------------------------------------------------- … … 97 103 c Initialisation 98 104 c -------------- 105 if (firstcall) then 106 if (nircorr.eq.1) then 107 ! we will need co2 and o tracers 108 ico2=igcm_co2 109 if (ico2==0) then 110 write(*,*) "nirco2abs error: I need a CO2 tracer" 111 write(*,*) " when running with nircorr==1" 112 stop 113 endif 114 io=igcm_o 115 if (io==0) then 116 write(*,*) "nirco2abs error: I need an O tracer" 117 write(*,*) " when running with nircorr==1" 118 stop 119 endif 120 endif 121 firstcall=.false. 122 endif 123 124 99 125 c co2heat is the heating by CO2 at 700Pa for a zero zenithal angle. 100 126 co2heat0=n_a*(1.52/dist_sol)**2/daysec … … 121 147 if(nircorr.eq.1) then 122 148 cor0=1./(1.+n_p0/pplay(ig,l))**n_b 123 if(pq(ig,l, 1).gt.1.e-6) then124 oco2gcm=pq(ig,l, 3)/pq(ig,l,1)149 if(pq(ig,l,ico2).gt.1.e-6) then 150 oco2gcm=pq(ig,l,io)/pq(ig,l,ico2) 125 151 else 126 152 oco2gcm=1.e6 … … 179 205 if(nircorr.eq.1) then 180 206 cor0=1./(1.+n_p0/pplay(ig,l))**n_b 181 oco2gcm=pq(ig,l, 3)/pq(ig,l,1)207 oco2gcm=pq(ig,l,io)/pq(ig,l,ico2) 182 208 cociente1=oco2gcm/oldoco2(l) 183 209 merge=alog10(cociente1)*alfa2(l)+alog10(cor0)* -
trunk/LMDZ.MARS/libf/phymars/tabfi.F
r224 r552 81 81 c ----------------------- 82 82 INTEGER setname, cluvdb, getdat 83 84 INTEGER lnblnk85 83 86 84 c----------------------------------------------------------------------- … … 296 294 297 295 298 do while(modif(1:1).ne.'hello')296 do ! neverending loop 299 297 write(*,*) 300 298 write(*,*) … … 306 304 307 305 write(*,*) 308 write(*,*) modif(1:lnblnk(modif)) , ' : '309 310 if ( modif(1:lnblnk(modif)) .eq. 'day_ini') then306 write(*,*) trim(modif) , ' : ' 307 308 if (trim(modif) .eq. 'day_ini') then 311 309 write(*,*) 'current value:',day_ini 312 310 write(*,*) 'enter new value:' … … 316 314 write(*,*) 'day_ini (new value):',day_ini 317 315 318 else if ( modif(1:lnblnk(modif)) .eq. 'z0') then316 else if (trim(modif) .eq. 'z0') then 319 317 write(*,*) 'current value (m):',z0_default 320 318 write(*,*) 'enter new value (m):' … … 324 322 write(*,*) ' z0 (new value):',z0_default 325 323 326 else if ( modif(1:lnblnk(modif)) .eq. 'emin_turb') then324 else if (trim(modif) .eq. 'emin_turb') then 327 325 write(*,*) 'current value:',emin_turb 328 326 write(*,*) 'enter new value:' … … 332 330 write(*,*) ' emin_turb (new value):',emin_turb 333 331 334 else if ( modif(1:lnblnk(modif)) .eq. 'lmixmin') then332 else if (trim(modif) .eq. 'lmixmin') then 335 333 write(*,*) 'current value:',lmixmin 336 334 write(*,*) 'enter new value:' … … 340 338 write(*,*) ' lmixmin (new value):',lmixmin 341 339 342 else if ( modif(1:lnblnk(modif)) .eq. 'emissiv') then340 else if (trim(modif) .eq. 'emissiv') then 343 341 write(*,*) 'current value:',emissiv 344 342 write(*,*) 'enter new value:' … … 348 346 write(*,*) ' emissiv (new value):',emissiv 349 347 350 else if ( modif(1:lnblnk(modif)) .eq. 'emisice') then348 else if (trim(modif) .eq. 'emisice') then 351 349 write(*,*) 'current value emisice(1) North:',emisice(1) 352 350 write(*,*) 'enter new value:' … … 364 362 write(*,*) ' emisice(2) (new value):',emisice(2) 365 363 366 else if ( modif(1:lnblnk(modif)) .eq. 'albedice') then364 else if (trim(modif) .eq. 'albedice') then 367 365 write(*,*) 'current value albedice(1) North:',albedice(1) 368 366 write(*,*) 'enter new value:' … … 380 378 write(*,*) ' albedice(2) (new value):',albedice(2) 381 379 382 else if ( modif(1:lnblnk(modif)) .eq. 'iceradius') then380 else if (trim(modif) .eq. 'iceradius') then 383 381 write(*,*) 'current value iceradius(1) North:',iceradius(1) 384 382 write(*,*) 'enter new value:' … … 396 394 write(*,*) ' iceradius(2) (new value):',iceradius(2) 397 395 398 else if ( modif(1:lnblnk(modif)) .eq. 'dtemisice') then396 else if (trim(modif) .eq. 'dtemisice') then 399 397 write(*,*) 'current value dtemisice(1) North:',dtemisice(1) 400 398 write(*,*) 'enter new value:' … … 412 410 write(*,*) ' dtemisice(2) (new value):',dtemisice(2) 413 411 414 else if ( modif(1:lnblnk(modif)) .eq. 'tauvis') then412 else if (trim(modif) .eq. 'tauvis') then 415 413 write(*,*) 'current value:',tauvis 416 414 write(*,*) 'enter new value:' … … 420 418 write(*,*) ' tauvis (new value):',tauvis 421 419 422 else if ( modif(1:lnblnk(modif)) .eq. 'obliquit') then420 else if (trim(modif) .eq. 'obliquit') then 423 421 write(*,*) 'current value:',obliquit 424 422 write(*,*) 'obliquit should be 25.19 on current Mars' … … 429 427 write(*,*) ' obliquit (new value):',obliquit 430 428 431 else if ( modif(1:lnblnk(modif)) .eq. 'peri_day') then429 else if (trim(modif) .eq. 'peri_day') then 432 430 write(*,*) 'current value:',peri_day 433 431 write(*,*) 'peri_day should be 485 on current Mars' … … 438 436 write(*,*) ' peri_day (new value):',peri_day 439 437 440 else if ( modif(1:lnblnk(modif)) .eq. 'periheli') then438 else if (trim(modif) .eq. 'periheli') then 441 439 write(*,*) 'current value:',periheli 442 440 write(*,*) 'perihelion should be 206.66 on current Mars' … … 447 445 write(*,*) ' periheli (new value):',periheli 448 446 449 else if ( modif(1:lnblnk(modif)) .eq. 'aphelie') then447 else if (trim(modif) .eq. 'aphelie') then 450 448 write(*,*) 'current value:',aphelie 451 449 write(*,*) 'aphelion should be 249.22 on current Mars' … … 456 454 write(*,*) ' aphelie (new value):',aphelie 457 455 458 else if ( modif(1:lnblnk(modif)) .eq. 'volcapa') then456 else if (trim(modif) .eq. 'volcapa') then 459 457 write(*,*) 'current value:',volcapa 460 458 write(*,*) 'enter new value:' … … 465 463 466 464 endif 467 enddo ! of do while(modif(1:1).ne.'hello')465 enddo ! of do ! neverending loop 468 466 469 467 999 continue
Note: See TracChangeset
for help on using the changeset viewer.