Changeset 5246 for LMDZ6/trunk/libf/dyn3dmem/initdynav_loc.F90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (23 hours ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3dmem/initdynav_loc.F90
r5245 r5246 2 2 ! $Id: initdynav_p.F 1279 2009-12-10 09:02:56Z fairhead $ 3 3 ! 4 4 subroutine initdynav_loc(day0,anne0,tstep,t_ops,t_wrt) 5 5 6 6 #ifdef CPP_IOIPSL 7 ! This routine needs IOIPSL8 7 ! This routine needs IOIPSL 8 USE IOIPSL 9 9 #endif 10 11 12 13 !USE infotrac14 15 &dynhistave_file,dynhistvave_file,dynhistuave_file16 17 18 19 20 21 22 C 23 CRoutine d'initialisation des ecritures des fichiers histoires LMDZ24 Cau format IOIPSL. Initialisation du fichier histoire moyenne.25 C 26 CAppels succesifs des routines: histbeg27 Chisthori28 Chistver29 Chistdef30 Chistend31 C 32 CEntree:33 C 34 Cday0,anne0: date de reference35 Ctstep : frequence d'ecriture36 Ct_ops: frequence de l'operation pour IOIPSL37 Ct_wrt: frequence d'ecriture sur le fichier38 C 39 CSortie:40 Cfileid: ID du fichier netcdf cree41 C 42 CL. Fairhead, LMD, 03/9943 C 44 C=====================================================================45 C 46 CDeclarations47 48 49 50 51 52 53 CArguments54 C 55 integer*4day0, anne056 realtstep, t_ops, t_wrt10 USE parallel_lmdz 11 use Write_field 12 use misc_mod 13 ! USE infotrac 14 use com_io_dyn_mod, only : histaveid,histvaveid,histuaveid, & 15 dynhistave_file,dynhistvave_file,dynhistuave_file 16 USE comconst_mod, ONLY: pi 17 USE comvert_mod, ONLY: presnivs 18 USE temps_mod, ONLY: itau_dyn 19 20 implicit none 21 22 ! 23 ! Routine d'initialisation des ecritures des fichiers histoires LMDZ 24 ! au format IOIPSL. Initialisation du fichier histoire moyenne. 25 ! 26 ! Appels succesifs des routines: histbeg 27 ! histhori 28 ! histver 29 ! histdef 30 ! histend 31 ! 32 ! Entree: 33 ! 34 ! day0,anne0: date de reference 35 ! tstep : frequence d'ecriture 36 ! t_ops: frequence de l'operation pour IOIPSL 37 ! t_wrt: frequence d'ecriture sur le fichier 38 ! 39 ! Sortie: 40 ! fileid: ID du fichier netcdf cree 41 ! 42 ! L. Fairhead, LMD, 03/99 43 ! 44 ! ===================================================================== 45 ! 46 ! Declarations 47 include "dimensions.h" 48 include "paramet.h" 49 include "comgeom.h" 50 include "description.h" 51 include "iniprint.h" 52 53 ! Arguments 54 ! 55 integer(kind=4) :: day0, anne0 56 real :: tstep, t_ops, t_wrt 57 57 58 58 #ifdef CPP_IOIPSL 59 ! This routine needs IOIPSL60 CVariables locales61 C 62 integertau063 realzjulian64 integeriq65 realrlong(iip1,jjp1), rlat(iip1,jjp1)66 integeruhoriid, vhoriid, thoriid67 integerzvertiid,zvertiidv,zvertiidu68 integerii,jj69 integerzan, dayref70 71 72 ! definition du domaine d'ecriture pour le rebuild73 74 75 76 77 78 79 80 INTEGER,DIMENSION(2) :: dhe81 82 83 84 85 86 87 88 C 89 CInitialisations90 C 91 92 C 93 CAppel a histbeg: creation du fichier netcdf et initialisations diverses94 C 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ! Creation de 3 fichiers pour les differentes grilles horizontales110 ! Restriction de IOIPSL: seulement 2 coordonnees dans le meme fichier111 ! Grille Scalaire 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,127 .'box',dynhistave_domain_id)128 129 call histbeg(dynhistave_file,iip1, rlong(:,1), jjn,130 . rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0,131 . zjulian, tstep, thoriid,132 .histaveid,dynhistave_domain_id)133 134 135 CCreation du fichier histoire pour les grilles en V et U (oblige pour l'instant,136 CIOIPSL ne permet pas de grilles avec des nombres de point differents dans137 Cun meme fichier)138 ! Grille V139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,163 .'box',dynhistvave_domain_id)164 165 call histbeg(dynhistvave_file,iip1, rlong(:,1), jjn,166 . rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0,167 . zjulian, tstep, vhoriid,168 .histvaveid,dynhistvave_domain_id)169 170 ! Grille U171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,193 .'box',dynhistuave_domain_id)194 195 call histbeg(dynhistuave_file,iip1, rlong(:,1), jjn,196 . rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0,197 . zjulian, tstep, uhoriid,198 .histuaveid,dynhistuave_domain_id)199 200 201 C 202 CAppel a histvert pour la grille verticale203 C 204 call histvert(histaveid,'presnivs','Niveaux Pression205 & approximatifs','mb',llm, presnivs/100., zvertiid,'down')206 call histvert(histuaveid,'presnivs','Niveaux Pression207 & approximatifs','mb',llm, presnivs/100., zvertiidv,'down')208 call histvert(histvaveid,'presnivs','Niveaux Pression209 & approximatifs','mb',llm, presnivs/100., zvertiidu,'down')210 211 C 212 CAppels a histdef pour la definition des variables a sauvegarder213 C 214 CVents U215 C 216 217 call histdef(histuaveid, 'u', 'vent u moyen ',218 . 'm/s', iip1, jjn, uhoriid, llm, 1, llm, zvertiidu,219 .32, 'ave(X)', t_ops, t_wrt)220 221 C 222 CVents V223 C 224 225 call histdef(histvaveid, 'v', 'vent v moyen',226 . 'm/s', iip1, jjn, vhoriid, llm, 1, llm, zvertiidv,227 .32, 'ave(X)', t_ops, t_wrt)228 229 C 230 CTemperature231 C 232 233 call histdef(histaveid, 'temp', 'temperature moyenne', 'K',234 . iip1, jjn, thoriid, llm, 1, llm, zvertiid,235 .32, 'ave(X)', t_ops, t_wrt)236 C 237 CTemperature potentielle238 C 239 call histdef(histaveid, 'theta', 'temperature potentielle', 'K',240 . iip1, jjn, thoriid, llm, 1, llm, zvertiid,241 .32, 'ave(X)', t_ops, t_wrt)242 243 244 C 245 CGeopotentiel246 C 247 call histdef(histaveid, 'phi', 'geopotentiel moyen', '-',248 . iip1, jjn, thoriid, llm, 1, llm, zvertiid,249 .32, 'ave(X)', t_ops, t_wrt)250 C 251 CTraceurs252 C 253 !DO iq=1,nqtot254 !call histdef(histaveid, tracers(iq)%name,255 !. tracers(iq)%longName, '-',256 !. iip1, jjn, thoriid, llm, 1, llm, zvertiid,257 !. 32, 'ave(X)', t_ops, t_wrt)258 !enddo259 C 260 CMasse261 C 262 call histdef(histaveid, 'masse', 'masse moyenne', 'kg',263 . iip1, jjn, thoriid, llm, 1, llm, zvertiid,264 .32, 'ave(X)', t_ops, t_wrt)265 C 266 CPression au sol267 C 268 call histdef(histaveid, 'ps', 'pression naturelle au sol', 'Pa',269 . iip1, jjn, thoriid, 1, 1, 1, -99,270 .32, 'ave(X)', t_ops, t_wrt)271 C 272 CGeopotentiel au sol273 C 274 !call histdef(histaveid, 'phis', 'geopotentiel au sol', '-',275 !. iip1, jjn, thoriid, 1, 1, 1, -99,276 !. 32, 'ave(X)', t_ops, t_wrt)277 C 278 CFin279 C 280 281 282 59 ! This routine needs IOIPSL 60 ! Variables locales 61 ! 62 integer :: tau0 63 real :: zjulian 64 integer :: iq 65 real :: rlong(iip1,jjp1), rlat(iip1,jjp1) 66 integer :: uhoriid, vhoriid, thoriid 67 integer :: zvertiid,zvertiidv,zvertiidu 68 integer :: ii,jj 69 integer :: zan, dayref 70 integer :: jjb,jje,jjn 71 72 ! definition du domaine d'ecriture pour le rebuild 73 74 INTEGER,DIMENSION(2) :: ddid 75 INTEGER,DIMENSION(2) :: dsg 76 INTEGER,DIMENSION(2) :: dsl 77 INTEGER,DIMENSION(2) :: dpf 78 INTEGER,DIMENSION(2) :: dpl 79 INTEGER,DIMENSION(2) :: dhs 80 INTEGER,DIMENSION(2) :: dhe 81 82 INTEGER :: dynhistave_domain_id 83 INTEGER :: dynhistvave_domain_id 84 INTEGER :: dynhistuave_domain_id 85 86 if (adjust) return 87 88 ! 89 ! Initialisations 90 ! 91 pi = 4. * atan (1.) 92 ! 93 ! Appel a histbeg: creation du fichier netcdf et initialisations diverses 94 ! 95 96 zan = anne0 97 dayref = day0 98 CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) 99 tau0 = itau_dyn 100 101 do jj = 1, jjp1 102 do ii = 1, iip1 103 rlong(ii,jj) = rlonv(ii) * 180. / pi 104 rlat(ii,jj) = rlatu(jj) * 180. / pi 105 enddo 106 enddo 107 108 109 ! Creation de 3 fichiers pour les differentes grilles horizontales 110 ! Restriction de IOIPSL: seulement 2 coordonnees dans le meme fichier 111 ! Grille Scalaire 112 113 jjb=jj_begin 114 jje=jj_end 115 jjn=jj_nb 116 117 ddid=(/ 1,2 /) 118 dsg=(/ iip1,jjp1 /) 119 dsl=(/ iip1,jjn /) 120 dpf=(/ 1,jjb /) 121 dpl=(/ iip1,jje /) 122 dhs=(/ 0,0 /) 123 dhe=(/ 0,0 /) 124 125 126 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 127 'box',dynhistave_domain_id) 128 129 call histbeg(dynhistave_file,iip1, rlong(:,1), jjn, & 130 rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0, & 131 zjulian, tstep, thoriid, & 132 histaveid,dynhistave_domain_id) 133 134 135 ! Creation du fichier histoire pour les grilles en V et U (oblige pour l'instant, 136 ! IOIPSL ne permet pas de grilles avec des nombres de point differents dans 137 ! un meme fichier) 138 ! Grille V 139 140 jjb=jj_begin 141 jje=jj_end 142 jjn=jj_nb 143 IF (pole_sud) jjn=jjn-1 144 IF (pole_sud) jje=jje-1 145 146 do jj = jjb, jje 147 do ii = 1, iip1 148 rlong(ii,jj) = rlonv(ii) * 180. / pi 149 rlat(ii,jj) = rlatv(jj) * 180. / pi 150 enddo 151 enddo 152 153 ddid=(/ 1,2 /) 154 dsg=(/ iip1,jjm /) 155 dsl=(/ iip1,jjn /) 156 dpf=(/ 1,jjb /) 157 dpl=(/ iip1,jje /) 158 dhs=(/ 0,0 /) 159 dhe=(/ 0,0 /) 160 161 162 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 163 'box',dynhistvave_domain_id) 164 165 call histbeg(dynhistvave_file,iip1, rlong(:,1), jjn, & 166 rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0, & 167 zjulian, tstep, vhoriid, & 168 histvaveid,dynhistvave_domain_id) 169 170 ! Grille U 171 172 do jj = 1, jjp1 173 do ii = 1, iip1 174 rlong(ii,jj) = rlonu(ii) * 180. / pi 175 rlat(ii,jj) = rlatu(jj) * 180. / pi 176 enddo 177 enddo 178 179 jjb=jj_begin 180 jje=jj_end 181 jjn=jj_nb 182 183 ddid=(/ 1,2 /) 184 dsg=(/ iip1,jjp1 /) 185 dsl=(/ iip1,jjn /) 186 dpf=(/ 1,jjb /) 187 dpl=(/ iip1,jje /) 188 dhs=(/ 0,0 /) 189 dhe=(/ 0,0 /) 190 191 192 call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 193 'box',dynhistuave_domain_id) 194 195 call histbeg(dynhistuave_file,iip1, rlong(:,1), jjn, & 196 rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0, & 197 zjulian, tstep, uhoriid, & 198 histuaveid,dynhistuave_domain_id) 199 200 201 ! 202 ! Appel a histvert pour la grille verticale 203 ! 204 call histvert(histaveid,'presnivs','Niveaux Pression& 205 & approximatifs','mb',llm, presnivs/100., zvertiid,'down') 206 call histvert(histuaveid,'presnivs','Niveaux Pression& 207 & approximatifs','mb',llm, presnivs/100., zvertiidv,'down') 208 call histvert(histvaveid,'presnivs','Niveaux Pression& 209 & approximatifs','mb',llm, presnivs/100., zvertiidu,'down') 210 211 ! 212 ! Appels a histdef pour la definition des variables a sauvegarder 213 ! 214 ! Vents U 215 ! 216 jjn=jj_nb 217 call histdef(histuaveid, 'u', 'vent u moyen ', & 218 'm/s', iip1, jjn, uhoriid, llm, 1, llm, zvertiidu, & 219 32, 'ave(X)', t_ops, t_wrt) 220 221 ! 222 ! Vents V 223 ! 224 if (pole_sud) jjn=jj_nb-1 225 call histdef(histvaveid, 'v', 'vent v moyen', & 226 'm/s', iip1, jjn, vhoriid, llm, 1, llm, zvertiidv, & 227 32, 'ave(X)', t_ops, t_wrt) 228 229 ! 230 ! Temperature 231 ! 232 jjn=jj_nb 233 call histdef(histaveid, 'temp', 'temperature moyenne', 'K', & 234 iip1, jjn, thoriid, llm, 1, llm, zvertiid, & 235 32, 'ave(X)', t_ops, t_wrt) 236 ! 237 ! Temperature potentielle 238 ! 239 call histdef(histaveid, 'theta', 'temperature potentielle', 'K', & 240 iip1, jjn, thoriid, llm, 1, llm, zvertiid, & 241 32, 'ave(X)', t_ops, t_wrt) 242 243 244 ! 245 ! Geopotentiel 246 ! 247 call histdef(histaveid, 'phi', 'geopotentiel moyen', '-', & 248 iip1, jjn, thoriid, llm, 1, llm, zvertiid, & 249 32, 'ave(X)', t_ops, t_wrt) 250 ! 251 ! Traceurs 252 ! 253 ! DO iq=1,nqtot 254 ! call histdef(histaveid, tracers(iq)%name, 255 ! . tracers(iq)%longName, '-', 256 ! . iip1, jjn, thoriid, llm, 1, llm, zvertiid, 257 ! . 32, 'ave(X)', t_ops, t_wrt) 258 ! enddo 259 ! 260 ! Masse 261 ! 262 call histdef(histaveid, 'masse', 'masse moyenne', 'kg', & 263 iip1, jjn, thoriid, llm, 1, llm, zvertiid, & 264 32, 'ave(X)', t_ops, t_wrt) 265 ! 266 ! Pression au sol 267 ! 268 call histdef(histaveid, 'ps', 'pression naturelle au sol', 'Pa', & 269 iip1, jjn, thoriid, 1, 1, 1, -99, & 270 32, 'ave(X)', t_ops, t_wrt) 271 ! 272 ! Geopotentiel au sol 273 ! 274 ! call histdef(histaveid, 'phis', 'geopotentiel au sol', '-', 275 ! . iip1, jjn, thoriid, 1, 1, 1, -99, 276 ! . 32, 'ave(X)', t_ops, t_wrt) 277 ! 278 ! Fin 279 ! 280 call histend(histaveid) 281 call histend(histuaveid) 282 call histend(histvaveid) 283 283 #else 284 284 write(lunout,*)'initdynav_loc: Needs IOIPSL to function' 285 285 #endif 286 ! #endif of #ifdef CPP_IOIPSL287 end 286 ! #endif of #ifdef CPP_IOIPSL 287 end subroutine initdynav_loc
Note: See TracChangeset
for help on using the changeset viewer.