Changeset 1999 for LMDZ5/branches/testing/libf/dyn3dmem
- Timestamp:
- Mar 20, 2014, 10:57:19 AM (11 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 125 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1922-1927,1929-1933,1937-1939,1943-1997
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/dyn3dmem/addfi_loc.F
r1910 r1999 55 55 c ----------- 56 56 c 57 REAL pdt 58 c 59 REAL pvcov(ijb_v:ije_v,llm),pucov(ijb_u:ije_u,llm) 60 REAL pteta(ijb_u:ije_u,llm),pq(ijb_u:ije_u,llm,nqtot) 61 REAL pps(ijb_u:ije_u) 62 c 63 REAL pdvfi(ijb_v:ije_v,llm),pdufi(ijb_u:ije_u,llm) 64 REAL pdqfi(ijb_u:ije_u,llm,nqtot),pdhfi(ijb_u:ije_u,llm) 65 REAL pdpfi(ijb_u:ije_u) 66 c 67 LOGICAL leapf,forward 57 REAL,INTENT(IN) :: pdt ! time step for the integration (s) 58 c 59 REAL,INTENT(INOUT) :: pvcov(ijb_v:ije_v,llm) ! covariant meridional wind 60 REAL,INTENT(INOUT) :: pucov(ijb_u:ije_u,llm) ! covariant zonal wind 61 REAL,INTENT(INOUT) :: pteta(ijb_u:ije_u,llm) ! potential temperature 62 REAL,INTENT(INOUT) :: pq(ijb_u:ije_u,llm,nqtot) ! tracers 63 REAL,INTENT(INOUT) :: pps(ijb_u:ije_u) ! surface pressure (Pa) 64 c respective tendencies (.../s) to add 65 REAL,INTENT(IN) :: pdvfi(ijb_v:ije_v,llm) 66 REAL,INTENT(IN) :: pdufi(ijb_u:ije_u,llm) 67 REAL,INTENT(IN) :: pdqfi(ijb_u:ije_u,llm,nqtot) 68 REAL,INTENT(IN) :: pdhfi(ijb_u:ije_u,llm) 69 REAL,INTENT(IN) :: pdpfi(ijb_u:ije_u) 70 c 71 LOGICAL,INTENT(IN) :: leapf,forward ! not used 68 72 c 69 73 c … … 73 77 REAL xpn(iim),xps(iim),tpn,tps 74 78 INTEGER j,k,iq,ij 75 REAL qtestw, qtestt 76 PARAMETER ( qtestw = 1.0e-15 ) 77 PARAMETER ( qtestt = 1.0e-40 ) 79 REAL,PARAMETER :: qtestw = 1.0e-15 80 REAL,PARAMETER :: qtestt = 1.0e-40 78 81 79 82 REAL SSUM -
LMDZ5/branches/testing/libf/dyn3dmem/advtrac_loc.F
r1910 r1999 24 24 USE Vampir 25 25 USE times 26 USE infotrac 27 USE control_mod 28 USE advtrac_mod 26 USE infotrac, ONLY: nqtot, iadv 27 USE control_mod, ONLY: iapp_tracvl, day_step, planet_type 28 USE advtrac_mod, ONLY: finmasse 29 29 IMPLICIT NONE 30 30 c -
LMDZ5/branches/testing/libf/dyn3dmem/caldyn_loc.F
r1910 r1999 1 1 ! 2 ! $ Header$2 ! $Id: $ 3 3 ! 4 c5 c6 4 #undef DEBUG_IO 7 5 !#define DEBUG_IO … … 12 10 USE parallel_lmdz 13 11 USE Write_Field_loc 14 USE caldyn_mod 12 USE caldyn_mod, ONLY: vcont, ucont, ang, p, massebx, masseby, 13 & vorpot, ecin, bern, massebxy, convm 15 14 16 15 IMPLICIT NONE 17 16 18 c=======================================================================19 c 20 cAuteur : P. Le Van21 c 22 cObjet:23 c------24 c 25 cCalcul des tendances dynamiques.26 c 27 cModif 04/93 F.Forget28 c=======================================================================17 !======================================================================= 18 ! 19 ! Auteur : P. Le Van 20 ! 21 ! Objet: 22 ! ------ 23 ! 24 ! Calcul des tendances dynamiques. 25 ! 26 ! Modif 04/93 F.Forget 27 !======================================================================= 29 28 30 c-----------------------------------------------------------------------31 c0. Declarations:32 c----------------29 !----------------------------------------------------------------------- 30 ! 0. Declarations: 31 ! ---------------- 33 32 34 33 #include "dimensions.h" … … 38 37 #include "comgeom.h" 39 38 40 cArguments:41 c----------39 ! Arguments: 40 ! ---------- 42 41 43 LOGICAL conser 42 LOGICAL,INTENT(IN) :: conser ! triggers printing some diagnostics ! not used 43 INTEGER,INTENT(IN) :: itau ! time step index ! not used 44 REAL,INTENT(IN) :: vcov(ijb_v:ije_v,llm) ! covariant meridional wind 45 REAL,INTENT(IN) :: ucov(ijb_u:ije_u,llm) ! covariant zonal wind 46 REAL,INTENT(IN) :: teta(ijb_u:ije_u,llm) ! potential temperature 47 REAL,INTENT(IN) :: ps(ijb_u:ije_u) ! surface pressure 48 REAL,INTENT(IN) :: phis(ijb_u:ije_u) ! geopotential at the surface 49 REAL,INTENT(IN) :: pk(iip1,jjb_u:jje_u,llm) ! Exner at mid-layer 50 REAL,INTENT(IN) :: pkf(ijb_u:ije_u,llm) ! filtered Exner 51 REAL,INTENT(IN) :: phi(ijb_u:ije_u,llm) ! geopotential 52 REAL,INTENT(OUT) :: masse(ijb_u:ije_u,llm) ! air mass 53 REAL,INTENT(OUT) :: dv(ijb_v:ije_v,llm) ! tendency on vcov 54 REAL,INTENT(OUT) :: du(ijb_u:ije_u,llm) ! tendency on ucov 55 REAL,INTENT(OUT) :: dteta(ijb_u:ije_u,llm) ! tenddency on teta 56 REAL,INTENT(OUT) :: dp(ijb_u:ije_u) ! tendency on ps 57 REAL,INTENT(OUT) :: w(ijb_u:ije_u,llm) ! vertical velocity 58 REAL,INTENT(OUT) :: pbaru(ijb_u:ije_u,llm) ! mass flux in the zonal direction 59 REAL,INTENT(OUT) :: pbarv(ijb_v:ije_v,llm) ! mass flux in the meridional direction 60 REAL,INTENT(IN) :: time ! current time 44 61 45 INTEGER itau 46 REAL vcov(ijb_v:ije_v,llm),ucov(ijb_u:ije_u,llm) 47 REAL teta(ijb_u:ije_u,llm) 48 REAL ps(ijb_u:ije_u),phis(ijb_u:ije_u) 49 REAL pk(iip1,jjb_u:jje_u,llm),pkf(ijb_u:ije_u,llm) 50 REAL phi(ijb_u:ije_u,llm),masse(ijb_u:ije_u,llm) 51 REAL dv(ijb_v:ije_v,llm),du(ijb_u:ije_u,llm) 52 REAL dteta(ijb_u:ije_u,llm),dp(ijb_u:ije_u) 53 REAL w(ijb_u:ije_u,llm) 54 REAL pbaru(ijb_u:ije_u,llm),pbarv(ijb_v:ije_v,llm) 55 REAL time 56 57 c Local: 58 c ------ 62 ! Local: 63 ! ------ 59 64 60 65 INTEGER ij,l,ijb,ije,ierr 61 66 62 67 63 c----------------------------------------------------------------------- 64 c Calcul des tendances dynamiques: 65 c -------------------------------- 68 !----------------------------------------------------------------------- 69 ! Compute dynamical tendencies: 70 !-------------------------------- 71 72 ! compute contravariant winds ucont() and vcont 66 73 CALL covcont_loc ( llm , ucov , vcov , ucont, vcont ) 74 ! compute pressure p() 67 75 CALL pression_loc ( ip1jmp1, ap , bp , ps , p ) 68 76 cym CALL psextbar ( ps , psexbarxy ) 69 77 c$OMP BARRIER 78 ! compute mass in each atmospheric mesh: masse() 70 79 CALL massdair_loc ( p , masse ) 80 ! compute X and Y-averages of mass, massebx() and masseby() 71 81 CALL massbar_loc ( masse, massebx , masseby ) 82 ! compute XY-average of mass, massebxy() 72 83 call massbarxy_loc( masse, massebxy ) 84 ! compute mass fluxes pbaru() and pbarv() 73 85 CALL flumass_loc ( massebx, masseby,vcont,ucont,pbaru,pbarv ) 86 ! compute dteta() , horizontal converging flux of theta 74 87 CALL dteta1_loc ( teta , pbaru , pbarv, dteta ) 88 ! compute convm(), horizontal converging flux of mass 75 89 CALL convmas1_loc ( pbaru, pbarv , convm ) 76 90 c$OMP BARRIER … … 95 109 ijb=ij_begin 96 110 ije=ij_end 97 111 ! compute pressure variation due to mass convergence 98 112 DO ij =ijb, ije 99 113 dp( ij ) = convm( ij,1 ) / airesurg( ij ) … … 101 115 c$OMP END MASTER 102 116 c$OMP BARRIER 117 118 ! compute vertical velocity w() 103 119 CALL vitvert_loc ( convm , w ) 120 ! compute potential vorticity vorpot() 104 121 CALL tourpot_loc ( vcov , ucov , massebxy , vorpot ) 122 ! compute rotation induced du() and dv() 105 123 CALL dudv1_loc ( vorpot , pbaru , pbarv , du , dv ) 106 124 … … 111 129 call WriteField_v('dv',dv) 112 130 #endif 131 132 ! compute kinetic energy ecin() 113 133 CALL enercin_loc ( vcov , ucov , vcont , ucont , ecin ) 134 ! compute Bernouilli function bern() 114 135 CALL bernoui_loc ( ip1jmp1, llm , phi , ecin , bern) 136 ! compute and add du() and dv() contributions from Bernouilli and pressure 115 137 CALL dudv2_loc ( teta , pkf , bern , du , dv ) 116 138 … … 137 159 c$OMP END DO 138 160 161 ! compute vertical advection contributions to du(), dv() and dteta() 139 162 CALL advect_new_loc(ang,vcov,teta,w,massebx,masseby,du,dv,dteta) 140 163 … … 158 181 c$OMP END DO NOWAIT 159 182 183 ! Ehouarn: NB: output of control variables not implemented... 160 184 161 185 RETURN -
LMDZ5/branches/testing/libf/dyn3dmem/calfis_loc.F
r1910 r1999 41 41 Use Write_field_p 42 42 USE Times 43 USE infotrac 44 USE control_mod 43 USE infotrac, ONLY: nqtot, niadv, tname 44 USE control_mod, ONLY: planet_type, nsplit_phys 45 45 46 46 IMPLICIT NONE … … 115 115 c Arguments : 116 116 c ----------- 117 LOGICAL lafin 118 ! REAL heure 119 REAL, intent(in):: jD_cur, jH_cur 120 REAL pvcov(iip1,jjb_v:jje_v,llm) 121 REAL pucov(iip1,jjb_u:jje_u,llm) 122 REAL pteta(iip1,jjb_u:jje_u,llm) 123 REAL pmasse(iip1,jjb_u:jje_u,llm) 124 REAL pq(iip1,jjb_u:jje_u,llm,nqtot) 125 REAL pphis(iip1,jjb_u:jje_u) 126 REAL pphi(iip1,jjb_u:jje_u,llm) 127 c 128 REAL pdvcov(iip1,jjb_v:jje_v,llm) 129 REAL pducov(iip1,jjb_u:jje_u,llm) 130 REAL pdteta(iip1,jjb_u:jje_u,llm) 131 REAL pdq(iip1,jjb_u:jje_u,llm,nqtot) 132 REAL flxw(iip1,jjb_u:jje_u,llm) ! Flux de masse verticale sur la grille dynamique 133 c 134 REAL pps(iip1,jjb_u:jje_u) 135 REAL pp(iip1,jjb_u:jje_u,llmp1) 136 REAL ppk(iip1,jjb_u:jje_u,llm) 137 c 138 REAL pdvfi(iip1,jjb_v:jje_v,llm) 139 REAL pdufi(iip1,jjb_u:jje_u,llm) 140 REAL pdhfi(iip1,jjb_u:jje_u,llm) 141 REAL pdqfi(iip1,jjb_u:jje_u,llm,nqtot) 142 REAL pdpsfi(iip1,jjb_u:jje_u) 143 144 INTEGER longcles 145 PARAMETER ( longcles = 20 ) 146 REAL clesphy0( longcles ) 117 LOGICAL,INTENT(IN) :: lafin ! .true. for the very last call to physics 118 REAL,INTENT(IN):: jD_cur, jH_cur 119 REAL,INTENT(IN):: pvcov(iip1,jjb_v:jje_v,llm) ! covariant meridional velocity 120 REAL,INTENT(IN):: pucov(iip1,jjb_u:jje_u,llm) ! covariant zonal velocity 121 REAL,INTENT(IN):: pteta(iip1,jjb_u:jje_u,llm) ! potential temperature 122 REAL,INTENT(IN):: pmasse(iip1,jjb_u:jje_u,llm) ! mass in each cell ! not used 123 REAL,INTENT(IN):: pq(iip1,jjb_u:jje_u,llm,nqtot) ! tracers 124 REAL,INTENT(IN):: pphis(iip1,jjb_u:jje_u) ! surface geopotential 125 REAL,INTENT(IN):: pphi(iip1,jjb_u:jje_u,llm) ! geopotential 126 127 REAL,INTENT(IN) :: pdvcov(iip1,jjb_v:jje_v,llm) ! dynamical tendency on vcov ! not used 128 REAL,INTENT(IN) :: pducov(iip1,jjb_u:jje_u,llm) ! dynamical tendency on ucov 129 REAL,INTENT(IN) :: pdteta(iip1,jjb_u:jje_u,llm) ! dynamical tendency on teta ! not used 130 REAL,INTENT(IN) :: pdq(iip1,jjb_u:jje_u,llm,nqtot) ! dynamical tendency on tracers ! not used 131 132 REAL,INTENT(IN) :: pps(iip1,jjb_u:jje_u) ! surface pressure (Pa) 133 REAL,INTENT(IN) :: pp(iip1,jjb_u:jje_u,llmp1) ! pressure at mesh interfaces (Pa) 134 REAL,INTENT(IN) :: ppk(iip1,jjb_u:jje_u,llm) ! Exner at mid-layer 135 REAL,INTENT(IN) :: flxw(iip1,jjb_u:jje_u,llm) ! Vertical mass flux on dynamics grid 136 137 ! tendencies (in */s) from the physics 138 REAL,INTENT(OUT) :: pdvfi(iip1,jjb_v:jje_v,llm) ! tendency on covariant meridional wind 139 REAL,INTENT(OUT) :: pdufi(iip1,jjb_u:jje_u,llm) ! tendency on covariant zonal wind 140 REAL,INTENT(OUT) :: pdhfi(iip1,jjb_u:jje_u,llm) ! tendency on potential temperature (K/s) 141 REAL,INTENT(OUT) :: pdqfi(iip1,jjb_u:jje_u,llm,nqtot) ! tendency on tracers 142 REAL,INTENT(OUT) :: pdpsfi(iip1,jjb_u:jje_u) ! tendency on surface pressure (Pa/s) 143 144 INTEGER,PARAMETER :: longcles = 20 145 REAL,INTENT(IN) :: clesphy0( longcles ) ! unused 147 146 148 147 … … 221 220 c 222 221 cIM diagnostique PVteta, Amip2 223 INTEGER ntetaSTD 224 PARAMETER(ntetaSTD=3) 225 REAL rtetaSTD(ntetaSTD) 226 DATA rtetaSTD/350., 380., 405./ ! Earth-specific values, beware !! 222 INTEGER,PARAMETER :: ntetaSTD=3 223 REAL,SAVE :: rtetaSTD(ntetaSTD)=(/350.,380.,405./) ! Earth-specific, beware !! 227 224 REAL PVteta(klon,ntetaSTD) 228 225 … … 230 227 REAL SSUM 231 228 232 LOGICAL firstcal, debut 233 DATA firstcal/.true./ 234 SAVE firstcal,debut 229 LOGICAL,SAVE :: firstcal=.true., debut=.true. 235 230 c$OMP THREADPRIVATE(firstcal,debut) 236 231 -
LMDZ5/branches/testing/libf/dyn3dmem/call_calfis_mod.F90
r1910 r1999 91 91 INCLUDE "iniprint.h" 92 92 93 REAL :: clesphy0( : )94 INTEGER :: itau95 LOGICAL :: lafin96 REAL :: ucov_dyn(ijb_u:ije_u,llm)97 REAL :: vcov_dyn(ijb_v:ije_v,llm)98 REAL :: teta_dyn(ijb_u:ije_u,llm)99 REAL :: masse_dyn(ijb_u:ije_u,llm)100 REAL :: ps_dyn(ijb_u:ije_u)101 REAL :: phis_dyn(ijb_u:ije_u)102 REAL :: q_dyn(ijb_u:ije_u,llm,nqtot)103 REAL :: flxw_dyn(ijb_u:ije_u,llm)93 INTEGER,INTENT(IN) :: itau ! (time) iteration step number 94 LOGICAL,INTENT(IN) :: lafin ! .true. if final time step 95 REAL,INTENT(IN) :: clesphy0( : ) ! not used 96 REAL,INTENT(INOUT) :: ucov_dyn(ijb_u:ije_u,llm) ! covariant zonal wind 97 REAL,INTENT(INOUT) :: vcov_dyn(ijb_v:ije_v,llm) ! covariant meridional wind 98 REAL,INTENT(INOUT) :: teta_dyn(ijb_u:ije_u,llm) ! potential temperature 99 REAL,INTENT(INOUT) :: masse_dyn(ijb_u:ije_u,llm) ! air mass 100 REAL,INTENT(INOUT) :: ps_dyn(ijb_u:ije_u) ! surface pressure 101 REAL,INTENT(INOUT) :: phis_dyn(ijb_u:ije_u) ! surface geopotential 102 REAL,INTENT(INOUT) :: q_dyn(ijb_u:ije_u,llm,nqtot) ! advected tracers 103 REAL,INTENT(INOUT) :: flxw_dyn(ijb_u:ije_u,llm) ! vertical mass flux 104 104 105 105 REAL :: dufi_tmp(iip1,llm) … … 134 134 !$OMP MASTER 135 135 CALL suspend_timer(timer_caldyn) 136 WRITE(lunout,*) 'leapfrog_p: Entree dans la physique : Iteration No ',itau 136 IF (prt_level >= 10) THEN 137 WRITE(lunout,*) 'leapfrog_p: Entree dans la physique : Iteration No ',itau 138 ENDIF 137 139 !$OMP END MASTER 138 140 … … 335 337 ucov, vcov, teta , q ,ps , & 336 338 dufi, dvfi, dtetafi , dqfi ,dpfi ) 339 ! since addfi updates ps(), also update p(), masse() and pk() 340 CALL pression_loc(ip1jmp1,ap,bp,ps,p) 341 !$OMP BARRIER 342 CALL massdair_loc(p,masse) 343 !$OMP BARRIER 344 if (pressure_exner) then 345 CALL exner_hyb_loc(ijnb_u,ps,p,alpha,beta,pks,pk,pkf) 346 else 347 CALL exner_milieu_loc(ijnb_u,ps,p,beta,pks,pk,pkf) 348 endif 349 !$OMP BARRIER 337 350 338 351 #ifdef DEBUG_IO -
LMDZ5/branches/testing/libf/dyn3dmem/call_dissip_mod.F90
r1910 r1999 87 87 IMPLICIT NONE 88 88 INCLUDE 'comgeom.h' 89 REAL :: ucov_dyn(ijb_u:ije_u,llm)90 REAL :: vcov_dyn(ijb_v:ije_v,llm)91 REAL :: teta_dyn(ijb_u:ije_u,llm)92 REAL :: p_dyn(ijb_u:ije_u,llmp1 )93 REAL :: pk_dyn(ijb_u:ije_u,llm)94 REAL :: ps_dyn(ijb_u:ije_u)89 REAL,INTENT(INOUT) :: ucov_dyn(ijb_u:ije_u,llm) ! covariant zonal wind 90 REAL,INTENT(INOUT) :: vcov_dyn(ijb_v:ije_v,llm) ! covariant meridional wind 91 REAL,INTENT(INOUT) :: teta_dyn(ijb_u:ije_u,llm) ! covariant meridional wind 92 REAL,INTENT(INOUT) :: p_dyn(ijb_u:ije_u,llmp1 ) ! pressure at interlayer 93 REAL,INTENT(INOUT) :: pk_dyn(ijb_u:ije_u,llm) ! Exner at midlayer 94 REAL,INTENT(INOUT) :: ps_dyn(ijb_u:ije_u) ! surface pressure 95 95 REAL :: tppn(iim),tpps(iim) 96 96 REAL :: tpn,tps -
LMDZ5/branches/testing/libf/dyn3dmem/ce0l.F90
r1910 r1999 115 115 END IF 116 116 117 IF (grilles_gcm_netcdf) THEN 118 WRITE(lunout,'(//)') 119 WRITE(lunout,*) ' *************************** ' 120 WRITE(lunout,*) ' *** grilles_gcm_netcdf *** ' 121 WRITE(lunout,*) ' *************************** ' 122 WRITE(lunout,'(//)') 123 CALL grilles_gcm_netcdf_sub(masque,phis) 124 END IF 117 WRITE(lunout,'(//)') 118 WRITE(lunout,*) ' *************************** ' 119 WRITE(lunout,*) ' *** grilles_gcm_netcdf *** ' 120 WRITE(lunout,*) ' *************************** ' 121 WRITE(lunout,'(//)') 122 CALL grilles_gcm_netcdf_sub(masque,phis) 125 123 126 124 #ifdef CPP_MPI -
LMDZ5/branches/testing/libf/dyn3dmem/conf_gcm.F
r1910 r1999 944 944 ok_etat0 = .TRUE. 945 945 CALL getin('ok_etat0',ok_etat0) 946 947 !Config Key = grilles_gcm_netcdf948 !Config Desc = creation de fichier grilles_gcm.nc dans create_etat0_limit949 !Config Def = n950 grilles_gcm_netcdf = .FALSE.951 CALL getin('grilles_gcm_netcdf',grilles_gcm_netcdf)952 946 953 947 write(lunout,*)' #########################################' … … 999 993 write(lunout,*)' ok_limit = ', ok_limit 1000 994 write(lunout,*)' ok_etat0 = ', ok_etat0 1001 write(lunout,*)' grilles_gcm_netcdf = ', grilles_gcm_netcdf1002 995 c 1003 996 RETURN -
LMDZ5/branches/testing/libf/dyn3dmem/dissip_loc.F
r1910 r1999 1 ! 2 ! $Id: $ 3 ! 1 4 SUBROUTINE dissip_loc( vcov,ucov,teta,p, dv,du,dh ) 2 5 c 3 6 USE parallel_lmdz 4 7 USE write_field_loc 5 USE dissip_mod 8 USE dissip_mod, ONLY: dissip_allocate 6 9 IMPLICIT NONE 7 10 … … 35 38 c ---------- 36 39 37 REAL vcov(ijb_v:ije_v,llm),ucov(ijb_u:ije_u,llm) 38 REAL teta(ijb_u:ije_u,llm) 39 REAL p( ijb_u:ije_u,llmp1 ) 40 REAL dv(ijb_v:ije_v,llm),du(ijb_u:ije_u,llm),dh(ijb_u:ije_u,llm) 40 REAL,INTENT(IN) :: vcov(ijb_v:ije_v,llm) ! covariant meridional wind 41 REAL,INTENT(IN) :: ucov(ijb_u:ije_u,llm) ! covariant zonal wind 42 REAL,INTENT(IN) :: teta(ijb_u:ije_u,llm) ! potential temperature 43 REAL,INTENT(IN) :: p(ijb_u:ije_u,llmp1) ! interlayer pressure 44 ! tendencies (.../s) on covariant winds and potential temperature 45 REAL,INTENT(OUT) :: dv(ijb_v:ije_v,llm) 46 REAL,INTENT(OUT) :: du(ijb_u:ije_u,llm) 47 REAL,INTENT(OUT) :: dh(ijb_u:ije_u,llm) 41 48 42 49 c Local: -
LMDZ5/branches/testing/libf/dyn3dmem/dynetat0_loc.F
r1910 r1999 68 68 & 'dynetat0_loc: Pb d''ouverture du fichier start.nc' 69 69 write(lunout,*)' ierr = ', ierr 70 CALL ABORT 70 CALL ABORT_GCM("DYNETAT0", "", 1) 71 71 ENDIF 72 72 … … 75 75 IF (ierr .NE. NF_NOERR) THEN 76 76 write(lunout,*)"dynetat0_loc: Le champ <controle> est absent" 77 CALL abort 77 CALL abort_gcm("dynetat0", "", 1) 78 78 ENDIF 79 79 #ifdef NC_DOUBLE … … 84 84 IF (ierr .NE. NF_NOERR) THEN 85 85 write(lunout,*)"dynetat0_loc: Lecture echoue pour <controle>" 86 CALL abort 86 CALL abort_gcm("dynetat0", "", 1) 87 87 ENDIF 88 88 … … 158 158 IF (ierr .NE. NF_NOERR) THEN 159 159 write(lunout,*)"dynetat0_loc: Le champ <rlonu> est absent" 160 CALL abort 160 CALL abort_gcm("dynetat0", "", 1) 161 161 ENDIF 162 162 #ifdef NC_DOUBLE … … 167 167 IF (ierr .NE. NF_NOERR) THEN 168 168 write(lunout,*)"dynetat0_loc: Lecture echouee pour <rlonu>" 169 CALL abort 169 CALL abort_gcm("dynetat0", "", 1) 170 170 ENDIF 171 171 … … 173 173 IF (ierr .NE. NF_NOERR) THEN 174 174 write(lunout,*)"dynetat0_loc: Le champ <rlatu> est absent" 175 CALL abort 175 CALL abort_gcm("dynetat0", "", 1) 176 176 ENDIF 177 177 #ifdef NC_DOUBLE … … 182 182 IF (ierr .NE. NF_NOERR) THEN 183 183 write(lunout,*)"dynetat0_loc: Lecture echouee pour <rlatu>" 184 CALL abort 184 CALL abort_gcm("dynetat0", "", 1) 185 185 ENDIF 186 186 … … 188 188 IF (ierr .NE. NF_NOERR) THEN 189 189 write(lunout,*)"dynetat0_loc: Le champ <rlonv> est absent" 190 CALL abort 190 CALL abort_gcm("dynetat0", "", 1) 191 191 ENDIF 192 192 #ifdef NC_DOUBLE … … 197 197 IF (ierr .NE. NF_NOERR) THEN 198 198 write(lunout,*)"dynetat0_loc: Lecture echouee pour <rlonv>" 199 CALL abort 199 CALL abort_gcm("dynetat0", "", 1) 200 200 ENDIF 201 201 … … 203 203 IF (ierr .NE. NF_NOERR) THEN 204 204 write(lunout,*)"dynetat0_loc: Le champ <rlatv> est absent" 205 CALL abort 205 CALL abort_gcm("dynetat0", "", 1) 206 206 ENDIF 207 207 #ifdef NC_DOUBLE … … 212 212 IF (ierr .NE. NF_NOERR) THEN 213 213 write(lunout,*)"dynetat0_loc: Lecture echouee pour rlatv" 214 CALL abort 214 CALL abort_gcm("dynetat0", "", 1) 215 215 ENDIF 216 216 … … 218 218 IF (ierr .NE. NF_NOERR) THEN 219 219 write(lunout,*)"dynetat0_loc: Le champ <cu> est absent" 220 CALL abort 220 CALL abort_gcm("dynetat0", "", 1) 221 221 ENDIF 222 222 #ifdef NC_DOUBLE … … 227 227 IF (ierr .NE. NF_NOERR) THEN 228 228 write(lunout,*)"dynetat0_loc: Lecture echouee pour <cu>" 229 CALL abort 229 CALL abort_gcm("dynetat0", "", 1) 230 230 ENDIF 231 231 … … 233 233 IF (ierr .NE. NF_NOERR) THEN 234 234 write(lunout,*)"dynetat0_loc: Le champ <cv> est absent" 235 CALL abort 235 CALL abort_gcm("dynetat0", "", 1) 236 236 ENDIF 237 237 #ifdef NC_DOUBLE … … 242 242 IF (ierr .NE. NF_NOERR) THEN 243 243 write(lunout,*)"dynetat0_loc: Lecture echouee pour <cv>" 244 CALL abort 244 CALL abort_gcm("dynetat0", "", 1) 245 245 ENDIF 246 246 … … 248 248 IF (ierr .NE. NF_NOERR) THEN 249 249 write(lunout,*)"dynetat0_loc: Le champ <aire> est absent" 250 CALL abort 250 CALL abort_gcm("dynetat0", "", 1) 251 251 ENDIF 252 252 #ifdef NC_DOUBLE … … 257 257 IF (ierr .NE. NF_NOERR) THEN 258 258 write(lunout,*)"dynetat0_loc: Lecture echouee pour <aire>" 259 CALL abort 259 CALL abort_gcm("dynetat0", "", 1) 260 260 ENDIF 261 261 … … 265 265 IF (ierr .NE. NF_NOERR) THEN 266 266 write(lunout,*)"dynetat0_loc: Le champ <phisinit> est absent" 267 CALL abort 267 CALL abort_gcm("dynetat0", "", 1) 268 268 ENDIF 269 269 #ifdef NC_DOUBLE … … 274 274 IF (ierr .NE. NF_NOERR) THEN 275 275 write(lunout,*)"dynetat0_loc: Lecture echouee pour <phisinit>" 276 CALL abort 276 CALL abort_gcm("dynetat0", "", 1) 277 277 ENDIF 278 278 phis(ijb_u:ije_u)=phis_glo(ijb_u:ije_u) … … 286 286 IF (ierr .NE. NF_NOERR) THEN 287 287 write(lunout,*)"dynetat0: Le champ <Time> est absent" 288 CALL abort 288 CALL abort_gcm("dynetat0", "", 1) 289 289 ENDIF 290 290 ENDIF … … 296 296 IF (ierr .NE. NF_NOERR) THEN 297 297 write(lunout,*)"dynetat0_loc: Lecture echouee <temps>" 298 CALL abort 298 CALL abort_gcm("dynetat0", "", 1) 299 299 ENDIF 300 300 … … 302 302 IF (ierr .NE. NF_NOERR) THEN 303 303 write(lunout,*)"dynetat0_loc: Le champ <ucov> est absent" 304 CALL abort 304 CALL abort_gcm("dynetat0", "", 1) 305 305 ENDIF 306 306 … … 314 314 IF (ierr .NE. NF_NOERR) THEN 315 315 write(lunout,*)"dynetat0_loc: Lecture echouee pour <ucov>" 316 CALL abort 316 CALL abort_gcm("dynetat0", "", 1) 317 317 ENDIF 318 318 … … 324 324 IF (ierr .NE. NF_NOERR) THEN 325 325 write(lunout,*)"dynetat0_loc: Le champ <vcov> est absent" 326 CALL abort 326 CALL abort_gcm("dynetat0", "", 1) 327 327 ENDIF 328 328 #ifdef NC_DOUBLE … … 333 333 IF (ierr .NE. NF_NOERR) THEN 334 334 write(lunout,*)"dynetat0_loc: Lecture echouee pour <vcov>" 335 CALL abort 335 CALL abort_gcm("dynetat0", "", 1) 336 336 ENDIF 337 337 vcov(ijb_v:ije_v,:)=vcov_glo(ijb_v:ije_v,:) … … 342 342 IF (ierr .NE. NF_NOERR) THEN 343 343 write(lunout,*)"dynetat0_loc: Le champ <teta> est absent" 344 CALL abort 344 CALL abort_gcm("dynetat0", "", 1) 345 345 ENDIF 346 346 #ifdef NC_DOUBLE … … 351 351 IF (ierr .NE. NF_NOERR) THEN 352 352 write(lunout,*)"dynetat0_loc: Lecture echouee pour <teta>" 353 CALL abort 353 CALL abort_gcm("dynetat0", "", 1) 354 354 ENDIF 355 355 … … 375 375 write(lunout,*) 376 376 & "dynetat0_loc: Lecture echouee pour "//tname(iq) 377 CALL abort 377 CALL abort_gcm("dynetat0", "", 1) 378 378 ENDIF 379 379 q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:) … … 388 388 IF (ierr .NE. NF_NOERR) THEN 389 389 write(lunout,*)"dynetat0_loc: Le champ <masse> est absent" 390 CALL abort 390 CALL abort_gcm("dynetat0", "", 1) 391 391 ENDIF 392 392 #ifdef NC_DOUBLE … … 397 397 IF (ierr .NE. NF_NOERR) THEN 398 398 write(lunout,*)"dynetat0_loc: Lecture echouee pour <masse>" 399 CALL abort 399 CALL abort_gcm("dynetat0", "", 1) 400 400 ENDIF 401 401 masse(ijb_u:ije_u,:)=masse_glo(ijb_u:ije_u,:) … … 406 406 IF (ierr .NE. NF_NOERR) THEN 407 407 write(lunout,*)"dynetat0_loc: Le champ <ps> est absent" 408 CALL abort 408 CALL abort_gcm("dynetat0", "", 1) 409 409 ENDIF 410 410 #ifdef NC_DOUBLE … … 415 415 IF (ierr .NE. NF_NOERR) THEN 416 416 write(lunout,*)"dynetat0_loc: Lecture echouee pour <ps>" 417 CALL abort 417 CALL abort_gcm("dynetat0", "", 1) 418 418 ENDIF 419 419 -
LMDZ5/branches/testing/libf/dyn3dmem/dynredem_loc.F
r1910 r1999 138 138 & //trim(fichnom) 139 139 write(lunout,*)' ierr = ', ierr 140 CALL ABORT 140 CALL ABORT_GCM("DYNREDEM0", "", 1) 141 141 ENDIF 142 142 c … … 588 588 IF (ierr .NE. NF_NOERR) THEN 589 589 write(lunout,*)"dynredem1: Pb. d ouverture "//trim(fichnom) 590 CALL abort 590 CALL abort_gcm("dynredem1", "", 1) 591 591 ENDIF 592 592 -
LMDZ5/branches/testing/libf/dyn3dmem/fxhyp.F
r1910 r1999 48 48 c 49 49 REAL dzoom 50 REAL *8xlon(iip1),xprimm(iip1),xuv51 REAL *8xtild(0:nmax2)52 REAL *8fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2)53 REAL *8Xf(0:nmax2),xxpr(0:nmax2)54 REAL *8xvrai(iip1),xxprim(iip1)55 REAL *8pi,depi,epsilon,xzoom,fa,fb56 REAL *8Xf1, Xfi , a0,a1,a2,a3,xi250 REAL(KIND=8) xlon(iip1),xprimm(iip1),xuv 51 REAL(KIND=8) xtild(0:nmax2) 52 REAL(KIND=8) fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2) 53 REAL(KIND=8) Xf(0:nmax2),xxpr(0:nmax2) 54 REAL(KIND=8) xvrai(iip1),xxprim(iip1) 55 REAL(KIND=8) pi,depi,epsilon,xzoom,fa,fb 56 REAL(KIND=8) Xf1, Xfi , a0,a1,a2,a3,xi2 57 57 INTEGER i,it,ik,iter,ii,idif,ii1,ii2 58 REAL *8xi,xo1,xmoy,xlon2,fxm,Xprimin59 REAL *8champmin,champmax,decalx58 REAL(KIND=8) xi,xo1,xmoy,xlon2,fxm,Xprimin 59 REAL(KIND=8) champmin,champmax,decalx 60 60 INTEGER is2 61 61 SAVE is2 62 62 63 REAL *8heavyside63 REAL(KIND=8) heavyside 64 64 65 65 pi = 2. * ASIN(1.) … … 157 157 WRITE(6,*)'Modifier les valeurs de grossismx ,tau ou dzoomx ', 158 158 , ' et relancer ! *** ' 159 CALL ABORT 159 CALL ABORT_GCM("FXHYP", "", 1) 160 160 ENDIF 161 161 c … … 290 290 xxprim(1) = xxprim(iip1) 291 291 ENDIF 292 292 293 DO i = 1 , iim 293 294 xlon(i) = xvrai(i) -
LMDZ5/branches/testing/libf/dyn3dmem/gcm.F
r1910 r1999 548 548 c$OMP END PARALLEL 549 549 550 OPEN(unit=5487,file='ok_lmdz',status='replace')551 WRITE(5487,*) 'ok_lmdz'552 CLOSE(5487)550 ! OPEN(unit=5487,file='ok_lmdz',status='replace') 551 ! WRITE(5487,*) 'ok_lmdz' 552 ! CLOSE(5487) 553 553 END 554 554 -
LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_loc.F
r1910 r1999 80 80 ! include "mpif.h" 81 81 82 INTEGER longcles 83 PARAMETER ( longcles = 20 ) 84 REAL clesphy0( longcles ) 82 INTEGER,PARAMETER :: longcles = 20 83 REAL,INTENT(IN) :: clesphy0( longcles ) ! not used 84 REAL,INTENT(IN) :: time_0 ! not used 85 86 c dynamical variables: 87 REAL,INTENT(IN) :: ucov0(ijb_u:ije_u,llm) ! zonal covariant wind 88 REAL,INTENT(IN) :: vcov0(ijb_v:ije_v,llm) ! meridional covariant wind 89 REAL,INTENT(IN) :: teta0(ijb_u:ije_u,llm) ! potential temperature 90 REAL,INTENT(IN) :: q0(ijb_u:ije_u,llm,nqtot) ! advected tracers 91 REAL,INTENT(IN) :: ps0(ijb_u:ije_u) ! surface pressure (Pa) 92 REAL,INTENT(IN) :: masse0(ijb_u:ije_u,llm) ! air mass 93 REAL,INTENT(IN) :: phis0(ijb_u:ije_u) ! geopotentiat at the surface 85 94 86 95 real zqmin,zqmax 87 88 c variables dynamiques89 REAL :: vcov0(ijb_v:ije_v,llm),ucov0(ijb_u:ije_u,llm) ! vents covariants90 REAL :: teta0(ijb_u:ije_u,llm) ! temperature potentielle91 REAL :: q0(ijb_u:ije_u,llm,nqtot) ! champs advectes92 REAL :: ps0(ijb_u:ije_u) ! pression au sol93 REAL :: masse0(ijb_u:ije_u,llm) ! masse d'air94 REAL :: phis0(ijb_u:ije_u) ! geopotentiel au sol95 96 96 97 ! REAL,SAVE,ALLOCATABLE :: p (:,: ) ! pression aux interfac.des couches … … 133 134 REAL time 134 135 135 REAL SSUM 136 REAL time_0 136 REAL SSUM 137 137 ! REAL,SAVE,ALLOCATABLE :: finvmaold(:,:) 138 138 … … 670 670 671 671 IF( forward. OR . leapf ) THEN 672 673 672 ! Ehouarn: NB: fields sent to advtrac are those at the beginning of the time step 674 673 CALL caladvtrac_loc(q,pbaru,pbarv, 675 674 * p, masse, dq, teta, … … 680 679 ! enddo 681 680 682 c 681 ! Ehouarn: Storage of mass flux for off-line tracers... not implemented... 682 683 683 ENDIF ! of IF( forward. OR . leapf ) 684 684 … … 1140 1140 endif 1141 1141 c$OMP BARRIER 1142 CALL massdair_loc(p,masse) 1143 c$OMP BARRIER 1142 1144 1143 1145 cc$OMP END PARALLEL -
LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_mod.F90
r1910 r1999 1 1 MODULE leapfrog_mod 2 2 3 REAL,POINTER,SAVE :: ucov(:,:) 4 REAL,POINTER,SAVE :: vcov(:,:) 5 REAL,POINTER,SAVE :: teta(:,:) 6 REAL,POINTER,SAVE :: ps(:) 7 REAL,POINTER,SAVE :: masse(:,:) 8 REAL,POINTER,SAVE :: phis(:) 9 REAL,POINTER,SAVE :: q(:,:,:) 10 REAL,POINTER,SAVE :: p(:,:) 11 REAL,POINTER,SAVE :: pks(:) 12 REAL,POINTER,SAVE :: pk(:,:) 13 REAL,POINTER,SAVE :: pkf(:,:) 14 REAL,POINTER,SAVE :: phi(:,:) 15 REAL,POINTER,SAVE :: w(:,:) 3 REAL,POINTER,SAVE :: ucov(:,:) ! zonal covariant wind 4 REAL,POINTER,SAVE :: vcov(:,:) ! meridional covariant wind 5 REAL,POINTER,SAVE :: teta(:,:) ! potential temperature 6 REAL,POINTER,SAVE :: ps(:) ! surface pressure 7 REAL,POINTER,SAVE :: masse(:,:) ! air mass 8 REAL,POINTER,SAVE :: phis(:) ! geopotential at the surface 9 REAL,POINTER,SAVE :: q(:,:,:) ! advected tracers 10 REAL,POINTER,SAVE :: p(:,:) ! interlayer pressure 11 REAL,POINTER,SAVE :: pks(:) ! Exner at the surface 12 REAL,POINTER,SAVE :: pk(:,:) ! Exner at mid-layer 13 REAL,POINTER,SAVE :: pkf(:,:) ! filtered Exner 14 REAL,POINTER,SAVE :: phi(:,:) ! geopotential 15 REAL,POINTER,SAVE :: w(:,:) ! vertical velocity 16 16 REAL,POINTER,SAVE :: pbaru(:,:) 17 17 REAL,POINTER,SAVE :: pbarv(:,:) -
LMDZ5/branches/testing/libf/dyn3dmem/logic.h
r1910 r1999 1 1 ! 2 ! $Id $2 ! $Id: $ 3 3 ! 4 4 ! … … 11 11 & statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus & 12 12 & ,read_start,ok_guide,ok_strato,ok_gradsfile & 13 & ,ok_limit,ok_etat0, grilles_gcm_netcdf,hybrid13 & ,ok_limit,ok_etat0,hybrid 14 14 15 15 COMMON/logici/ iflag_phys,iflag_trac … … 18 18 & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus & 19 19 & ,read_start,ok_guide,ok_strato,ok_gradsfile & 20 & ,ok_limit,ok_etat0,grilles_gcm_netcdf 20 & ,ok_limit,ok_etat0 21 21 22 logical hybrid ! vertical coordinate is hybrid if true (sigma otherwise) 22 23 ! (only used if disvert_type==2) -
LMDZ5/branches/testing/libf/dyn3dmem/mod_const_mpi.F90
r1910 r1999 17 17 USE ioipsl_getincom, only: getin 18 18 #endif 19 19 ! Use of Oasis-MCT coupler 20 #ifdef CPP_OMCT 21 USE mod_prism 22 #endif 20 23 IMPLICIT NONE 21 24 #ifdef CPP_MPI -
LMDZ5/branches/testing/libf/dyn3dmem/parallel_lmdz.F90
r1910 r1999 392 392 #endif 393 393 #ifdef CPP_COUPLE 394 ! Use of Oasis-MCT coupler 395 #if defined CPP_OMCT 396 use mod_prism 397 #else 394 398 use mod_prism_proto 399 #endif 395 400 ! Ehouarn: surface_data module is in 'phylmd' ... 396 401 use surface_data, only : type_ocean -
LMDZ5/branches/testing/libf/dyn3dmem/pression_loc.F
r1910 r1999 1 1 SUBROUTINE pression_loc( ngrid, ap, bp, ps, p ) 2 USE parallel_lmdz 2 USE parallel_lmdz, ONLY: ij_begin, ij_end, ijb_u, ije_u, 3 & pole_nord, pole_sud, omp_chunk 3 4 c 4 5 … … 16 17 #include "paramet.h" 17 18 c 18 INTEGER ngrid19 INTEGER,INTENT(IN) :: ngrid ! not used 19 20 INTEGER l,ij 20 21 21 REAL ap( llmp1 ), bp( llmp1 ), ps( ijb_u:ije_u )22 REAL p( ijb_u:ije_u,llmp1 )22 REAL,INTENT(IN) :: ap( llmp1 ), bp( llmp1 ), ps( ijb_u:ije_u ) 23 REAL,INTENT(OUT) :: p( ijb_u:ije_u,llmp1 ) 23 24 24 25 INTEGER ijb,ije
Note: See TracChangeset
for help on using the changeset viewer.