Changeset 3455
- Timestamp:
- Oct 9, 2024, 2:06:39 PM (6 weeks ago)
- Location:
- trunk/LMDZ.PLUTO/libf/phypluto
- Files:
-
- 6 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO/libf/phypluto/callkeys_mod.F90
r3372 r3455 6 6 logical,save :: calladj,calltherm,n2cond,callsoil 7 7 !$OMP THREADPRIVATE(calladj,calltherm,n2cond,callsoil) 8 logical,save :: callconduct,callmolvis,callmoldiff 9 !$OMP THREADPRIVATE(callconduct,callmolvis,callmoldiff) 8 10 logical,save :: season,diurnal,lwrite 9 11 !$OMP THREADPRIVATE(season,diurnal,lwrite) … … 204 206 real,save :: alpha_top ! cooling constant at top of atmosphere 205 207 real,save :: pref ! pressure at mid transition fo alpha_top (Pa) 206 real,save :: deltap ! width of transition to alpha_top (Pa) 208 real,save :: deltap ! width of transition to alpha_top (Pa) 207 209 !$OMP THREADPRIVATE(alpha_top,pref,deltap) 208 210 209 211 210 212 integer,save :: iddist -
trunk/LMDZ.PLUTO/libf/phypluto/inifis_mod.F90
r3439 r3455 406 406 if (is_master) write(*,*)trim(rname)//": alpha_soil = ",alpha_soil 407 407 408 ! Slab Ocean !AF24: removed409 410 408 ! Chemistry in the thermosphere 411 409 if (is_master) write(*,*) trim(rname)//": Use deposition ?" … … 418 416 call getin_p("haze",haze) 419 417 if (is_master) write(*,*)trim(rname)//": haze = ",haze 418 419 420 421 if (is_master) write(*,*)trim(rname)// "call thermal conduction ?" 422 callconduct=.false. ! default value 423 call getin_p("callconduct",callconduct) 424 if (is_master) write(*,*)trim(rname)// " callconduct = ",callconduct 425 426 if (is_master) write(*,*)trim(rname)// "call phitop ?" 427 phitop=0. ! default value 428 call getin_p("phitop",phitop) 429 if (is_master) write(*,*)trim(rname)// " phitop = ",phitop 430 431 if (is_master) write(*,*)trim(rname)// "call molecular viscosity ?" 432 callmolvis=.false. ! default value 433 call getin_p("callmolvis",callmolvis) 434 if (is_master) write(*,*)trim(rname)// " callmolvis = ",callmolvis 435 436 if (is_master) write(*,*)trim(rname)// "call molecular diffusion ?" 437 callmoldiff=.false. ! default value 438 call getin_p("callmoldiff",callmoldiff) 439 if (is_master) write(*,*)trim(rname)// " callmoldiff = ",callmoldiff 420 440 421 441 ! Global1D mean and solar zenith angle … … 1441 1461 if ((.not.tracer).and.(haze)) then 1442 1462 call abort_physic(rname, 'if haze are on, tracers must be on!', 1) 1443 1444 endif 1445 if (callgasvis.and..not.callsoil) then 1446 call abort_physic(rname, 'if callgasvis is set, callsoil must be true', 1) 1447 1448 endif 1463 endif 1464 if (callmolvis.and..not.callconduct) then 1465 call abort_physic(rname, 'if callmolvis is set, callconduct must be true', 1) 1466 endif 1449 1467 if (paleo.and..not.fast) then 1450 1468 call abort_physic(rname, 'if paleo is set, fast must be true', 1) 1451 1452 endif 1469 endif 1453 1470 if ((haze_proffix.or.haze_radproffix).and..not.aerohaze) then 1454 1471 call abort_physic(rname, 'for now, haze/rad proffix only works w aerohaze=T', 1) 1455 1456 endif 1472 endif 1457 1473 if (condcosurf.and.no_n2frost) then 1458 1474 call abort_physic(rname, "CO surface condensation and no_n2frost are both active which may not be relevant", 1) -
trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90
r3453 r3455 46 46 use comcstfi_mod, only: pi, g, rcp, r, rad, mugaz, cpp 47 47 use time_phylmdz_mod, only: daysec 48 use callkeys_mod, only: albedo_spectral_mode, calladj, calldifv, & 49 callrad, callsoil, nosurf, & 50 aerohaze, corrk, diagdtau,& 51 diurnal, enertest, fat1au, & 52 icetstep, intheat, iradia, kastprof, & 53 lwrite, mass_redistrib, meanOLR, & 54 fast,fasthaze,haze,metcloud,monoxcloud,& 55 n2cond,nearn2cond,noseason_day,conservn2, & 48 use callkeys_mod, only: albedo_spectral_mode, calladj, calldifv, & 49 callrad, callsoil, nosurf, & 50 callconduct,callmolvis,callmoldiff, & 51 aerohaze, corrk, diagdtau, & 52 diurnal, enertest, fat1au, & 53 icetstep, intheat, iradia, kastprof, & 54 lwrite, mass_redistrib, meanOLR, & 55 fast,fasthaze,haze,metcloud,monoxcloud, & 56 n2cond,nearn2cond,noseason_day,conservn2, & 56 57 convergeps,kbo,triton,paleo,paleoyears,glaflow, & 57 carbox, methane,condmetsurf,condcosurf, &58 oldplutovdifc,oldplutocorrk,oldplutosedim, &59 aerohaze,haze_proffix,haze_radproffix, &60 source_haze, tsurfmax, albmin_ch4, &61 season, sedimentation,generic_condensation, &62 specOLR, &63 startphy_file, testradtimes, &64 tracer, UseTurbDiff, &58 carbox, methane,condmetsurf,condcosurf, & 59 oldplutovdifc,oldplutocorrk,oldplutosedim, & 60 aerohaze,haze_proffix,haze_radproffix, & 61 source_haze, tsurfmax, albmin_ch4, & 62 season, sedimentation,generic_condensation, & 63 specOLR, & 64 startphy_file, testradtimes, & 65 tracer, UseTurbDiff, & 65 66 global1d, szangle 66 67 use generic_tracer_index_mod, only: generic_tracer_index … … 376 377 REAL zdqflow(ngrid,nq) 377 378 379 REAL zdtconduc(ngrid,nlayer) ! (K/s) 380 REAL zdumolvis(ngrid,nlayer) 381 REAL zdvmolvis(ngrid,nlayer) 382 real zdqmoldiff(ngrid,nlayer,nq) 383 378 384 ! Haze relatated tendancies 379 385 REAL zdqhaze(ngrid,nlayer,nq) … … 860 866 call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1)) 861 867 endif 868 869 870 871 ! -------------------------------------------------------- 872 ! 1.3 thermosphere 873 ! -------------------------------------------------------- 874 875 ! ajout de la conduction depuis la thermosphere 876 IF (callconduct) THEN 877 878 call conduction (ngrid,nlayer,ptimestep, & 879 pplay,pt,zzlay,zzlev,zdtconduc,tsurf) 880 DO l=1,nlayer 881 DO ig=1,ngrid 882 pdt(ig,l)=pdt(ig,l)+ zdtconduc(ig,l) 883 ENDDO 884 ENDDO 885 886 ENDIF 887 888 ! ajout de la viscosite moleculaire 889 IF (callmolvis) THEN 890 call molvis(ngrid,nlayer,ptimestep, & 891 pplay,pt,zzlay,zzlev, & 892 zdtconduc,pu,tsurf,zdumolvis) 893 call molvis(ngrid,nlayer,ptimestep, & 894 pplay,pt,zzlay,zzlev, & 895 zdtconduc,pv,tsurf,zdvmolvis) 896 897 DO l=1,nlayer 898 DO ig=1,ngrid 899 ! pdt(ig,l)=pdt(ig,l)+ zdtconduc(ig,l) 900 pdv(ig,l)=pdv(ig,l)+zdvmolvis(ig,l) 901 pdu(ig,l)=pdu(ig,l)+zdumolvis(ig,l) 902 ENDDO 903 ENDDO 904 ENDIF 905 906 IF (callmoldiff) THEN 907 call moldiff_red(ngrid,nlayer,nq, & 908 pplay,pplev,pt,pdt,pq,pdq,ptimestep, & 909 zzlay,zdtconduc,zdqmoldiff) 910 911 DO l=1,nlayer 912 DO ig=1,ngrid 913 DO iq=1, nq 914 pdq(ig,l,iq)=pdq(ig,l,iq)+zdqmoldiff(ig,l,iq) 915 ENDDO 916 ENDDO 917 ENDDO 918 ENDIF 919 920 if (conservn2) then 921 write(*,*) 'conservn2 thermo' 922 call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1)) 923 endif 924 862 925 863 926 !--------------------------------- -
trunk/LMDZ.PLUTO/libf/phypluto/surfdat_h.F90
r3275 r3455 16 16 real,allocatable,dimension(:) :: zmea,zstd,zsig,zgam,zthe 17 17 !$OMP THREADPRIVATE(zmea,zstd,zsig,zgam,zthe) 18 real phitop ! heatflux at top of atmosphere? for Triton !AF24 18 19 real ttop 19 20 real,allocatable,dimension(:) :: kp ! TB ref pressure 20 21 real p00 21 !$OMP THREADPRIVATE( ttop,kp,p00)22 !$OMP THREADPRIVATE(phitop,ttop,kp,p00) 22 23 ! surface properties ! TB16 23 24 real alb_n2b,alb_n2a,alb_ch4,alb_co,alb_tho,emis_n2b,emis_n2a -
trunk/LMDZ.PLUTO/libf/phypluto/tabfi_mod.F90
r3453 r3455 12 12 ! C. Hourdin 15/11/96 13 13 ! 14 ! Object: Lecture du tab_cntrl physique dans un fichier 14 ! Object: Lecture du tab_cntrl physique dans un fichier 15 15 ! ------ et initialisation des constantes physiques 16 16 ! … … 21 21 ! ------ 22 22 ! 23 ! - nid: unitne logique du fichier ou on va lire le tab_cntrl 24 ! (ouvert dans le programme appellant) 23 ! - nid: unitne logique du fichier ou on va lire le tab_cntrl 24 ! (ouvert dans le programme appellant) 25 25 ! 26 26 ! si nid=0: 27 27 ! pas de lecture du tab_cntrl mais 28 28 ! Valeurs par default des constantes physiques 29 ! 30 ! - tab0: Offset de tab_cntrl a partir duquel sont ranges 29 ! 30 ! - tab0: Offset de tab_cntrl a partir duquel sont ranges 31 31 ! les parametres physiques (50 pour start_archive) 32 32 ! … … 44 44 ! - p_rad 45 45 ! - p_omeg ! 46 ! - p_g ! Constantes physiques ayant des 46 ! - p_g ! Constantes physiques ayant des 47 47 ! - p_mugaz ! homonymes dynamiques 48 48 ! - p_daysec ! … … 58 58 use mod_phys_lmdz_para, only: is_parallel 59 59 use planete_mod, only: year_day, periastr, apoastr, peri_day, & 60 obliquit, z0, lmixmin, emin_turb 60 obliquit, z0, lmixmin, emin_turb, & 61 tpal, adjust 61 62 use comcstfi_mod, only: rad, omeg, g, mugaz, rcp, cpp, r 62 63 use time_phylmdz_mod, only: dtphys, daysec 63 64 use callkeys_mod, only: cpp_mugaz_mode 64 65 implicit none 65 66 66 67 include "netcdf.inc" 67 68 … … 87 88 LOGICAL :: found 88 89 CHARACTER(len=5) :: modname="tabfi" 89 90 90 91 write(*,*)"tabfi: nid=",nid," tab0=",tab0," Lmodif=",Lmodif 91 92 … … 97 98 lmax=0 ! not used anyways 98 99 !day_ini already set via inifis 99 time=0 100 time=0 100 101 ! Informations about planet for dynamics and physics 101 102 ! rad,cpp,g,r,rcp already initialized by inifis … … 219 220 p_rad=rad 220 221 221 ENDIF ! end of (nid = 0) 222 ENDIF ! end of (nid = 0) 222 223 223 224 !----------------------------------------------------------------------- 224 225 ! Write physical constants to output before modifying them 225 226 !----------------------------------------------------------------------- 226 227 227 228 6 FORMAT(a20,e15.6,e15.6) 228 229 5 FORMAT(a20,f12.2,f12.2) 229 230 230 231 write(*,*) '*****************************************************' 231 232 write(*,*) 'Reading tab_cntrl when calling tabfi before changes' … … 306 307 write(*,*) '(10) daysec : length of a sol (s)' 307 308 write(*,*) 308 309 309 310 310 311 do while(modif(1:1).ne.'hello') 311 312 write(*,*) … … 316 317 read(*,fmt='(a20)') modif 317 318 if (modif(1:1) .eq. ' ') goto 999 318 319 319 320 write(*,*) 320 321 write(*,*) modif(1:len_trim(modif)) , ' : ' … … 365 366 106 read(*,*,iostat=ierr) emisice(1) 366 367 if(ierr.ne.0) goto 106 367 write(*,*) 368 write(*,*) 368 369 write(*,*) ' emisice(1) (new value):',emisice(1) 369 370 write(*,*) … … 373 374 107 read(*,*,iostat=ierr) emisice(2) 374 375 if(ierr.ne.0) goto 107 375 write(*,*) 376 write(*,*) 376 377 write(*,*) ' emisice(2) (new value):',emisice(2) 377 378 … … 381 382 110 read(*,*,iostat=ierr) iceradius(1) 382 383 if(ierr.ne.0) goto 110 383 write(*,*) 384 write(*,*) 384 385 write(*,*) ' iceradius(1) (new value):',iceradius(1) 385 386 write(*,*) … … 389 390 111 read(*,*,iostat=ierr) iceradius(2) 390 391 if(ierr.ne.0) goto 111 391 write(*,*) 392 write(*,*) 392 393 write(*,*) ' iceradius(2) (new value):',iceradius(2) 393 394 … … 397 398 112 read(*,*,iostat=ierr) dtemisice(1) 398 399 if(ierr.ne.0) goto 112 399 write(*,*) 400 write(*,*) 400 401 write(*,*) ' dtemisice(1) (new value):',dtemisice(1) 401 402 write(*,*) … … 405 406 113 read(*,*,iostat=ierr) dtemisice(2) 406 407 if(ierr.ne.0) goto 113 407 write(*,*) 408 write(*,*) 408 409 write(*,*) ' dtemisice(2) (new value):',dtemisice(2) 409 410 … … 414 415 115 read(*,*,iostat=ierr) obliquit 415 416 if(ierr.ne.0) goto 115 416 write(*,*) 417 write(*,*) 417 418 write(*,*) ' obliquit (new value):',obliquit 418 419 … … 423 424 116 read(*,*,iostat=ierr) peri_day 424 425 if(ierr.ne.0) goto 116 425 write(*,*) 426 write(*,*) 426 427 write(*,*) ' peri_day (new value):',peri_day 427 428 … … 432 433 117 read(*,*,iostat=ierr) periastr 433 434 if(ierr.ne.0) goto 117 434 write(*,*) 435 write(*,*) 435 436 write(*,*) ' periastr (new value):',periastr 436 437 437 438 else if (modif(1:len_trim(modif)) .eq. 'apoastr') then 438 439 write(*,*) 'current value:',apoastr … … 441 442 118 read(*,*,iostat=ierr) apoastr 442 443 if(ierr.ne.0) goto 118 443 write(*,*) 444 write(*,*) 444 445 write(*,*) ' apoastr (new value):',apoastr 445 446 446 447 else if (modif(1:len_trim(modif)) .eq. 'volcapa') then 447 448 write(*,*) 'current value:',volcapa … … 449 450 119 read(*,*,iostat=ierr) volcapa 450 451 if(ierr.ne.0) goto 119 451 write(*,*) 452 write(*,*) 452 453 write(*,*) ' volcapa (new value):',volcapa 453 454 454 455 else if (modif(1:len_trim(modif)).eq.'rad') then 455 456 write(*,*) 'current value:',rad … … 457 458 120 read(*,*,iostat=ierr) rad 458 459 if(ierr.ne.0) goto 120 459 write(*,*) 460 write(*,*) 460 461 write(*,*) ' rad (new value):',rad 461 462 … … 465 466 121 read(*,*,iostat=ierr) omeg 466 467 if(ierr.ne.0) goto 121 467 write(*,*) 468 write(*,*) 468 469 write(*,*) ' omeg (new value):',omeg 469 470 470 471 else if (modif(1:len_trim(modif)).eq.'g') then 471 472 write(*,*) 'current value:',g … … 473 474 122 read(*,*,iostat=ierr) g 474 475 if(ierr.ne.0) goto 122 475 write(*,*) 476 write(*,*) 476 477 write(*,*) ' g (new value):',g 477 478 … … 481 482 123 read(*,*,iostat=ierr) mugaz 482 483 if(ierr.ne.0) goto 123 483 write(*,*) 484 write(*,*) 484 485 write(*,*) ' mugaz (new value):',mugaz 485 486 r=8.314511/(mugaz/1000.0) … … 491 492 124 read(*,*,iostat=ierr) rcp 492 493 if(ierr.ne.0) goto 124 493 write(*,*) 494 write(*,*) 494 495 write(*,*) ' rcp (new value):',rcp 495 496 r=8.314511/(mugaz/1000.0) … … 502 503 call su_gases 503 504 call calc_cpp_mugaz 504 write(*,*) 505 write(*,*) 505 506 write(*,*) ' cpp (new value):',cpp 506 507 write(*,*) ' mugaz (new value):',mugaz … … 508 509 rcp=r/cpp 509 510 write(*,*) ' rcp (new value):',rcp 510 511 511 512 else if (modif(1:len_trim(modif)).eq.'daysec') then 512 513 write(*,*) 'current value:',daysec … … 514 515 125 read(*,*,iostat=ierr) daysec 515 516 if(ierr.ne.0) goto 125 516 write(*,*) 517 write(*,*) 517 518 write(*,*) ' daysec (new value):',daysec 518 519 … … 520 521 else if (modif(1:len_trim(modif)).eq.'year_day') then 521 522 write(*,*) 'current value:',year_day 522 write(*,*) 'enter new value:' 523 write(*,*) 'enter new value:' 523 524 126 read(*,*,iostat=ierr) year_day 524 525 if(ierr.ne.0) goto 126 … … 534 535 ! Write values of physical constants after modifications 535 536 !----------------------------------------------------------------------- 536 537 537 538 write(*,*) '*****************************************************' 538 539 write(*,*) 'Reading tab_cntrl when calling tabfi AFTER changes' … … 548 549 write(*,5) '(9) rcp',tab_cntrl(tab0+9),rcp 549 550 write(*,6) '(11) dtphys?',tab_cntrl(tab0+11),dtphys 550 551 551 552 write(*,5) '(14) year_day',tab_cntrl(tab0+14),year_day 552 553 write(*,5) '(15) periastr',tab_cntrl(tab0+15),periastr … … 554 555 write(*,5) '(17) peri_day',tab_cntrl(tab0+17),peri_day 555 556 write(*,5) '(18) obliquit',tab_cntrl(tab0+18),obliquit 556 557 557 558 write(*,6) '(19) z0',tab_cntrl(tab0+19),z0 558 559 write(*,6) '(21) emin_turb',tab_cntrl(tab0+21),emin_turb 559 560 write(*,5) '(20) lmixmin',tab_cntrl(tab0+20),lmixmin 560 561 561 562 write(*,5) '(26) emissiv',tab_cntrl(tab0+26),emissiv 562 563 write(*,5) '(24) emisice(1)',tab_cntrl(tab0+24),emisice(1) … … 566 567 write(*,5) '(33) dtemisice(1)',tab_cntrl(tab0+33),dtemisice(1) 567 568 write(*,5) '(34) dtemisice(2)',tab_cntrl(tab0+34),dtemisice(2) 568 569 569 570 write(*,5) '(35) volcapa',tab_cntrl(tab0+35),volcapa 570 571 571 write(*,*) 572 write(*,*) 572 write(*,*) 573 write(*,*) 573 574 574 575 ENDIF ! of if (Lmodif == 1)
Note: See TracChangeset
for help on using the changeset viewer.