Changeset 909
- Timestamp:
- Feb 14, 2008, 5:27:13 PM (17 years ago)
- Location:
- LMDZ4/trunk/libf/phylmd
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/phys_local_var_mod.F90
r904 r909 7 7 ! Declaration des variables 8 8 9 REAL, ALLOCATABLE :: t_seri(:,:), q_seri(:,:)10 REAL, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:)11 REAL, ALLOCATABLE :: u_seri(:,:), v_seri(:,:)9 REAL, ALLOCATABLE :: t_seri(:,:), q_seri(:,:) 10 REAL, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:) 11 REAL, ALLOCATABLE :: u_seri(:,:), v_seri(:,:) 12 12 13 13 REAL, ALLOCATABLE :: tr_seri(:,:,:) 14 REAL, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:) 15 REAL, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:) 16 REAL, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:) 17 REAL, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:) 18 REAL, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:) 19 REAL, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:) 20 REAL, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:) 21 REAL, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:) 22 REAL, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:) 23 !tendances dues a oro et lif 24 REAL, ALLOCATABLE :: d_t_oli(:,:) 25 REAL, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:) 26 REAL, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:) 27 REAL, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:) 28 REAL, ALLOCATABLE :: d_t_oro(:,:) 29 REAL, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:) 30 REAL, ALLOCATABLE :: d_t_lif(:,:) 31 REAL, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:) 32 ! tendance du a la conersion Ec -> E thermique 33 REAL, ALLOCATABLE :: d_t_ec(:,:) 34 REAL, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:) 14 35 CONTAINS 15 36 … … 18 39 use dimphy 19 40 IMPLICIT NONE 41 #include "indicesol.h" 20 42 allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev)) 21 43 allocate(u_seri(klon,klev),v_seri(klon,klev)) 44 45 allocate(tr_seri(klon,klev,nbtr)) 46 allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev)) 47 allocate(d_t_con(klon,klev),d_q_con(klon,klev)) 48 allocate(d_u_con(klon,klev),d_v_con(klon,klev)) 49 allocate(d_t_wake(klon,klev),d_q_wake(klon,klev)) 50 allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev)) 51 allocate(d_ql_lsc(klon,klev)) 52 allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev)) 53 allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev)) 54 allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev)) 55 allocate(d_t_eva(klon,klev),d_q_eva(klon,klev)) 56 allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev)) 57 allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev)) 58 allocate(d_t_oli(klon,klev),d_t_oro(klon,klev)) 59 allocate(d_u_oli(klon,klev),d_v_oli(klon,klev)) 60 allocate(d_u_oro(klon,klev),d_v_oro(klon,klev)) 61 allocate(d_t_lif(klon,klev),d_t_ec(klon,klev)) 62 allocate(d_u_lif(klon,klev),d_v_lif(klon,klev)) 63 allocate(d_ts(klon,klev), d_tr(klon,klev,nbtr)) 22 64 END SUBROUTINE phys_local_var_init 23 65 … … 26 68 use dimphy 27 69 IMPLICIT NONE 70 #include "indicesol.h" 28 71 deallocate(t_seri,q_seri,ql_seri,qs_seri) 29 72 deallocate(u_seri,v_seri) 73 74 deallocate(tr_seri) 75 deallocate(d_t_dyn,d_q_dyn) 76 deallocate(d_t_con,d_q_con) 77 deallocate(d_u_con,d_v_con) 78 deallocate(d_t_wake,d_q_wake) 79 deallocate(d_t_lsc,d_q_lsc) 80 deallocate(d_ql_lsc) 81 deallocate(d_t_ajsb,d_q_ajsb) 82 deallocate(d_t_ajs,d_q_ajs) 83 deallocate(d_u_ajs,d_v_ajs) 84 deallocate(d_t_eva,d_q_eva) 85 deallocate(d_t_vdf,d_q_vdf) 86 deallocate(d_u_vdf,d_v_vdf) 87 deallocate(d_t_oli,d_t_oro) 88 deallocate(d_u_oli,d_v_oli) 89 deallocate(d_u_oro,d_v_oro) 90 deallocate(d_t_lif,d_t_ec) 91 deallocate(d_u_lif,d_v_lif) 92 deallocate(d_ts, d_tr) 30 93 END SUBROUTINE phys_local_var_end 31 94 -
LMDZ4/trunk/libf/phylmd/physiq.F
r904 r909 28 28 USE pbl_surface_mod, ONLY : pbl_surface 29 29 USE phys_local_var_mod ! Variables internes non sauvegardees de la physique 30 USE phys_state_var_mod, klon_glo=>klon ! Variables sauvegardees de la physique 30 31 31 32 … … 34 35 USE ocean_forced_mod, ONLY : ocean_forced_get_vars 35 36 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 37 USE phys_output_mod 36 38 37 39 IMPLICIT none … … 123 125 parameter(rnpb=.true.) 124 126 #endif 125 c ocean = type de modele ocean a utiliser: force, slab, couple126 character*6 ocean127 SAVE ocean128 c$OMP THREADPRIVATE(ocean)129 127 130 128 cIM "slab" ocean … … 143 141 ccc LOGICAL soil_model 144 142 ccc PARAMETER (soil_model=.FALSE.) 145 logical ok_veget146 save ok_veget147 c$OMP THREADPRIVATE(ok_veget)148 c parameter (ok_veget = .true.)149 c parameter (ok_veget = .false.)150 143 c====================================================================== 151 144 c Dans les versions precedentes, l'eau liquide nuageuse utilisee dans … … 228 221 REAL t(klon,klev),theta(klon,klev) 229 222 REAL qx(klon,klev,nqmax) 230 231 REAL,allocatable,save :: t_ancien(:,:), q_ancien(:,:)232 c$OMP THREADPRIVATE(t_ancien, q_ancien)233 LOGICAL ancien_ok234 SAVE ancien_ok235 c$OMP THREADPRIVATE(ancien_ok)236 REAL d_t_dyn(klon,klev)237 REAL d_q_dyn(klon,klev)238 223 239 224 REAL omega(klon,klev) … … 635 620 c Variables propres a la physique 636 621 c 637 REAL dtime638 SAVE dtime ! pas temporel de la physique639 c$OMP THREADPRIVATE(dtime)640 c641 622 INTEGER radpas 642 623 SAVE radpas ! frequence d'appel rayonnement 643 624 c$OMP THREADPRIVATE(radpas) 644 625 c 645 REAL,allocatable,save :: radsol(:)646 c$OMP THREADPRIVATE(radsol)647 cym SAVE radsol ! bilan radiatif au sol calcule par code radiatif648 c649 REAL,allocatable,save :: rlat(:)650 c$OMP THREADPRIVATE(rlat)651 cym SAVE rlat ! latitude pour chaque point652 c653 REAL,allocatable,save :: rlon(:)654 c$OMP THREADPRIVATE(rlon)655 cym SAVE rlon ! longitude pour chaque point656 657 626 REAL,SAVE,ALLOCATABLE :: rlonPOS(:) 658 627 c$OMP THREADPRIVATE(rlonPOS) … … 666 635 c$OMP THREADPRIVATE(itap) 667 636 c 668 REAL co2_ppm_etat0669 c670 REAL solaire_etat0671 c672 637 real slp(klon) ! sea level pressure 673 674 REAL,allocatable,save :: ftsol(:,:)675 c$OMP THREADPRIVATE(ftsol) ! temperature du sol676 638 677 639 cIM … … 690 652 REAL,save :: solarlong0 691 653 c 692 REAL,allocatable,save :: falb1(:,:)693 c$OMP THREADPRIVATE(falb1) ! albedo par type de surface pour SW visible694 c695 REAL,allocatable,save :: falb2(:,:)696 c$OMP THREADPRIVATE(falb2) ! albedo par type de surface pour SW proche IR697 698 c699 c700 654 c Parametres de l'Orographie a l'Echelle Sous-Maille (OESM): 701 c702 REAL,allocatable,save :: zmea(:)703 c$OMP THREADPRIVATE(zmea)704 cym SAVE zmea ! orographie moyenne705 c706 REAL,allocatable,save :: zstd(:)707 c$OMP THREADPRIVATE(zstd)708 cym SAVE zstd ! deviation standard de l'OESM709 c710 REAL,allocatable,save :: zsig(:)711 c$OMP THREADPRIVATE(zsig)712 cym SAVE zsig ! pente de l'OESM713 c714 REAL,allocatable,save :: zgam(:)715 c$OMP THREADPRIVATE(zgam)716 cym save zgam ! anisotropie de l'OESM717 c718 REAL,allocatable,save :: zthe(:)719 c$OMP THREADPRIVATE(zthe)720 cym SAVE zthe ! orientation de l'OESM721 c722 REAL,allocatable,save :: zpic(:)723 c$OMP THREADPRIVATE(zpic)724 cym SAVE zpic ! Maximum de l'OESM725 c726 REAL,allocatable,save :: zval(:)727 c$OMP THREADPRIVATE(zval)728 cym SAVE zval ! Minimum de l'OESM729 c730 REAL,allocatable,save :: rugoro(:)731 c$OMP THREADPRIVATE(rugoro)732 cym SAVE rugoro ! longueur de rugosite de l'OESM733 655 c 734 656 cIM 141004 REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon) … … 919 841 #endif 920 842 921 cAA922 REAL,allocatable,save :: rain_fall(:) ! pluie923 c$OMP THREADPRIVATE(rain_fall)924 REAL,allocatable,save :: snow_fall(:) ! neige925 c$OMP THREADPRIVATE(snow_fall)926 cym save snow_fall, rain_fall927 928 843 cIM cf FH pour Tiedtke 080604 929 844 REAL rain_tiedtke(klon),snow_tiedtke(klon) … … 958 873 SAVE lmt_pas ! frequence de mise a jour 959 874 c$OMP THREADPRIVATE(lmt_pas) 960 REAL,allocatable,save :: pctsrf(:,:)961 c$OMP THREADPRIVATE(pctsrf)962 875 cIM 963 876 REAL pctsrf_new(klon,nbsrf) !pourcentage surfaces issus d'ORCHIDEE … … 1024 937 c Variables locales 1025 938 c 1026 real,allocatable,save :: clwcon(:,:),rnebcon(:,:)1027 c$OMP THREADPRIVATE(clwcon,rnebcon)1028 939 real,allocatable,save :: clwcon0(:,:),rnebcon0(:,:) 1029 940 cym save rnebcon, clwcon … … 1042 953 REAL fluxu(klon,klev, nbsrf) ! flux turbulent de vitesse u 1043 954 REAL fluxv(klon,klev, nbsrf) ! flux turbulent de vitesse v 1044 1045 REAL, DIMENSION(:,:,:), ALLOCATABLE, SAVE :: pbl_tke ! turb kinetic energy1046 c !$OMP THREADPRIVATE(pbl_tke)1047 1048 955 c 1049 956 REAL zxfluxt(klon, klev) … … 1060 967 REAL,allocatable,save :: cool0(:,:) ! refroidissement infrarouge ciel clair 1061 968 c$OMP THREADPRIVATE(cool0) 1062 REAL,allocatable,save :: topsw(:), toplw(:) , solsw(:), sollw(:)1063 c$OMP THREADPRIVATE(topsw,toplw ,solsw,sollw)969 REAL,allocatable,save :: topsw(:), toplw(:) 970 c$OMP THREADPRIVATE(topsw,toplw) 1064 971 real,allocatable,save :: sollwdown(:) ! downward LW flux at surface 1065 972 c$OMP THREADPRIVATE(sollwdown) … … 1110 1017 REAL zx_t, zx_qs, zdelta, zcor, zfra, zlvdcp, zlsdcp 1111 1018 real zqsat(klon,klev) 1112 INTEGER i, k, iq, ig, j, nsrf, ll, l, iiq 1019 INTEGER i, k, iq, ig, j, nsrf, ll, l, iiq, iff 1113 1020 REAL t_coup 1114 1021 PARAMETER (t_coup=234.0) … … 1163 1070 c eva: evaporation de l'eau liquide nuageuse 1164 1071 c vdf: couche limite (Vertical DiFfusion) 1165 REAL d_t_con(klon,klev),d_q_con(klon,klev)1166 REAL d_t_wake(klon,klev),d_q_wake(klon,klev)1167 REAL,SAVE,ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)1168 c$OMP THREADPRIVATE(d_u_con,d_v_con)1169 REAL d_t_lsc(klon,klev),d_q_lsc(klon,klev),d_ql_lsc(klon,klev)1170 REAL d_t_ajsb(klon,klev), d_q_ajsb(klon,klev)1171 REAL d_t_ajs(klon,klev), d_q_ajs(klon,klev)1172 REAL d_u_ajs(klon,klev), d_v_ajs(klon,klev)1173 REAL d_t_eva(klon,klev),d_q_eva(klon,klev)1174 REAL d_t_oli(klon,klev) !tendances dues a oro et lif1175 1072 REAL rneb(klon,klev) 1176 1073 … … 1206 1103 c$OMP THREADPRIVATE(snow_con) 1207 1104 REAL snow_lsc(klon) 1208 REAL d_ts(klon,nbsrf) 1209 c 1210 REAL d_u_vdf(klon,klev), d_v_vdf(klon,klev) 1211 REAL d_t_vdf(klon,klev), d_q_vdf(klon,klev) 1212 c 1213 REAL d_u_oro(klon,klev), d_v_oro(klon,klev) 1214 REAL d_t_oro(klon,klev) 1215 REAL d_u_lif(klon,klev), d_v_lif(klon,klev) 1216 REAL d_t_lif(klon,klev) 1217 REAL d_u_oli(klon,klev), d_v_oli(klon,klev) !tendances dues a oro et lif 1218 1219 REAL,allocatable,save :: ratqs(:,:) 1220 c$OMP THREADPRIVATE(ratqs) 1105 c 1221 1106 REAL ratqss(klon,klev),ratqsc(klon,klev) 1222 1107 real ratqsbas,ratqshaut … … 1269 1154 c Variables locales pour effectuer les appels en serie 1270 1155 c 1271 REAL tr_seri(klon,klev,nbtr)1272 REAL d_tr(klon,klev,nbtr)1273 1274 1156 REAL zx_rh(klon,klev) 1275 1157 cIM RH a 2m (la surface) … … 1392 1274 c$OMP THREADPRIVATE(if_ebil) 1393 1275 c+jld ec_conser 1394 REAL d_t_ec(klon,klev) ! tendance du a la conersion Ec -> E thermique1395 1276 REAL ZRCPD 1396 1277 c-jld ec_conser … … 1512 1393 if (first) then 1513 1394 1514 allocate( t_ancien(klon,klev), q_ancien(klon,klev))1515 1395 allocate( swdn0(klon,klevp1), swdn(klon,klevp1)) 1516 1396 allocate( swup0(klon,klevp1), swup(klon,klevp1)) … … 1522 1402 allocate( LWup200clr(klon), LWup200(klon)) 1523 1403 allocate( LWdnTOA(klon), LWdnTOAclr(klon)) 1524 allocate( radsol(klon))1525 allocate( rlat(klon))1526 allocate( rlon(klon))1527 allocate( ftsol(klon,nbsrf))1528 1404 allocate( deltat(klon)) 1529 allocate( falb1(klon,nbsrf))1530 allocate( falb2(klon,nbsrf))1531 allocate( zmea(klon))1532 allocate( zstd(klon))1533 allocate( zsig(klon))1534 allocate( zgam(klon))1535 allocate( zthe(klon))1536 allocate( zpic(klon))1537 allocate( zval(klon))1538 allocate( rugoro(klon))1539 1405 allocate( zuthe(klon),zvthe(klon)) 1540 1406 allocate( alb_neig(klon)) … … 1569 1435 allocate( pfrac_nucl(klon,klev)) 1570 1436 allocate( pfrac_1nucl(klon,klev)) 1571 allocate( rain_fall(klon) )1572 allocate( snow_fall(klon) )1573 1437 allocate( total_rain(klon), nday_rain(klon)) 1574 allocate( pctsrf(klon,nbsrf))1575 1438 allocate( albsol1(klon)) 1576 1439 allocate( albsol2(klon)) 1577 1440 allocate( wo(klon,klev)) 1578 allocate( clwcon(klon,klev),rnebcon(klon,klev))1579 1441 allocate( heat(klon,klev) ) 1580 1442 allocate( heat0(klon,klev) ) 1581 1443 allocate( cool(klon,klev) ) 1582 1444 allocate( cool0(klon,klev) ) 1583 allocate( topsw(klon), toplw(klon) , solsw(klon), sollw(klon))1445 allocate( topsw(klon), toplw(klon)) 1584 1446 allocate( sollwdown(klon) ) 1585 1447 allocate( sollwdownclr(klon) ) … … 1592 1454 allocate( bbase(klon) ) 1593 1455 allocate( ibas_con(klon), itop_con(klon)) 1594 allocate( ratqs(klon,klev))1595 1456 allocate( sulfate_pi(klon, klev)) 1596 1457 allocate( paire_ter(klon)) … … 1639 1500 allocate( snow_con(klon)) 1640 1501 allocate( tnondef(klon,nlevSTD,nout)) 1641 allocate( d_u_con(klon,klev),d_v_con(klon,klev))1642 1502 1643 1503 print*, '=================================================' 1504 print*, 'Allocation des variables locales et sauvegardees' 1505 call phys_local_var_init 1506 call phys_state_var_init 1507 print*, '=================================================' 1508 1644 1509 paire_ter(:)=0. 1645 1510 clwcon(:,:)=0. … … 1654 1519 first=.false. 1655 1520 1656 print*, '================================================='1657 print*, 'Allocation des variables locales non sauvegardees'1658 call phys_local_var_init1659 print*, '================================================='1660 1661 1521 endif ! fisrt 1662 1522 … … 1727 1587 !rv 1728 1588 !ACo 1729 d_u_con(:,:) = 0.01730 d_v_con(:,:) = 0.01731 1589 rnebcon0(:,:) = 0.0 1732 1590 clwcon0(:,:) = 0.0 … … 1771 1629 PRINT*, "Using method MELLOR&YAMADA" 1772 1630 endif 1773 ! NB! pbl_tke could/should be read and written from (re)startphy.nc1774 ALLOCATE(pbl_tke(klon,klev+1,nbsrf))1775 1631 pbl_tke(:,:,:) = 1.e-8 1776 1632 … … 2000 1856 #ifdef CPP_IOIPSL 2001 1857 2002 #ifdef histhf 2003 #include "ini_histhf.h" 2004 #endif 2005 2006 #ifdef histday 2007 #include "ini_histday.h" 1858 c Commente par abderrahmane 11 2 08 1859 c#ifdef histhf 1860 c#include "ini_histhf.h" 1861 c#endif 1862 1863 c#ifdef histday 1864 c#include "ini_histday.h" 2008 1865 cIM rajout diagnostiques bilan KP pour analyse MJO par Jun-Ichi Yano 2009 1866 c#include "ini_bilKP_ins.h" 2010 1867 c#include "ini_bilKP_ave.h" 2011 #endif 2012 2013 #ifdef histmth 2014 #include "ini_histmth.h" 2015 #endif 2016 2017 #ifdef histins 2018 #include "ini_histins.h" 2019 #endif 1868 c#endif 1869 1870 c#ifdef histmth 1871 c#include "ini_histmth.h" 1872 c#endif 1873 1874 c#ifdef histins 1875 c#include "ini_histins.h" 1876 c#endif 1877 1878 call phys_output_open ( jj_nb, jjmp1, nqmax, 1879 & nlevSTD, clevSTD, nbteta, ctetaSTD, 1880 & dtime, presnivs, ok_veget, ocean, iflag_pbl, 1881 & ok_mensuel,ok_journe,ok_hf,ok_instan, 1882 & rlon, rlat, nid_files) 1883 2020 1884 2021 1885 #ifdef histISCCP … … 3841 3705 ENDIF 3842 3706 3843 #ifdef histhf 3844 #include "write_histhf.h" 3845 #endif 3846 3847 #ifdef histday 3848 #include "write_histday.h" 3849 #endif 3850 3851 #ifdef histmth 3852 #include "write_histmth.h" 3853 #endif 3854 3855 #ifdef histins 3856 #include "write_histins.h" 3857 #endif 3707 3708 c Commente par abderrahmane le 11 2 08 3709 c#ifdef histhf 3710 c#include "write_histhf.h" 3711 c#endif 3712 3713 c#ifdef histday 3714 c#include "write_histday.h" 3715 c#endif 3716 3717 c#ifdef histmth 3718 c#include "write_histmth.h" 3719 c#endif 3720 3721 c#ifdef histins 3722 c#include "write_histins.h" 3723 c#endif 3724 3725 #include "phys_output_write.h" 3858 3726 3859 3727 #ifdef histISCCP
Note: See TracChangeset
for help on using the changeset viewer.