Changeset 1707 for LMDZ5/branches/testing/libf/phylmd/iniphysiq.F
- Timestamp:
- Jan 11, 2013, 10:19:19 AM (12 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1670-1692,1694-1703,1705-1706
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/iniphysiq.F
r1403 r1707 8 8 $ pdayref,ptimestep, 9 9 $ plat,plon,parea,pcu,pcv, 10 $ prad,pg,pr,pcpp) 11 USE dimphy 12 USE mod_grid_phy_lmdz 13 USE mod_phys_lmdz_para 14 USE comgeomphy 10 $ prad,pg,pr,pcpp,iflag_phys) 11 USE dimphy, only : klev 12 USE mod_grid_phy_lmdz, only : klon_glo 13 USE mod_phys_lmdz_para, only : klon_omp,klon_omp_begin, 14 & klon_omp_end,klon_mpi_begin 15 USE comgeomphy, only : airephy,cuphy,cvphy,rlond,rlatd 15 16 16 17 IMPLICIT NONE … … 18 19 c======================================================================= 19 20 c 20 c subject:21 c --------21 c Initialisation of the physical constants and some positional and 22 c geometrical arrays for the physics 22 23 c 23 c Initialisation for the physical parametrisations of the LMD24 c martian atmospheric general circulation modele.25 c26 c author: Frederic Hourdin 15 / 10 /9327 c -------28 c29 c arguments:30 c ----------31 c32 c input:33 c ------34 24 c 35 25 c ngrid Size of the horizontal grid. … … 37 27 c nlayer Number of vertical layers. 38 28 c pdayref Day of reference for the simulation 39 c firstcall True at the first call40 c lastcall True at the last call41 c pday Number of days counted from the North. Spring42 c equinoxe.43 29 c 44 30 c======================================================================= 45 c46 c-----------------------------------------------------------------------47 c declarations:48 c -------------49 31 50 32 cym#include "dimensions.h" … … 52 34 cym#include "comgeomphy.h" 53 35 #include "YOMCST.h" 54 REAL prad,pg,pr,pcpp,punjours 55 56 INTEGER ngrid,nlayer 57 REAL plat(ngrid),plon(ngrid),parea(klon_glo) 58 REAL pcu(klon_glo),pcv(klon_glo) 59 INTEGER pdayref 60 INTEGER :: ibegin,iend,offset 61 62 REAL ptimestep 36 #include "iniprint.h" 37 38 REAL,INTENT(IN) :: prad ! radius of the planet (m) 39 REAL,INTENT(IN) :: pg ! gravitational acceleration (m/s2) 40 REAL,INTENT(IN) :: pr ! ! reduced gas constant R/mu 41 REAL,INTENT(IN) :: pcpp ! specific heat Cp 42 REAL,INTENT(IN) :: punjours ! length (in s) of a standard day 43 INTEGER,INTENT(IN) :: ngrid ! number of horizontal grid points in the physics 44 INTEGER,INTENT(IN) :: nlayer ! number of atmospheric layers 45 REAL,INTENT(IN) :: plat(ngrid) ! latitudes of the physics grid 46 REAL,INTENT(IN) :: plon(ngrid) ! longitudes of the physics grid 47 REAL,INTENT(IN) :: parea(klon_glo) ! area (m2) 48 REAL,INTENT(IN) :: pcu(klon_glo) ! cu coeff. (u_covariant = cu * u) 49 REAL,INTENT(IN) :: pcv(klon_glo) ! cv coeff. (v_covariant = cv * v) 50 INTEGER,INTENT(IN) :: pdayref ! reference day of for the simulation 51 REAL,INTENT(IN) :: ptimestep !physics time step (s) 52 INTEGER,INTENT(IN) :: iflag_phys ! type of physics to be called 53 54 INTEGER :: ibegin,iend,offset 63 55 CHARACTER (LEN=20) :: modname='iniphysiq' 64 56 CHARACTER (LEN=80) :: abort_message 65 57 66 58 IF (nlayer.NE.klev) THEN 67 PRINT*,'STOP in inifis'68 PRINT*,'Probleme dedimensions :'69 PRINT*,'nlayer = ',nlayer70 PRINT*,'klev = ',klev59 write(lunout,*) 'STOP in ',trim(modname) 60 write(lunout,*) 'Problem with dimensions :' 61 write(lunout,*) 'nlayer = ',nlayer 62 write(lunout,*) 'klev = ',klev 71 63 abort_message = '' 72 64 CALL abort_gcm (modname,abort_message,1) … … 74 66 75 67 IF (ngrid.NE.klon_glo) THEN 76 PRINT*,'STOP in inifis'77 PRINT*,'Probleme dedimensions :'78 PRINT*,'ngrid = ',ngrid79 PRINT*,'klon = ',klon_glo68 write(lunout,*) 'STOP in ',trim(modname) 69 write(lunout,*) 'Problem with dimensions :' 70 write(lunout,*) 'ngrid = ',ngrid 71 write(lunout,*) 'klon = ',klon_glo 80 72 abort_message = '' 81 73 CALL abort_gcm (modname,abort_message,1) 82 74 ENDIF 83 c$OMP PARALLEL PRIVATE(ibegin,iend) 84 c$OMP+ SHARED(parea,pcu,pcv,plon,plat) 75 76 !$OMP PARALLEL PRIVATE(ibegin,iend) 77 !$OMP+ SHARED(parea,pcu,pcv,plon,plat) 85 78 86 79 offset=klon_mpi_begin-1 … … 92 85 rlatd(1:klon_omp)=plat(offset+klon_omp_begin:offset+klon_omp_end) 93 86 87 ! suphel => initialize some physical constants (orbital parameters, 88 ! geoid, gravity, thermodynamical constants, etc.) in the 89 ! physics 94 90 call suphel 91 92 !$OMP END PARALLEL 95 93 96 c$OMP END PARALLEL 94 ! check that physical constants set in 'suphel' are coherent 95 ! with values set in the dynamics: 96 if (RDAY.ne.punjours) then 97 write(lunout,*) "iniphysiq: length of day discrepancy!!!" 98 write(lunout,*) " in the dynamics punjours=",punjours 99 write(lunout,*) " but in the physics RDAY=",RDAY 100 if (abs(RDAY-punjours).gt.0.01) then 101 ! stop here if the relative difference is more than 1% 102 abort_message = 'length of day discrepancy' 103 CALL abort_gcm (modname,abort_message,1) 104 endif 105 endif 106 if (RG.ne.pg) then 107 write(lunout,*) "iniphysiq: gravity discrepancy !!!" 108 write(lunout,*) " in the dynamics pg=",pg 109 write(lunout,*) " but in the physics RG=",RG 110 if (abs(RG-pg).gt.0.01) then 111 ! stop here if the relative difference is more than 1% 112 abort_message = 'gravity discrepancy' 113 CALL abort_gcm (modname,abort_message,1) 114 endif 115 endif 116 if (RA.ne.prad) then 117 write(lunout,*) "iniphysiq: planet radius discrepancy !!!" 118 write(lunout,*) " in the dynamics prad=",prad 119 write(lunout,*) " but in the physics RA=",RA 120 if (abs(RA-prad).gt.0.01) then 121 ! stop here if the relative difference is more than 1% 122 abort_message = 'planet radius discrepancy' 123 CALL abort_gcm (modname,abort_message,1) 124 endif 125 endif 126 if (RD.ne.pr) then 127 write(lunout,*)"iniphysiq: reduced gas constant discrepancy !!!" 128 write(lunout,*)" in the dynamics pr=",pr 129 write(lunout,*)" but in the physics RD=",RD 130 if (abs(RD-pr).gt.0.01) then 131 ! stop here if the relative difference is more than 1% 132 abort_message = 'reduced gas constant discrepancy' 133 CALL abort_gcm (modname,abort_message,1) 134 endif 135 endif 136 if (RCPD.ne.pcpp) then 137 write(lunout,*)"iniphysiq: specific heat discrepancy !!!" 138 write(lunout,*)" in the dynamics pcpp=",pcpp 139 write(lunout,*)" but in the physics RCPD=",RCPD 140 if (abs(RCPD-pcpp).gt.0.01) then 141 ! stop here if the relative difference is more than 1% 142 abort_message = 'specific heat discrepancy' 143 CALL abort_gcm (modname,abort_message,1) 144 endif 145 endif 97 146 98 print*,'ATTENTION !!! TRAVAILLER SUR INIPHYSIQ' 99 print*,'CONTROLE DES LATITUDES, LONGITUDES, PARAMETRES ...' 147 ! Additional initializations for aquaplanets 148 !$OMP PARALLEL 149 if (iflag_phys>=100) then 150 call iniaqua(klon_omp,rlatd,rlond,iflag_phys) 151 endif 152 !$OMP END PARALLEL 100 153 101 RETURN102 9999 CONTINUE103 abort_message ='Cette version demande les fichier rnatur.dat104 & et surf.def'105 CALL abort_gcm (modname,abort_message,1)154 ! RETURN 155 !9999 CONTINUE 156 ! abort_message ='Cette version demande les fichier rnatur.dat 157 ! & et surf.def' 158 ! CALL abort_gcm (modname,abort_message,1) 106 159 107 160 END
Note: See TracChangeset
for help on using the changeset viewer.