Changeset 5101 for LMDZ6/branches/Amaury_dev/libf/dyn3d_common/inithist.F90
- Timestamp:
- Jul 23, 2024, 8:22:55 AM (2 months ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/inithist.F90
r5100 r5101 1 2 1 ! $Id$ 3 2 4 subroutine inithist(day0,anne0,tstep,t_ops,t_wrt)3 subroutine inithist(day0, anne0, tstep, t_ops, t_wrt) 5 4 6 5 #ifdef CPP_IOIPSL 7 6 USE IOIPSL 8 7 #endif 9 USE infotrac, ONLY : nqtot 10 use com_io_dyn_mod, only : histid,histvid,histuid, & 11 & dynhist_file,dynhistv_file,dynhistu_file 12 USE comconst_mod, ONLY: pi 13 USE comvert_mod, ONLY: presnivs 14 USE temps_mod, ONLY: itau_dyn 15 16 implicit none 8 USE infotrac, ONLY: nqtot 9 use com_io_dyn_mod, ONLY: histid, histvid, histuid, & 10 dynhist_file, dynhistv_file, dynhistu_file 11 USE comconst_mod, ONLY: pi 12 USE comvert_mod, ONLY: presnivs 13 USE temps_mod, ONLY: itau_dyn 17 14 18 C 19 C Routine d'initialisation des ecritures des fichiers histoires LMDZ 20 C au format IOIPSL 21 C 22 C Appels succesifs des routines: histbeg 23 C histhori 24 C histver 25 C histdef 26 C histend 27 C 28 C Entree: 29 C 30 C infile: nom du fichier histoire a creer 31 C day0,anne0: date de reference 32 C tstep: duree du pas de temps en seconde 33 C t_ops: frequence de l'operation pour IOIPSL 34 C t_wrt: frequence d'ecriture sur le fichier 35 C nq: nombre de traceurs 36 C 37 C 38 C L. Fairhead, LMD, 03/99 39 C 40 C ===================================================================== 41 C 42 C Declarations 43 include "dimensions.h" 44 include "paramet.h" 45 include "comgeom.h" 46 include "description.h" 47 include "iniprint.h" 15 implicit none 48 16 49 C Arguments 50 C 51 integer day0, anne0 52 real tstep, t_ops, t_wrt 17 ! 18 ! Routine d'initialisation des ecritures des fichiers histoires LMDZ 19 ! au format IOIPSL 20 ! 21 ! Appels succesifs des routines: histbeg 22 ! histhori 23 ! histver 24 ! histdef 25 ! histend 26 ! 27 ! Entree: 28 ! 29 ! infile: nom du fichier histoire a creer 30 ! day0,anne0: date de reference 31 ! tstep: duree du pas de temps en seconde 32 ! t_ops: frequence de l'operation pour IOIPSL 33 ! t_wrt: frequence d'ecriture sur le fichier 34 ! nq: nombre de traceurs 35 ! 36 ! 37 ! L. Fairhead, LMD, 03/99 38 ! 39 ! ===================================================================== 40 ! 41 ! Declarations 42 include "dimensions.h" 43 include "paramet.h" 44 include "comgeom.h" 45 include "description.h" 46 include "iniprint.h" 47 48 ! Arguments 49 ! 50 integer :: day0, anne0 51 real :: tstep, t_ops, t_wrt 53 52 54 53 #ifdef CPP_IOIPSL 55 ! This routine needs IOIPSL to work56 CVariables locales57 C 58 integertau059 realzjulian60 integeriq61 realrlong(iip1,jjp1), rlat(iip1,jjp1)62 integeruhoriid, vhoriid, thoriid, zvertiid63 integerii,jj64 integerzan, dayref65 C 66 CInitialisations67 C 68 69 C 70 CAppel a histbeg: creation du fichier netcdf et initialisations diverses71 C 54 ! This routine needs IOIPSL to work 55 ! Variables locales 56 ! 57 integer :: tau0 58 real :: zjulian 59 integer :: iq 60 real :: rlong(iip1,jjp1), rlat(iip1,jjp1) 61 integer :: uhoriid, vhoriid, thoriid, zvertiid 62 integer :: ii,jj 63 integer :: zan, dayref 64 ! 65 ! Initialisations 66 ! 67 pi = 4. * atan (1.) 68 ! 69 ! Appel a histbeg: creation du fichier netcdf et initialisations diverses 70 ! 72 71 73 zan = anne0 74 dayref = day0 75 CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) 76 tau0 = itau_dyn 77 78 ! ------------------------------------------------------------- 79 ! Creation des 3 fichiers pour les grilles horizontales U,V,Scal 80 ! ------------------------------------------------------------- 81 !Grille U 82 do jj = 1, jjp1 83 do ii = 1, iip1 84 rlong(ii,jj) = rlonu(ii) * 180. / pi 85 rlat(ii,jj) = rlatu(jj) * 180. / pi 86 enddo 87 enddo 88 89 call histbeg(dynhistu_file, iip1, rlong(:,1), jjp1, rlat(1,:), 90 . 1, iip1, 1, jjp1, 91 . tau0, zjulian, tstep, uhoriid, histuid) 72 zan = anne0 73 dayref = day0 74 CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) 75 tau0 = itau_dyn 92 76 93 ! Grille V 94 do jj = 1, jjm 95 do ii = 1, iip1 96 rlong(ii,jj) = rlonv(ii) * 180. / pi 97 rlat(ii,jj) = rlatv(jj) * 180. / pi 98 enddo 99 enddo 77 ! ------------------------------------------------------------- 78 ! Creation des 3 fichiers pour les grilles horizontales U,V,Scal 79 ! ------------------------------------------------------------- 80 !Grille U 81 do jj = 1, jjp1 82 do ii = 1, iip1 83 rlong(ii,jj) = rlonu(ii) * 180. / pi 84 rlat(ii,jj) = rlatu(jj) * 180. / pi 85 enddo 86 enddo 100 87 101 call histbeg(dynhistv_file, iip1, rlong(:,1), jjm, rlat(1,:),102 . 1, iip1, 1, jjm,103 . tau0, zjulian, tstep, vhoriid, histvid)88 CALL histbeg(dynhistu_file, iip1, rlong(:,1), jjp1, rlat(1,:), & 89 1, iip1, 1, jjp1, & 90 tau0, zjulian, tstep, uhoriid, histuid) 104 91 105 !Grille Scalaire 106 do jj = 1, jjp1107 108 109 rlat(ii,jj) = rlatu(jj) * 180. / pi110 111 92 ! Grille V 93 do jj = 1, jjm 94 do ii = 1, iip1 95 rlong(ii,jj) = rlonv(ii) * 180. / pi 96 rlat(ii,jj) = rlatv(jj) * 180. / pi 97 enddo 98 enddo 112 99 113 call histbeg(dynhist_file, iip1, rlong(:,1), jjp1, rlat(1,:), 114 . 1, iip1, 1, jjp1, 115 . tau0, zjulian, tstep, thoriid, histid) 116 ! ------------------------------------------------------------- 117 C Appel a histvert pour la grille verticale 118 ! ------------------------------------------------------------- 119 call histvert(histid, 'presnivs', 'Niveaux pression','mb', 120 . llm, presnivs/100., zvertiid,'down') 121 call histvert(histvid, 'presnivs', 'Niveaux pression','mb', 122 . llm, presnivs/100., zvertiid,'down') 123 call histvert(histuid, 'presnivs', 'Niveaux pression','mb', 124 . llm, presnivs/100., zvertiid,'down') 125 C 126 ! ------------------------------------------------------------- 127 C Appels a histdef pour la definition des variables a sauvegarder 128 ! ------------------------------------------------------------- 129 C 130 C Vents U 131 C 132 call histdef(histuid, 'u', 'vent u', 'm/s', 133 . iip1, jjp1, uhoriid, llm, 1, llm, zvertiid, 134 . 32, 'inst(X)', t_ops, t_wrt) 135 C 136 C Vents V 137 C 138 call histdef(histvid, 'v', 'vent v', 'm/s', 139 . iip1, jjm, vhoriid, llm, 1, llm, zvertiid, 140 . 32, 'inst(X)', t_ops, t_wrt) 100 CALL histbeg(dynhistv_file, iip1, rlong(:,1), jjm, rlat(1,:), & 101 1, iip1, 1, jjm, & 102 tau0, zjulian, tstep, vhoriid, histvid) 141 103 142 C 143 C Temperature potentielle 144 C 145 call histdef(histid, 'teta', 'temperature potentielle', '-', 146 . iip1, jjp1, thoriid, llm, 1, llm, zvertiid, 147 . 32, 'inst(X)', t_ops, t_wrt) 148 C 149 C Geopotentiel 150 C 151 call histdef(histid, 'phi', 'geopotentiel', '-', 152 . iip1, jjp1, thoriid, llm, 1, llm, zvertiid, 153 . 32, 'inst(X)', t_ops, t_wrt) 154 C 155 C Traceurs 156 C 104 !Grille Scalaire 105 do jj = 1, jjp1 106 do ii = 1, iip1 107 rlong(ii,jj) = rlonv(ii) * 180. / pi 108 rlat(ii,jj) = rlatu(jj) * 180. / pi 109 enddo 110 enddo 157 111 158 ! DO iq=1,nqtot 159 ! call histdef(histid, tracers(iq)%name, 160 ! tracers(iq)%longName, '-', 161 ! . iip1, jjp1, thoriid, llm, 1, llm, zvertiid, 162 ! . 32, 'inst(X)', t_ops, t_wrt) 163 ! enddo 164 !C 165 C Masse 166 C 167 call histdef(histid, 'masse', 'masse', 'kg', 168 . iip1, jjp1, thoriid, llm, 1, llm, zvertiid, 169 . 32, 'inst(X)', t_ops, t_wrt) 170 C 171 C Pression au sol 172 C 173 call histdef(histid, 'ps', 'pression naturelle au sol', 'Pa', 174 . iip1, jjp1, thoriid, 1, 1, 1, -99, 175 . 32, 'inst(X)', t_ops, t_wrt) 176 C 177 C Geopotentiel au sol 178 !C 179 ! call histdef(histid, 'phis', 'geopotentiel au sol', '-', 180 ! . iip1, jjp1, thoriid, 1, 1, 1, -99, 181 ! . 32, 'inst(X)', t_ops, t_wrt) 182 !C 183 C Fin 184 C 185 call histend(histid) 186 call histend(histuid) 187 call histend(histvid) 112 CALL histbeg(dynhist_file, iip1, rlong(:,1), jjp1, rlat(1,:), & 113 1, iip1, 1, jjp1, & 114 tau0, zjulian, tstep, thoriid, histid) 115 ! ------------------------------------------------------------- 116 ! Appel a histvert pour la grille verticale 117 ! ------------------------------------------------------------- 118 CALL histvert(histid, 'presnivs', 'Niveaux pression','mb', & 119 llm, presnivs/100., zvertiid,'down') 120 CALL histvert(histvid, 'presnivs', 'Niveaux pression','mb', & 121 llm, presnivs/100., zvertiid,'down') 122 CALL histvert(histuid, 'presnivs', 'Niveaux pression','mb', & 123 llm, presnivs/100., zvertiid,'down') 124 ! 125 ! ------------------------------------------------------------- 126 ! Appels a histdef pour la definition des variables a sauvegarder 127 ! ------------------------------------------------------------- 128 ! 129 ! Vents U 130 ! 131 CALL histdef(histuid, 'u', 'vent u', 'm/s', & 132 iip1, jjp1, uhoriid, llm, 1, llm, zvertiid, & 133 32, 'inst(X)', t_ops, t_wrt) 134 ! 135 ! Vents V 136 ! 137 CALL histdef(histvid, 'v', 'vent v', 'm/s', & 138 iip1, jjm, vhoriid, llm, 1, llm, zvertiid, & 139 32, 'inst(X)', t_ops, t_wrt) 140 141 ! 142 ! Temperature potentielle 143 ! 144 CALL histdef(histid, 'teta', 'temperature potentielle', '-', & 145 iip1, jjp1, thoriid, llm, 1, llm, zvertiid, & 146 32, 'inst(X)', t_ops, t_wrt) 147 ! 148 ! Geopotentiel 149 ! 150 CALL histdef(histid, 'phi', 'geopotentiel', '-', & 151 iip1, jjp1, thoriid, llm, 1, llm, zvertiid, & 152 32, 'inst(X)', t_ops, t_wrt) 153 ! 154 ! Traceurs 155 ! 156 157 ! DO iq=1,nqtot 158 ! CALL histdef(histid, tracers(iq)%name, 159 ! tracers(iq)%longName, '-', 160 ! . iip1, jjp1, thoriid, llm, 1, llm, zvertiid, 161 ! . 32, 'inst(X)', t_ops, t_wrt) 162 ! enddo 163 !C 164 ! Masse 165 ! 166 CALL histdef(histid, 'masse', 'masse', 'kg', & 167 iip1, jjp1, thoriid, llm, 1, llm, zvertiid, & 168 32, 'inst(X)', t_ops, t_wrt) 169 ! 170 ! Pression au sol 171 ! 172 CALL histdef(histid, 'ps', 'pression naturelle au sol', 'Pa', & 173 iip1, jjp1, thoriid, 1, 1, 1, -99, & 174 32, 'inst(X)', t_ops, t_wrt) 175 ! 176 ! Geopotentiel au sol 177 !C 178 ! CALL histdef(histid, 'phis', 'geopotentiel au sol', '-', 179 ! . iip1, jjp1, thoriid, 1, 1, 1, -99, 180 ! . 32, 'inst(X)', t_ops, t_wrt) 181 !C 182 ! Fin 183 ! 184 CALL histend(histid) 185 CALL histend(histuid) 186 CALL histend(histvid) 188 187 #else 189 ! tell the user this routine should be run with ioipsl190 write(lunout,*)"inithist: Warning this routine should not be",191 &" used without ioipsl"188 ! tell the user this routine should be run with ioipsl 189 write(lunout, *)"inithist: Warning this routine should not be", & 190 " used without ioipsl" 192 191 #endif 193 ! of #ifdef CPP_IOIPSL194 195 end 192 ! of #ifdef CPP_IOIPSL 193 return 194 end subroutine inithist
Note: See TracChangeset
for help on using the changeset viewer.