Changeset 4221 for dynamico_lmdz/simple_physics/phyparam
- Timestamp:
- Jan 8, 2020, 1:39:06 AM (5 years ago)
- Location:
- dynamico_lmdz/simple_physics/phyparam
- Files:
-
- 2 added
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
dynamico_lmdz/simple_physics/phyparam/dynphy_lonlat/iniphysiq_mod.F90
r4178 r4221 13 13 USE dimphy, ONLY: init_dimphy 14 14 USE inigeomphy_mod, ONLY: inigeomphy 15 USE iniphyparam_mod, ONLY : iniphyparam 15 16 USE mod_phys_lmdz_para, ONLY: klon_omp ! number of columns (on local omp grid) 16 17 USE infotrac, ONLY: nqtot, type_trac -
dynamico_lmdz/simple_physics/phyparam/param/iniphyparam.F90
r4220 r4221 1 SUBROUTINE iniphyparam(ngrid,nlayer, 2 $ punjours, 3 $ pdayref,ptimestep, 4 $ prad,pg,pr,pcpp) 5 use IOIPSL 6 use getparam 7 use dimphy 8 USE mod_grid_phy_lmdz 9 USE mod_phys_lmdz_para 10 USE callkeys 11 use comgeomfi 12 USE geometry_mod, ONLY : longitude,latitude,cell_area 13 USE phys_const, ONLY : planet_rad,g,r,cpp,rcp,dtphys,unjours,mugaz 14 USE planet, ONLY : coefir, coefvis 15 USE astronomy 16 USE turbulence, ONLY : lmixmin, emin_turb 17 USE surface 18 IMPLICIT NONE 1 MODULE iniphyparam_mod 2 IMPLICIT NONE 3 PRIVATE 19 4 20 c 21 c======================================================================= 22 c 23 c subject: 24 c -------- 25 c 26 c Initialisation for the physical parametrisations of the LMD 27 c martian atmospheric general circulation modele. 28 c 29 c author: Frederic Hourdin 15 / 10 /93 30 c ------- 31 c 32 c arguments: 33 c ---------- 34 c 35 c input: 36 c ------ 37 c 38 c ngrid Size of the horizontal grid. 39 c All internal loops are performed on that grid. 40 c nlayer Number of vertical layers. 41 c pdayref Day of reference for the simulation 42 c firstcall True at the first call 43 c lastcall True at the last call 44 c pday Number of days counted from the North. Spring 45 c equinoxe. 46 c 47 c======================================================================= 48 c 49 c----------------------------------------------------------------------- 50 c declarations: 51 c ------------- 5 REAL, PARAMETER :: perfect_gas_const = 8134. 52 6 53 54 #include "iniprint.h" 7 PUBLIC :: iniphyparam 55 8 9 CONTAINS 10 11 SUBROUTINE iniphyparam(ngrid,nlayer, & 12 & punjours, & 13 & pdayref,ptimestep, & 14 & prad,pg,pr,pcpp) 15 use getparam 16 use dimphy 17 USE mod_grid_phy_lmdz 18 USE mod_phys_lmdz_para 19 USE callkeys 20 use comgeomfi 21 USE geometry_mod, ONLY : longitude,latitude 22 USE phys_const, ONLY : planet_rad,g,r,cpp,rcp,dtphys,unjours,mugaz 23 USE planet, ONLY : coefir, coefvis 24 USE astronomy 25 USE turbulence, ONLY : lmixmin, emin_turb 26 USE surface 27 USE read_param_mod 28 USE phyparam_plugins_lmdz 56 29 57 REAL prad,pg,pr,pcpp,punjours 58 59 INTEGER ngrid,nlayer 60 REAL pdayref 61 62 REAL ptimestep 63 64 print*,'INIPHYPARAM' 30 IMPLICIT NONE 31 32 ! ngrid Size of the horizontal grid. 33 ! All internal loops are performed on that grid. 34 ! nlayer Number of vertical layers. 35 ! pdayref Day of reference for the simulation 36 ! firstcall True at the first call 37 ! lastcall True at the last call 38 ! pday Number of days counted from the North. Spring 39 ! equinox 65 40 66 CALL init_comgeomfi(klon_omp, klev, longitude, latitude) 41 REAL prad,pg,pr,pcpp,punjours 42 43 INTEGER ngrid, nlayer, pdayref 44 45 REAL ptimestep 46 47 print*,'INIPHYPARAM' 48 49 read_paramr_plugin => read_paramr 50 read_parami_plugin => read_parami 51 read_paramb_plugin => read_paramb 67 52 68 IF (klon.NE.klon_omp) THEN 69 PRINT*,'STOP in iniphyparam' 70 PRINT*,'Probleme de dimensions :' 71 PRINT*,'klon = ',klon 72 PRINT*,'klon_omp = ',klon_omp 73 STOP 74 ENDIF 75 76 IF (nlayer.NE.nlayermx) THEN 77 PRINT*,'STOP in iniphyparam' 78 PRINT*,'Probleme de dimensions :' 79 PRINT*,'nlayer = ',nlayer 80 PRINT*,'nlayermx = ',nlayermx 81 STOP 82 ENDIF 83 84 IF (ngrid.NE.klon_glo) THEN 85 PRINT*,'STOP in iniphyparam' 86 PRINT*,'Probleme de dimensions :' 87 PRINT*,'ngrid = ',ngrid 88 PRINT*,'ngridmax = ',klon_glo 89 STOP 90 ENDIF 91 92 print*,'Avant les getpar ' 93 CALL getpar('unjours',86400. ,unjours,'unjours') 94 CALL getpar('planet_rad',6.4e6,planet_rad,'planet_rad') 95 CALL getpar('g',9.8 ,g,'g') 96 CALL getpar('cpp',1004. ,cpp,'cpp') 97 CALL getpar('mugaz',28. ,mugaz,'mugaz') 98 CALL getpar('year_day',360. ,year_day,'year_day') 99 CALL getpar('periheli',150. ,periheli,'periheli') 100 CALL getpar('aphelie',150. ,aphelie,'aphelie') 101 CALL getpar('peri_day',0. ,peri_day,'peri_day') 102 CALL getpar('obliquit',23. ,obliquit,'obliquit') 103 CALL getpar('Cd_mer',.01 ,Cd_mer,'Cd_mer') 104 CALL getpar('Cd_ter',.01 ,Cd_ter,'Cd_ter') 105 CALL getpar('I_mer',30000. ,I_mer,'I_mer') 106 CALL getpar('I_ter',30000. ,I_ter,'I_ter') 107 CALL getpar('alb_ter',.112 ,alb_ter,'alb_ter') 108 CALL getpar('alb_mer',.112 ,alb_mer,'alb_mer') 109 CALL getpar('emi_mer',1. ,emi_mer,'emi_mer') 110 CALL getpar('emi_mer',1. ,emi_mer,'emi_mer') 111 CALL getpar('emin_turb',1.e-16 ,emin_turb,'emin_turb') 112 CALL getpar('lmixmin',100. ,lmixmin,'lmixmin') 113 CALL getpar('coefvis',.99 ,coefvis,'coefvis') 114 CALL getpar('coefir',.08 ,coefir,'coefir') 115 116 117 CALL getpar('callrad',.true.,callrad,'appel rayonnemen') 118 CALL getpar('calldifv',.true.,calldifv,'appel difv') 119 CALL getpar('calladj',.true.,calladj,'appel adj') 120 CALL getpar('callcond',.true.,callcond,'appel cond') 121 CALL getpar('callsoil',.true.,callsoil,'appel soil') 122 CALL getpar('season',.true.,season,'appel soil') 123 CALL getpar('diurnal',.false.,diurnal,'appel soil') 124 CALL getpar('lverbose',.true.,lverbose,'appel soil') 125 CALL getpar('period_sort',1.,period_sort,'period sorties en jour') 126 127 write(lunout,*) 'unjours=',unjours 128 write(lunout,*) 'planet_rad=',planet_rad 129 write(lunout,*) 'g=',g 130 write(lunout,*) 'cpp=',cpp 131 write(lunout,*) 'mugaz=',mugaz 132 write(lunout,*) 'year_day=',year_day 133 write(lunout,*) 'periheli=',periheli 134 write(lunout,*) 'aphelie=',aphelie 135 write(lunout,*) 'peri_day=',peri_day 136 write(lunout,*) 'obliquit=',obliquit 137 write(lunout,*) 'Cd_mer=',Cd_mer 138 write(lunout,*) 'Cd_ter=',Cd_ter 139 write(lunout,*) 'I_mer=',I_mer 140 write(lunout,*) 'I_ter=',I_ter 141 write(lunout,*) 'alb_ter=',alb_ter 142 write(lunout,*) 'alb_mer=',alb_mer 143 write(lunout,*) 'emi_mer=',emi_mer 144 write(lunout,*) 'emi_mer=',emi_mer 145 write(lunout,*) 'emin_turb=',emin_turb 146 write(lunout,*) 'lmixmin=',lmixmin 147 write(lunout,*) 'coefvis=',coefvis 148 write(lunout,*) 'coefir=',coefir 149 write(lunout,*) 'callrad=',callrad 150 write(lunout,*) 'calldifv=',calldifv 151 write(lunout,*) 'calladj=',calladj 152 write(lunout,*) 'callcond=',callcond 153 write(lunout,*) 'callsoil=',callsoil 154 write(lunout,*) 'season=',season 155 write(lunout,*) 'diurnal=',diurnal 156 write(lunout,*) 'lverbose=',lverbose 157 write(lunout,*) 'period_sort=',period_sort 158 159 print*,'Activation de la physique:' 160 print*,' Rayonnement ',callrad 161 print*,' Diffusion verticale turbulente ', calldifv 162 print*,' Ajustement convectif ',calladj 163 print*,' Sol ',callsoil 164 print*,' Cycle diurne ',diurnal 165 166 c choice of the frequency of the computation of radiations 167 IF(diurnal) THEN 168 iradia=NINT(punjours/(20.*ptimestep)) 169 ELSE 170 iradia=NINT(punjours/(4.*ptimestep)) 171 ENDIF 172 iradia=1 173 PRINT*,'unjours',punjours 174 PRINT*,'The radiative transfer is computed each ', 175 s iradia,' physical time-step or each ', 176 s iradia*ptimestep,' seconds' 177 c----------------------------------------------------------------------- 178 179 print*,'latitude0 ohe',latitude(1:3),latitude(klon_omp) 180 print*,'OK17 AAA' 181 182 prad=planet_rad 183 pg=g 184 r=8.134/(mugaz*0.001) 185 print*,'R=',r 186 pr=r 187 pcpp=cpp 188 rcp=r/cpp 189 dtphys=ptimestep 190 punjours=unjours 191 192 RETURN 193 9999 STOP'Cette version demande les fichier rnatur.dat et surf.def' 194 END 53 CALL init_comgeomfi(klon_omp, klev, longitude, latitude) 54 55 IF (klon.NE.klon_omp) THEN 56 PRINT*,'STOP in iniphyparam' 57 PRINT*,'Probleme de dimensions :' 58 PRINT*,'klon = ',klon 59 PRINT*,'klon_omp = ',klon_omp 60 STOP 61 ENDIF 62 63 IF (nlayer.NE.nlayermx) THEN 64 PRINT*,'STOP in iniphyparam' 65 PRINT*,'Probleme de dimensions :' 66 PRINT*,'nlayer = ',nlayer 67 PRINT*,'nlayermx = ',nlayermx 68 STOP 69 ENDIF 70 71 IF (ngrid.NE.klon_glo) THEN 72 PRINT*,'STOP in iniphyparam' 73 PRINT*,'Probleme de dimensions :' 74 PRINT*,'ngrid = ',ngrid 75 PRINT*,'ngridmax = ',klon_glo 76 STOP 77 ENDIF 78 79 print*,'Avant les getpar ' 80 CALL read_param('unjours', 86400., unjours,'unjours') 81 CALL read_param('planet_rad',6.4e6,planet_rad,'planet_rad') 82 CALL read_param('g',9.8 ,g,'g') 83 CALL read_param('cpp',1004. ,cpp,'cpp') 84 CALL read_param('mugaz',28. ,mugaz,'mugaz') 85 CALL read_param('year_day',360. ,year_day,'year_day') 86 CALL read_param('periheli',150. ,periheli,'periheli') 87 CALL read_param('aphelie',150. ,aphelie,'aphelie') 88 CALL read_param('peri_day',0. ,peri_day,'peri_day') 89 CALL read_param('obliquit',23. ,obliquit,'obliquit') 90 CALL read_param('Cd_mer',.01 ,Cd_mer,'Cd_mer') 91 CALL read_param('Cd_ter',.01 ,Cd_ter,'Cd_ter') 92 CALL read_param('I_mer',30000. ,I_mer,'I_mer') 93 CALL read_param('I_ter',30000. ,I_ter,'I_ter') 94 CALL read_param('alb_ter',.112 ,alb_ter,'alb_ter') 95 CALL read_param('alb_mer',.112 ,alb_mer,'alb_mer') 96 CALL read_param('emi_mer',1. ,emi_mer,'emi_mer') 97 CALL read_param('emi_mer',1. ,emi_mer,'emi_mer') 98 CALL read_param('emin_turb',1.e-16 ,emin_turb,'emin_turb') 99 CALL read_param('lmixmin',100. ,lmixmin,'lmixmin') 100 CALL read_param('coefvis',.99 ,coefvis,'coefvis') 101 CALL read_param('coefir',.08 ,coefir,'coefir') 102 103 CALL read_param('callrad',.true.,callrad,'appel rayonnemen') 104 CALL read_param('calldifv',.true.,calldifv,'appel difv') 105 CALL read_param('calladj',.true.,calladj,'appel adj') 106 CALL read_param('callcond',.true.,callcond,'appel cond') 107 CALL read_param('callsoil',.true.,callsoil,'appel soil') 108 CALL read_param('season',.true.,season,'appel soil') 109 CALL read_param('diurnal',.false.,diurnal,'appel soil') 110 CALL read_param('lverbose',.true.,lverbose,'appel soil') 111 CALL read_param('period_sort',1.,period_sort,'period sorties en jour') 112 113 print*,'Activation de la physique:' 114 print*,' Rayonnement ',callrad 115 print*,' Diffusion verticale turbulente ', calldifv 116 print*,' Ajustement convectif ',calladj 117 print*,' Sol ',callsoil 118 print*,' Cycle diurne ',diurnal 119 120 ! choice of the frequency of the computation of radiations 121 IF(diurnal) THEN 122 iradia=NINT(punjours/(20.*ptimestep)) 123 ELSE 124 iradia=NINT(punjours/(4.*ptimestep)) 125 ENDIF 126 iradia=1 127 PRINT*,'unjours',punjours 128 PRINT*,'The radiative transfer is computed each ', & 129 & iradia,' physical time-step or each ', & 130 & iradia*ptimestep,' seconds' 131 132 !----------------------------------------------------------------------- 133 134 print*,'latitude0 ohe',latitude(1:3),latitude(klon_omp) 135 print*,'OK17 AAA' 136 137 prad=planet_rad 138 pg=g 139 r=perfect_gas_const/mugaz 140 print*,'R=',r 141 pr=r 142 pcpp=cpp 143 rcp=r/cpp 144 dtphys=ptimestep 145 punjours=unjours 146 147 END SUBROUTINE iniphyparam 148 149 END MODULE iniphyparam_mod
Note: See TracChangeset
for help on using the changeset viewer.