Changeset 1625 for LMDZ5/trunk
- Timestamp:
- May 9, 2012, 3:14:48 PM (13 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 16 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dyn3d/comvert.h
r1520 r1625 9 9 & aps(llm),bps(llm),scaleheight 10 10 11 common/comverti/disvert_type 11 common/comverti/disvert_type, pressure_exner 12 12 13 13 real ap ! hybrid pressure contribution at interlayers … … 30 30 ! using 'z2sig.def' (or 'esasig.def) file 31 31 32 logical pressure_exner 33 ! compute pressure inside layers using Exner function, else use mean 34 ! of pressure values at interfaces 35 32 36 !----------------------------------------------------------------------- -
LMDZ5/trunk/libf/dyn3d/etat0_netcdf.F90
r1520 r1625 251 251 !******************************************************************************* 252 252 CALL pression(ip1jmp1, ap, bp, psol, p3d) 253 if ( disvert_type.eq.1) then253 if (pressure_exner) then 254 254 CALL exner_hyb(ip1jmp1, psol, p3d, alpha, beta, pks, pk, y) 255 else ! we assume that we are in the disvert_type==2 case255 else 256 256 CALL exner_milieu(ip1jmp1,psol,p3d,beta,pks,pk,y) 257 257 endif -
LMDZ5/trunk/libf/dyn3d/exner_hyb.F
r1520 r1625 56 56 ! Sanity check 57 57 if (firstcall) then 58 ! check that vertical discretization is compatible59 ! with this routine60 if (disvert_type.ne.1) then61 call abort_gcm(modname,62 & "this routine should only be called if disvert_type==1",42)63 endif64 65 58 ! sanity checks for Shallow Water case (1 vertical layer) 66 59 if (llm.eq.1) then -
LMDZ5/trunk/libf/dyn3d/exner_milieu.F
r1520 r1625 53 53 ! Sanity check 54 54 if (firstcall) then 55 ! check that vertical discretization is compatible56 ! with this routine57 if (disvert_type.ne.2) then58 call abort_gcm(modname,59 & "this routine should only be called if disvert_type==2",42)60 endif61 62 55 ! sanity checks for Shallow Water case (1 vertical layer) 63 56 if (llm.eq.1) then -
LMDZ5/trunk/libf/dyn3d/guide_mod.F90
r1520 r1625 644 644 ! ----------------------------------------------------------------- 645 645 CALL pression( ip1jmp1, ap, bp, psi, p ) 646 if ( disvert_type==1) then646 if (pressure_exner) then 647 647 CALL exner_hyb(ip1jmp1,psi,p,alpha,beta,pks,pk,pkf) 648 else ! we assume that we are in the disvert_type==2 case648 else 649 649 CALL exner_milieu(ip1jmp1,psi,p,beta,pks,pk,pkf) 650 650 endif -
LMDZ5/trunk/libf/dyn3d/iniacademic.F90
r1561 r1625 222 222 223 223 CALL pression ( ip1jmp1, ap, bp, ps, p ) 224 if ( disvert_type.eq.1) then224 if (pressure_exner) then 225 225 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 226 else if (disvert_type.eq.2) then226 else 227 227 call exner_milieu(ip1jmp1,ps,p,beta,pks,pk,pkf) 228 else229 write(abort_message,*) "Wrong value for disvert_type: ", &230 disvert_type231 call abort_gcm(modname,abort_message,0)232 228 endif 233 229 CALL massdair(p,masse) -
LMDZ5/trunk/libf/dyn3d/iniconst.F90
r1624 r1625 2 2 ! $Id$ 3 3 ! 4 4 SUBROUTINE iniconst 5 5 6 6 USE control_mod 7 7 #ifdef CPP_IOIPSL 8 8 use IOIPSL 9 9 #else 10 ! if not using IOIPSL, we still need to use (a local version of) getin11 10 ! if not using IOIPSL, we still need to use (a local version of) getin 11 use ioipsl_getincom 12 12 #endif 13 13 14 IMPLICIT NONE 15 c 16 c P. Le Van 17 c 18 c----------------------------------------------------------------------- 19 c Declarations: 20 c ------------- 21 c 22 #include "dimensions.h" 23 #include "paramet.h" 24 #include "comconst.h" 25 #include "temps.h" 26 #include "comvert.h" 27 #include "iniprint.h" 14 IMPLICIT NONE 15 ! 16 ! P. Le Van 17 ! 18 ! Declarations: 19 ! ------------- 20 ! 21 include "dimensions.h" 22 include "paramet.h" 23 include "comconst.h" 24 include "temps.h" 25 include "comvert.h" 26 include "iniprint.h" 28 27 29 30 31 c 32 c 33 c 34 c-----------------------------------------------------------------------35 cdimension des boucles:36 c----------------------28 character(len=*),parameter :: modname="iniconst" 29 character(len=80) :: abort_message 30 ! 31 ! 32 ! 33 !----------------------------------------------------------------------- 34 ! dimension des boucles: 35 ! ---------------------- 37 36 38 39 40 41 42 43 44 37 im = iim 38 jm = jjm 39 lllm = llm 40 imp1 = iim 41 jmp1 = jjm + 1 42 lllmm1 = llm - 1 43 lllmp1 = llm + 1 45 44 46 c-----------------------------------------------------------------------45 !----------------------------------------------------------------------- 47 46 48 49 50 47 dtphys = iphysiq * dtvr 48 unsim = 1./iim 49 pi = 2.*ASIN( 1. ) 51 50 52 c-----------------------------------------------------------------------53 c 51 !----------------------------------------------------------------------- 52 ! 54 53 55 54 r = cpp * kappa 56 55 57 58 c 59 c-----------------------------------------------------------------------56 write(lunout,*) trim(modname),': R CP Kappa ',r,cpp,kappa 57 ! 58 !----------------------------------------------------------------------- 60 59 61 ! vertical discretization: default behavior depends on planet_type flag 62 if (planet_type=="earth") then 63 disvert_type=1 64 else 65 disvert_type=2 66 endif 67 ! but user can also specify using one or the other in run.def: 68 call getin('disvert_type',disvert_type) 69 write(lunout,*) trim(modname),': disvert_type=',disvert_type 70 71 if (disvert_type==1) then 72 ! standard case for Earth (automatic generation of levels) 73 call disvert(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig, 74 & scaleheight) 75 else if (disvert_type==2) then 76 ! standard case for planets (levels generated using z2sig.def file) 77 call disvert_noterre 78 else 79 write(abort_message,*) "Wrong value for disvert_type: ", 80 & disvert_type 81 call abort_gcm(modname,abort_message,0) 82 endif 60 ! vertical discretization: default behavior depends on planet_type flag 61 if (planet_type=="earth") then 62 disvert_type=1 63 else 64 disvert_type=2 65 endif 66 ! but user can also specify using one or the other in run.def: 67 call getin('disvert_type',disvert_type) 68 write(lunout,*) trim(modname),': disvert_type=',disvert_type 83 69 84 END 70 pressure_exner = disvert_type == 1 ! default value 71 call getin('pressure_exner', pressure_exner) 72 73 if (disvert_type==1) then 74 ! standard case for Earth (automatic generation of levels) 75 call disvert(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig, scaleheight) 76 else if (disvert_type==2) then 77 ! standard case for planets (levels generated using z2sig.def file) 78 call disvert_noterre 79 else 80 write(abort_message,*) "Wrong value for disvert_type: ", disvert_type 81 call abort_gcm(modname,abort_message,0) 82 endif 83 84 END SUBROUTINE iniconst -
LMDZ5/trunk/libf/dyn3d/leapfrog.F
r1616 r1625 212 212 dq(:,:,:)=0. 213 213 CALL pression ( ip1jmp1, ap, bp, ps, p ) 214 if ( disvert_type==1) then214 if (pressure_exner) then 215 215 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 216 else ! we assume that we are in the disvert_type==2 case216 else 217 217 CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf ) 218 218 endif … … 369 369 370 370 CALL pression ( ip1jmp1, ap, bp, ps, p ) 371 if ( disvert_type==1) then371 if (pressure_exner) then 372 372 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta,pks, pk, pkf ) 373 else ! we assume that we are in the disvert_type==2 case373 else 374 374 CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf ) 375 375 endif … … 485 485 486 486 CALL pression ( ip1jmp1, ap, bp, ps, p ) 487 if ( disvert_type==1) then487 if (pressure_exner) then 488 488 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 489 else ! we assume that we are in the disvert_type==2 case489 else 490 490 CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf ) 491 491 endif -
LMDZ5/trunk/libf/dyn3dpar/comvert.h
r1520 r1625 9 9 & aps(llm),bps(llm),scaleheight 10 10 11 common/comverti/disvert_type 11 common/comverti/disvert_type, pressure_exner 12 12 13 13 real ap ! hybrid pressure contribution at interlayers … … 30 30 ! using 'z2sig.def' (or 'esasig.def) file 31 31 32 logical pressure_exner 33 ! compute pressure inside layers using Exner function, else use mean 34 ! of pressure values at interfaces 35 32 36 !----------------------------------------------------------------------- -
LMDZ5/trunk/libf/dyn3dpar/etat0_netcdf.F90
r1520 r1625 251 251 !******************************************************************************* 252 252 CALL pression(ip1jmp1, ap, bp, psol, p3d) 253 if ( disvert_type.eq.1) then253 if (pressure_exner) then 254 254 CALL exner_hyb(ip1jmp1, psol, p3d, alpha, beta, pks, pk, y) 255 else ! we assume that we are in the disvert_type==2 case255 else 256 256 CALL exner_milieu(ip1jmp1,psol,p3d,beta,pks,pk,y) 257 257 endif -
LMDZ5/trunk/libf/dyn3dpar/exner_hyb.F
r1520 r1625 56 56 ! Sanity check 57 57 if (firstcall) then 58 ! check that vertical discretization is compatible59 ! with this routine60 if (disvert_type.ne.1) then61 call abort_gcm(modname,62 & "this routine should only be called if disvert_type==1",42)63 endif64 65 58 ! sanity checks for Shallow Water case (1 vertical layer) 66 59 if (llm.eq.1) then -
LMDZ5/trunk/libf/dyn3dpar/exner_hyb_p.F
r1557 r1625 60 60 ! Sanity check 61 61 if (firstcall) then 62 ! check that vertical discretization is compatible63 ! with this routine64 if (disvert_type.ne.1) then65 call abort_gcm(modname,66 & "this routine should only be called if disvert_type==1",42)67 endif68 69 62 ! sanity checks for Shallow Water case (1 vertical layer) 70 63 if (llm.eq.1) then -
LMDZ5/trunk/libf/dyn3dpar/exner_milieu.F
r1520 r1625 53 53 ! Sanity check 54 54 if (firstcall) then 55 ! check that vertical discretization is compatible56 ! with this routine57 if (disvert_type.ne.2) then58 call abort_gcm(modname,59 & "this routine should only be called if disvert_type==2",42)60 endif61 62 55 ! sanity checks for Shallow Water case (1 vertical layer) 63 56 if (llm.eq.1) then -
LMDZ5/trunk/libf/dyn3dpar/exner_milieu_p.F
r1559 r1625 56 56 ! Sanity check 57 57 if (firstcall) then 58 ! check that vertical discretization is compatible59 ! with this routine60 if (disvert_type.ne.2) then61 call abort_gcm(modname,62 & "this routine should only be called if disvert_type==2",42)63 endif64 65 58 ! sanity checks for Shallow Water case (1 vertical layer) 66 59 if (llm.eq.1) then -
LMDZ5/trunk/libf/dyn3dpar/guide_p_mod.F90
r1520 r1625 455 455 ! Calcul niveaux pression milieu de couches 456 456 CALL pression_p( ip1jmp1, ap, bp, ps, p ) 457 if ( disvert_type==1) then457 if (pressure_exner) then 458 458 CALL exner_hyb_p(ip1jmp1,ps,p,alpha,beta,pks,pk,pkf) 459 459 else … … 755 755 ELSE 756 756 CALL pression_p( ip1jmp1, ap, bp, psi, p ) 757 if ( disvert_type==1) then757 if (pressure_exner) then 758 758 CALL exner_hyb_p(ip1jmp1,psi,p,alpha,beta,pks,pk,pkf) 759 else ! we assume that we are in the disvert_type==2 case759 else 760 760 CALL exner_milieu_p(ip1jmp1,psi,p,beta,pks,pk,pkf) 761 761 endif -
LMDZ5/trunk/libf/dyn3dpar/iniacademic.F90
r1561 r1625 222 222 223 223 CALL pression ( ip1jmp1, ap, bp, ps, p ) 224 if ( disvert_type.eq.1) then224 if (pressure_exner) then 225 225 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 226 else if (disvert_type.eq.2) then226 else 227 227 call exner_milieu(ip1jmp1,ps,p,beta,pks,pk,pkf) 228 else229 write(abort_message,*) "Wrong value for disvert_type: ", &230 disvert_type231 call abort_gcm(modname,abort_message,0)232 228 endif 233 229 CALL massdair(p,masse) -
LMDZ5/trunk/libf/dyn3dpar/iniconst.F90
r1624 r1625 2 2 ! $Id$ 3 3 ! 4 4 SUBROUTINE iniconst 5 5 6 6 USE control_mod 7 7 #ifdef CPP_IOIPSL 8 8 use IOIPSL 9 9 #else 10 ! if not using IOIPSL, we still need to use (a local version of) getin11 10 ! if not using IOIPSL, we still need to use (a local version of) getin 11 use ioipsl_getincom 12 12 #endif 13 13 14 IMPLICIT NONE 15 c 16 c P. Le Van 17 c 18 c----------------------------------------------------------------------- 19 c Declarations: 20 c ------------- 21 c 22 #include "dimensions.h" 23 #include "paramet.h" 24 #include "comconst.h" 25 #include "temps.h" 26 #include "comvert.h" 27 #include "iniprint.h" 14 IMPLICIT NONE 15 ! 16 ! P. Le Van 17 ! 18 ! Declarations: 19 ! ------------- 20 ! 21 include "dimensions.h" 22 include "paramet.h" 23 include "comconst.h" 24 include "temps.h" 25 include "comvert.h" 26 include "iniprint.h" 28 27 29 30 31 c 32 c 33 c 34 c-----------------------------------------------------------------------35 cdimension des boucles:36 c----------------------28 character(len=*),parameter :: modname="iniconst" 29 character(len=80) :: abort_message 30 ! 31 ! 32 ! 33 !----------------------------------------------------------------------- 34 ! dimension des boucles: 35 ! ---------------------- 37 36 38 39 40 41 42 43 44 37 im = iim 38 jm = jjm 39 lllm = llm 40 imp1 = iim 41 jmp1 = jjm + 1 42 lllmm1 = llm - 1 43 lllmp1 = llm + 1 45 44 46 c-----------------------------------------------------------------------45 !----------------------------------------------------------------------- 47 46 48 49 50 47 dtphys = iphysiq * dtvr 48 unsim = 1./iim 49 pi = 2.*ASIN( 1. ) 51 50 52 c-----------------------------------------------------------------------53 c 51 !----------------------------------------------------------------------- 52 ! 54 53 55 54 r = cpp * kappa 56 55 57 58 c 59 c-----------------------------------------------------------------------56 write(lunout,*) trim(modname),': R CP Kappa ',r,cpp,kappa 57 ! 58 !----------------------------------------------------------------------- 60 59 61 ! vertical discretization: default behavior depends on planet_type flag 62 if (planet_type=="earth") then 63 disvert_type=1 64 else 65 disvert_type=2 66 endif 67 ! but user can also specify using one or the other in run.def: 68 call getin('disvert_type',disvert_type) 69 write(lunout,*) trim(modname),': disvert_type=',disvert_type 70 71 if (disvert_type==1) then 72 ! standard case for Earth (automatic generation of levels) 73 call disvert(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig, 74 & scaleheight) 75 else if (disvert_type==2) then 76 ! standard case for planets (levels generated using z2sig.def file) 77 call disvert_noterre 78 else 79 write(abort_message,*) "Wrong value for disvert_type: ", 80 & disvert_type 81 call abort_gcm(modname,abort_message,0) 82 endif 60 ! vertical discretization: default behavior depends on planet_type flag 61 if (planet_type=="earth") then 62 disvert_type=1 63 else 64 disvert_type=2 65 endif 66 ! but user can also specify using one or the other in run.def: 67 call getin('disvert_type',disvert_type) 68 write(lunout,*) trim(modname),': disvert_type=',disvert_type 83 69 84 END 70 pressure_exner = disvert_type == 1 ! default value 71 call getin('pressure_exner', pressure_exner) 72 73 if (disvert_type==1) then 74 ! standard case for Earth (automatic generation of levels) 75 call disvert(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig, scaleheight) 76 else if (disvert_type==2) then 77 ! standard case for planets (levels generated using z2sig.def file) 78 call disvert_noterre 79 else 80 write(abort_message,*) "Wrong value for disvert_type: ", disvert_type 81 call abort_gcm(modname,abort_message,0) 82 endif 83 84 END SUBROUTINE iniconst -
LMDZ5/trunk/libf/dyn3dpar/leapfrog_p.F
r1616 r1625 233 233 dq(:,:,:)=0. 234 234 CALL pression ( ip1jmp1, ap, bp, ps, p ) 235 if ( disvert_type==1) then235 if (pressure_exner) then 236 236 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 237 else ! we assume that we are in the disvert_type==2 case237 else 238 238 CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf ) 239 239 endif … … 699 699 700 700 c$OMP BARRIER 701 if ( disvert_type==1) then701 if (pressure_exner) then 702 702 CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta,pks, pk, pkf ) 703 else ! we assume that we are in the disvert_type==2 case703 else 704 704 CALL exner_milieu_p( ip1jmp1, ps, p, beta, pks, pk, pkf ) 705 705 endif … … 1048 1048 CALL pression_p ( ip1jmp1, ap, bp, ps, p ) 1049 1049 c$OMP BARRIER 1050 if ( disvert_type==1) then1050 if (pressure_exner) then 1051 1051 CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 1052 else ! we assume that we are in the disvert_type==2 case1052 else 1053 1053 CALL exner_milieu_p( ip1jmp1, ps, p, beta, pks, pk, pkf ) 1054 1054 endif
Note: See TracChangeset
for help on using the changeset viewer.