Changeset 27
- Timestamp:
- 12/15/15 23:56:34 (8 years ago)
- Location:
- trunk/SOURCES
- Files:
-
- 3 added
- 1 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SOURCES/Ant40_files/lect-anteis_mod.f90
r4 r27 14 14 15 15 use module3D_phy 16 17 character(len=80) :: filin 18 real,dimension(nx,ny) :: xcc , ycc !< coordeonnes en m 19 real, dimension(nx,ny,5) :: bidon !< pour l'appel a courbure 16 use interface_input 17 use io_netcdf_grisli 18 19 implicit none 20 21 character(len=100) :: topo_dep ! Topo de départ 22 character(len=100) :: topo_ref ! Topo de référence 23 character(len=100) :: grid_topo ! fichier grille 24 character(len=100) :: ghf_fich ! fichier grille 25 character(len=100) :: filin 26 character(len=100) :: file_ncdf !< fichier netcdf issue des fichiers .dat 27 28 ! character(len=100) :: file1 29 ! character(len=100) :: file2 30 31 real, dimension(nx,ny,5) :: bidon ! pour l'appel a courbure 32 real :: sealevel0 33 20 34 contains 21 35 22 36 subroutine input_topo 23 37 24 !====================================== La reponse est 42 =========== 38 integer :: ios 39 40 namelist/topo_file/topo_ref,topo_dep,grid_topo,ghf_fich 41 rewind(num_param) ! pour revenir au debut du fichier param_list.dat 42 read(num_param,topo_file) 43 ! formats pour les ecritures dans 42 44 428 format(A) 45 write(num_rep_42,428)'!___________________________________________________________' 46 write(num_rep_42,428) '&topo_file ! input_topo ' 47 write(num_rep_42,'(A,A)') 'topo_ref = ', topo_ref 48 write(num_rep_42,'(A,A)') 'topo_dep = ', topo_dep 49 write(num_rep_42,'(A,A)') 'grid_topo =', grid_topo 50 write(num_rep_42,'(A,A)') 'ghf_fich = ', ghf_fich 51 write(num_rep_42,*)'/' 52 write(num_rep_42,428) '! topo_ref= topo ref isostasie' 53 write(num_rep_42,428) '! topo_dep= topo de depart' 54 write(num_rep_42,428) '! grid_topo : fichier i,j,x,y,lon,lat' 55 write(num_rep_42,428) '! ghf_fich : fichier flux geothermique' 25 56 write(num_rep_42,*) 26 write(num_rep_42,*)' Fichiers en entree' 27 write(num_rep_42,*)'----------------------' 28 !==================================================================== 57 58 topo_ref=trim(dirnameinp)//trim(topo_ref) 59 topo_dep=trim(dirnameinp)//trim(topo_dep) 60 grid_topo=trim(dirnameinp)//trim(grid_topo) 61 ghf_fich=trim(dirnameinp)//trim(ghf_fich) 62 29 63 30 64 ! lecture adaptee aux fichiers intercomparaison EISMINT 31 65 nxx=nx 32 66 nyy=ny 33 ! socle 34 ! filin=TRIM(DIRNAMEINP)//'bedelev-2000-40km.dat' 35 filin='bedelev-2000-40km.dat' 36 call lect_eis(nx,ny,BSOC,filin,DIRNAMEINP) 37 write(num_rep_42,*) 'fichier BSOC (socle) : ', filin 38 Bsoc0(:,:)=Bsoc(:,:) 39 ! surface 40 filin='surface-2000-40km.dat' 41 call lect_eis(nx,ny,S,filin,DIRNAMEINP) 42 write(num_rep_42,*) 'fichier surface : ', filin 43 44 ! epaisseur 45 filin='icethic-2000-40km.dat' 46 call lect_eis(nx,ny,H,filin,DIRNAMEINP) 47 write(num_rep_42,*) 'fichier epaisseur : ', filin 48 H0(:,:)=H(:,:) 49 50 !!$ ! coupure du shelf 51 !!$ filin=TRIM(DIRNAMEINP)//'coupe.ijz' 52 !!$ open(11,file=filin) 53 !!$ ! distcent devient la condition de coupure 54 !!$ do k=1,nx*ny 55 !!$ read(11,*) i,j,distcent(i,j) 67 68 !!$! lecture de la topo actuelle 69 !!$! --------------------------- 70 !!$ open (20,file=TRIM(DIRNAMEINP)//file2,status='old') 71 !!$ 72 !!$ read(20,'(A80)') TITRE 73 !!$ read(20,*) NI,NJ,NXX,NYY,STEP 74 !!$ read(20,*) 75 !!$ do J=1,ny 76 !!$ do I=1,nx 77 !!$ read (20,*) S0(I,J),H0(I,J),BSOC0(I,J) 78 !!$ S0(i,j)=max(S0(i,j),0.) 79 !!$ end do 80 !!$ end do 81 !!$ close(20) 82 !!$ 83 !!$ 84 !!$! lecture de la topo de depart 85 !!$! --------------------------- 86 !!$ open (20,file=TRIM(DIRNAMEINP)//file1,status='old') 87 !!$! open (20,file='../INPUT-DATA/hemin.g50') 88 !!$ read(20,'(A80)') TITRE 89 !!$ read(20,*) NI,NJ,NXX,NYY,STEP 90 !!$ read(20,*) 91 !!$ do J=1,ny 92 !!$ do I=1,nx 93 !!$ read (20,*) S(I,J),H(I,J),BSOC(I,J) 94 !!$ end do 95 !!$ end do 96 !!$ close(20) 97 98 ! lecture de la topo de référence 99 ! ------------------------------- 100 ! Cette topo sert a calculer le socle de reference pour l'isostasie 101 ! voir init_iso et a avoir une surface de reference pour les temperatures 102 ! lecture adaptee aux fichiers ZBL.dat ou netcdf ou grd 103 call lect_input(1,'Bsoc',1,Bsoc0,topo_ref,file_ncdf) ! socle 104 call lect_input(1,'S',1,S0,topo_ref,file_ncdf) ! surface 105 call lect_input(1,'H',1,H0,topo_ref,file_ncdf) ! epaisseur 106 !cdc correction point pole sud : 107 ! S0(71,71)=(S0(71,70)+S0(71,72)+S0(70,71)+S0(72,71))/4. 108 ! Bsoc0(71,71)=(Bsoc0(71,70)+Bsoc0(71,72)+Bsoc0(70,71)+Bsoc0(72,71))/4. 109 110 111 ! where (S0(:,:).GT.0) 112 ! H0(:,:)=S0(:,:)-BSOC0(:,:) 113 ! elsewhere 114 ! H0(:,:)=1. 115 ! endwhere 116 117 sealevel0=0. ! voir a passer dans le fichier parametre 118 S0(:,:)=max(S0(:,:),sealevel0) ! pour etre au niveau des mers : ATTENTION si SEALEV <0 119 mk0(:,:) = 1 ! mk0=0 pour les zones interdites 120 121 ! lecture de la topo de depart 122 ! --------------------------- 123 ! lecture adaptee aux fichiers ZBL.dat ou netcdf ou grd 124 call lect_input(1,'Bsoc',1,Bsoc,topo_dep,file_ncdf) ! socle 125 call lect_input(1,'S',1,S,topo_dep,file_ncdf) ! surface 126 call lect_input(1,'H',1,H,topo_dep,file_ncdf) ! epaisseur 127 ! S(71,71)=(S(71,70)+S(71,72)+S(70,71)+S(72,71))/4. 128 ! Bsoc(71,71)=(Bsoc(71,70)+Bsoc(71,72)+Bsoc(70,71)+Bsoc(72,71))/4. 129 ! where (S(:,:).GT.0) 130 ! H(:,:)=S(:,:)-BSOC(:,:) 131 ! elsewhere 132 ! H(:,:)=1. 133 ! endwhere 134 S(:,:)=max(S(:,:),0.) ! pour etre au niveau des mers : ATTENTION si SEALEV <0 135 H(:,:)=max(H(:,:),1.) ! pour avoir au moins 1 m 136 137 138 139 !!$ 140 !!$ ! socle 141 !!$ filin='bedelev-2000-40km.dat' 142 !!$ call lect_eis(nx,ny,BSOC,filin,DIRNAMEINP) 143 !!$ write(num_rep_42,*) 'fichier BSOC (socle) : ', filin 144 !!$ Bsoc0(:,:)=Bsoc(:,:) 145 !!$ ! surface 146 !!$ filin='surface-2000-40km.dat' 147 !!$ call lect_eis(nx,ny,S,filin,DIRNAMEINP) 148 !!$ write(num_rep_42,*) 'fichier surface : ', filin 149 !!$ 150 !!$ ! epaisseur 151 !!$ filin='icethic-2000-40km.dat' 152 !!$ call lect_eis(nx,ny,H,filin,DIRNAMEINP) 153 !!$ write(num_rep_42,*) 'fichier epaisseur : ', filin 154 !!$ H0(:,:)=H(:,:) 155 !!$ 156 !!$ 157 !!$ ! masque 158 !!$ filin='maskHUY40km.dat' 159 !!$ call lect_ieis(nx,ny,MK0,filin,DIRNAMEINP) 160 !!$ write(num_rep_42,*) 'fichier masque : ', filin 161 !!$ 162 !!$ ! enlever les epaisseurs fictives de Philippe 163 !!$ do I=1,NX 164 !!$ do J=1,NY 165 !!$ ! attention les valeurs de masque de Philippe sont differentes 166 !!$ if ((MK0(I,J).gt.1).and.(H(i,j).le.218.00)) then ! mer libre 167 !!$ H(i,j)=1. 168 !!$ S(I,J)=H(i,j)-(RO/ROW)*H(i,j) 169 !!$ endif 170 !!$ end do 56 171 !!$ end do 57 !!$ close(11) 58 !!$ write(num_rep_42,*) 'coupure du shelf (pas activé ?) : ', filin 59 60 ! masque 61 filin='maskHUY40km.dat' 62 call lect_ieis(nx,ny,MK0,filin,DIRNAMEINP) 63 write(num_rep_42,*) 'fichier masque : ', filin 64 65 !!$ 66 !!$ !------------------------------------------------------- juillet 2007 ---- 67 !!$ ! corrections du socle pour favoriser les fleuves . A mettre aussi apres lect cptr 68 !!$ 69 !!$ filin=DIRNAMEINP//'corrections-bsoc.dat' 70 !!$ 71 !!$ write(num_rep_42,*) 'correction du socle dans',filin 72 !!$ 73 !!$ open(777,file=filin) 74 !!$ read(777,*,end=778) 75 !!$ read(777,*,end=778) 76 !!$ do k=1,nx*ny 77 !!$ read(777,*,end=778) i,j,bsoc(i,j) 78 !!$ H(i,j)=S(i,j)-Bsoc(i,j) 79 !!$ B(i,j)=S(i,j)-H(i,j) 80 !!$ write(166,*) i,j,bsoc(i,j) 81 !!$ end do 82 !!$778 continue 83 !!$ write(num_rep_42,*) k,'points corriges' 84 !!$ close(777) 85 !------------------------------------------------------------------------ 86 87 88 ! enlever les epaisseurs fictives de Philippe 89 do I=1,NX 90 do J=1,NY 91 ! attention les valeurs de masque de Philippe sont differentes 92 if ((MK0(I,J).gt.1).and.(H(i,j).le.218.00)) then ! mer libre 93 H(i,j)=1. 94 S(I,J)=H(i,j)-(RO/ROW)*H(i,j) 95 endif 96 end do 97 end do 98 S0(:,:)=S(:,:) 99 100 172 173 174 ! S0(:,:)=S(:,:) 101 175 102 176 ! pour l'Antarctique masque mko vrai partout (version 2006) … … 115 189 116 190 117 ! calcul des courbures du socle 118 119 call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), & 120 bidon(:,:,4),socle_cry,bidon(:,:,5)) 121 122 socle_cry(:,:)=socle_cry(:,:)*dx*dx 191 ! calcul des courbures du socle 192 193 call courbure(nx,ny,dx,Bsoc,bidon(:,:,1),bidon(:,:,2),bidon(:,:,3), & 194 bidon(:,:,4),socle_cry,bidon(:,:,5)) 195 socle_cry(:,:)=socle_cry(:,:)*dx*dx 123 196 124 197 ! lecture des coordonnées geographiques 125 126 filin=TRIM(DIRNAMEINP)//'coord-Ant-40km.dat' 198 ! filin=TRIM(DIRNAMEINP)//'coord-Ant-40km.dat' 127 199 128 200 ! les coordonnees sont calculees en °dec avec GMT, 129 201 ! les longitudes sont comprises entre -180 et +180 (negative a l'Ouest de 130 202 ! Greenwich et positive a l'Est) 131 open(unit=2004,file= filin,iostat=ios)203 open(unit=2004,file=grid_topo,iostat=ios) 132 204 do k=1,nx*ny 133 read(2004,*) i,j, XCC(i,j),YCC(i,j),XLONG(i,j),YLAT(i,j)205 read(2004,*) i,j,xcc(i,j),ycc(i,j),Xlong(i,j),Ylat(i,j) 134 206 enddo 135 207 close(2004) 136 write(num_rep_42,*) 'fichier grille: ', filin137 208 138 209 xmin=xcc(1,1)/1000. … … 141 212 ymax=ycc(nx,ny)/1000. 142 213 143 ! lecture du fichier de reference pour le calcul du niveau des mers : etat actuel144 open(88,file=TRIM(DIRNAMEINP)//'grzone56-k000.pl')145 146 read(88,*)147 read(88,*)148 read(88,*)149 do j=1,ny150 do i=1,nx151 read(88,*) S_sealev(i,j),H_sealev(i,j),B_sealev(i,j),M_sealev(i,j)152 enddo153 enddo154 close(88)155 156 write(num_rep_42,*) 'fichier reference pour le niveau des mers : ', &157 TRIM(DIRNAMEINP)//'grzone56-k000.pl'214 !!$ ! lecture du fichier de reference pour le calcul du niveau des mers : etat actuel 215 !!$ open(88,file=TRIM(DIRNAMEINP)//'grzone56-k000.pl') 216 !!$ 217 !!$ read(88,*) 218 !!$ read(88,*) 219 !!$ read(88,*) 220 !!$ do j=1,ny 221 !!$ do i=1,nx 222 !!$ read(88,*) S_sealev(i,j),H_sealev(i,j),B_sealev(i,j),M_sealev(i,j) 223 !!$ enddo 224 !!$ enddo 225 !!$ close(88) 226 !!$ 227 !!$ write(num_rep_42,*) 'fichier reference pour le niveau des mers : ', & 228 !!$ TRIM(DIRNAMEINP)//'grzone56-k000.pl' 158 229 159 230 ! lecture du flux geothermique de Shapiro 160 open(88,file= TRIM(DIRNAMEINP)//'ijphi-40km-ant.dat')231 open(88,file=ghf_fich) 161 232 162 233 write(num_rep_42,*) 'flux geothermique Shapiro : ', TRIM(DIRNAMEINP)//'ijphi-40km-ant.dat' … … 165 236 read(88,*) i,j,ghf(i,j) 166 237 end do 238 close(88) 167 239 168 240 ! pour passer les flux des mW/m2 au J/m2/an 169 241 ghf(:,:)=-SECYEAR/1000.*ghf(:,:) 170 242 171 243 !------------------------------------------------ 244 ! mko vrai partout (version 2006) 245 MK0(:,:)=1 246 247 !------------------------------------------------ 172 248 173 249 -
trunk/SOURCES/Ant40_files/massb-ant_perturb_Tparam.f90
r4 r27 25 25 26 26 27 use module3D_phy 28 use climat_perturb_mod27 use module3D_phy,only:nx,ny,tann,tjuly,ta0,precip,acc,s,s0,tafor,retroac,rappact 28 !use climat_perturb_mod 29 29 implicit none 30 30 … … 60 60 61 61 62 debug_3D(:,:,29)=Tann(:,:)-Ta0(:,:)63 debug_3D(:,:,30)=Acc(:,:)-precip(:,:)62 !debug_3D(:,:,29)=Tann(:,:)-Ta0(:,:) 63 !debug_3D(:,:,30)=Acc(:,:)-precip(:,:) 64 64 !debug_3D(:,:,31)=Acc(:,:)-bmelt(:,:) 65 65 -
trunk/SOURCES/Ant40_files/module_choix-antar40-0.4.f90
r25 r27 40 40 41 41 !--------------Lecture climat ref ------------------ 42 use lect_clim_act_anteis 43 ! use lect_clim_act_nord40 ! pour l'hemisphere nord et l'eurasie44 ! use climat_heino 42 ! Le climat de ref si necessaire est maintenant lu par le module de climat directement 43 !use lect_clim_act_anteis 44 45 45 46 46 !--------------Lecture climat forcage--------------- 47 !use climat_forcage_mois_mod ! forcage mensuel GCM 1 Snapshot Fev 2015 48 use climat_perturb_mod ! climat perturbe a reverifier Dec 2015 47 49 48 use climat_perturb_mod49 50 !use climat_forcage_mod 50 51 !use climat_synthes_mod … … 52 53 !use climat_regions_delta 53 54 55 use ablation_mod ! calcul de l'ablation (PDD ou autre methode) 56 !use no_ablation ! pas de calcul de l'ablation => lecture fichier SMB (necessaire avec climat_Grice2sea_years_mod) 57 54 58 ! pas de lacs proglaciaires 55 59 use no_lakes 60 61 ! suivi des traceurs ou pas ? 62 !use tracer_mod ! probablement pas compatible avec Hemin-40 actuellement 63 use notracer_mod 56 64 57 65 !--------------Choix isostasie---------------------- … … 74 82 75 83 !use dragging_vitbil 76 ! use dragging_hwatstream 77 84 !use dragging_hwatstream 78 85 !use dragging_hwat_cont 79 86 80 use dragging_hwat_contmaj 87 use dragging_hwat_contmaj ! frottement basal catherine grisliv8 ice stream peu actifs 88 ! use dragging_hwat_sedim version sediment HN 81 89 82 ! module concernant l'eq. elliptique (pour les streams et shelves) 90 !------------ spinup ----------------------------------- 91 use no_spinup ! spinup=0 92 !use spinup_vitbil ! plusieurs variantes de spinup : inclue le dragging 93 ! enlever le use dragging dans ce cas là 83 94 84 95 ! use eq_elliptique_mod ! ancienne version (remplimat-5) … … 95 106 !--------------Fusion basale------------------------ 96 107 use bmelt_ant_regions ! pour l'Antarctique avec régions 97 ! USE BMELT_NOR_REGIONS! pour le nord avec régions98 ! use BMELT_NOR_DEPTH! pour le nord avec profondeur d'eau108 !use bmelt_nor_regions ! pour le nord avec régions 109 !use bmelt_nor_depth ! pour le nord avec profondeur d'eau 99 110 100 111 -
trunk/SOURCES/Ant40_files/paradim-ant40_mod.f90
r4 r27 20 20 ! character 21 21 character(len=7), parameter :: geoplace='anteis1' 22 character(len= 17), parameter :: dirnameinp='../INPUT/ANTEIS1/' !< input directory23 character(len= 17), parameter :: dirforcage='../INPUT/Forcage/' !< input directory22 character(len=20), parameter :: dirnameinp='../../INPUT/ANTEIS1/' !< input directory 23 character(len=20), parameter :: dirforcage='../../INPUT/Forcage/' !< input directory 24 24 25 25 ! dimensionnement grilles -
trunk/SOURCES/Greeneem_files/lect-greeneem_mod.f90
r15 r27 6 6 use interface_input 7 7 use io_netcdf_grisli 8 9 implicit none 8 10 9 11 character(len=100) :: topo_dep ! Topo de départ … … 21 23 22 24 integer :: n1,n2,ndx 25 real :: sealevel0 23 26 24 27 contains … … 42 45 write(num_rep_42,*)'/' 43 46 write(num_rep_42,428) '! topo_ref= topo actuelle' 44 write(num_rep_42,428) '! ghf0 flux geothermique en mW/m2'47 write(num_rep_42,428) '! topo_dep= topo de depart' 45 48 write(num_rep_42,428) '! grid_topo : fichier i,j,x,y,lon,lat' 46 49 write(num_rep_42,428) '! ghf_fich : fichier flux geothermique' -
trunk/SOURCES/Hemin40_files/lect-hemin40_mod.f90
r9 r27 3 3 use module3D_phy 4 4 5 character(len=50) :: FILE1 ! CHARACTER(LEN=30) :: FILE1, FILE2, FILE35 character(len=50) :: FILE1 6 6 character(len=50) :: FILE2 7 7 character(len=80) :: filin -
trunk/SOURCES/Makefile.grisli.inc
r25 r27 43 43 mod_clim_tof = climat_forcage_mois_mod.o climat-forcage-insolation_mod_oneway.o \ 44 44 climat-forcage-insolation_mod.o climat_GrIce2sea_years_mod.o \ 45 climat-perturb_mod-0.4.o \ 45 46 ablation_mod.o no_ablation_mod.o 46 47 … … 210 211 track_greeneem_mod.o 211 212 213 Liste_Ant40 = output_anta40_mod-0.4.o \ 214 lect-anteis_mod.o \ 215 bmelt-ant-regions_mod.o \ 216 fake-routines-ant_mod.o module_choix-antar40-0.4.o \ 217 track_ant40_mod.o 218 212 219 Liste_eura40 = output_eurasie40_mod-0.1.o \ 213 220 lect-eurasie_mod.o lakes-prescribed_mod-0.1.o \ … … 268 275 269 276 Dim_hemin15 = paradim-hemin15_mod.o geography-hemin15_mod.o 277 278 Dim_Ant40 = paradim-ant40_mod.o geography-ant40_mod.o 270 279 271 280 Dim_eura40 = paradim-euras40_mod.o geography-euras40_mod.o … … 603 612 $(F_NETCDF) climat-forcage-insolation_mod.f90 604 613 614 climat-perturb_mod-0.4.o : climat-perturb_mod-0.4.f90 615 $(F_NETCDF) climat-perturb_mod-0.4.f90 616 605 617 ablation_mod.o : ablation_mod.f90 606 618 $(FT) ablation_mod.f90 … … 647 659 $(FT) accum_month_lapsecouche.f90 648 660 649 climat-perturb_mod-0.4.o : climat-perturb_mod-0.4.f90650 $(FT) climat-perturb_mod-0.4.f90651 652 661 climat-perturb-mois_mod.o : climat-perturb-mois_mod.f90 653 662 $(FT) climat-perturb-mois_mod.f90 … … 815 824 output_anta_mod-0.4.o : Antarctique_general_files/output_anta_mod-0.4.f90 816 825 $(FT) Antarctique_general_files/output_anta_mod-0.4.f90 826 827 output_anta40_mod-0.4.o : Ant40_files/output_anta40_mod-0.4.f90 828 $(FT) Ant40_files/output_anta40_mod-0.4.f90 817 829 818 830 output_global_mod.o :output_global_mod.f90 … … 1680 1692 $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) 1681 1693 1694 Ant-40 : $(Dim_Ant40) $(mod_dim_communs) \ 1695 $(toy_recul) \ 1696 $(mod_communs) \ 1697 $(mod_clim_tof) \ 1698 $(mod_no_tracers) \ 1699 $(mod_ell) $(Liste_Ant40) \ 1700 $(diagnoshelf) \ 1701 $(Liste_Netcdf) \ 1702 $(routines_communes) steps_time_loop.o \ 1703 $(routine_elliptiques) \ 1704 $(Liste_BLAS) 1705 1706 $(LK) -o ../bin/Ant-40 \ 1707 $(Dim_Ant40) $(mod_dim_communs) \ 1708 $(toy_recul) \ 1709 $(mod_communs) \ 1710 $(mod_clim_tof) \ 1711 $(mod_no_tracers) \ 1712 $(mod_ell) $(Liste_Ant40) \ 1713 $(diagnoshelf) \ 1714 $(Liste_Netcdf) \ 1715 $(routines_communes) steps_time_loop.o \ 1716 $(routine_elliptiques) $(NCDF_LIB) $(MKL_LIB) $(Liste_BLAS) 1717 1682 1718 1683 1719 -
trunk/SOURCES/climat-forcage_mod-0.4.f90
r4 r27 81 81 82 82 ! atmospheric temperature gradient 83 tempgrad=0.00 883 tempgrad=0.0065 ! 0.0085 84 84 tempgrjul=0.0065 85 85 … … 109 109 110 110 ! atmospheric temperature gradient 111 tempgrad=0.0085 112 tempgrjul=0.0085 113 114 ! fichiers snapshots pour forcage 115 !---------------------------------- 116 filtr(1)='../input-data/Snapshots-GCM/forcage-ant-20k.g40' 117 filtr(2)='../input-data/Snapshots-GCM/forcage-ant-00k.g40' 118 print*,'lecture de ',filin,filtr 111 tempgrad=0.0065 ! 0.0085 112 tempgrjul=0.0065 113 114 !cdc forcage modele IPSL LSCE Cycle 115 ! filtr(1)=TRIM(DIRNAMEINP)//'Snapshots-GCM/forcage_IPSL-21k.g40' 116 ! filtr(2)=TRIM(DIRNAMEINP)//'Snapshots-GCM/no_forcage_hn40-0k.g40' !climat act a 0ka 117 filtr(1)=TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file1) 118 filtr(2)=TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file2) 119 print*,'fichier de forcage 1',TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file1) 120 print*,'fichier de forcage 2',TRIM(DIRNAMEINP)//'Snapshots-GCM/'//TRIM(forcage_file2) 121 119 122 ! fichiers donnant l'evolution temporelle 120 123 ! ---------------------------- ------------ 121 filin=trim(dirforcage)//' forcmodif4cycles.dat' !forcage vostok en rapport : a creer124 filin=trim(dirforcage)//'signal-cycle-hemin.dat' !forcage vostok en rapport : a creer 122 125 123 126 endif !fin du test sur geoplace -
trunk/SOURCES/climat-perturb_mod-0.4.f90
r4 r27 5 5 !> \namespace climat_perturb_mod 6 6 !!Module pour les variations temporelles des variables climatiques 7 !! \author ...8 !! \date ...7 !! \author C. Dumas 8 !! \date 12/2015 9 9 !! @note Used modules: 10 10 !! @note - use module3D_phy … … 13 13 14 14 15 use module3d_phy 15 use module3d_phy,only:nx,ny,S,S0,Tann,Tjuly,precip,acc,Ylat,num_forc,num_param,num_rep_42,dirforcage,dirnameinp,tafor,time,sealevel,coefbmshelf 16 16 17 implicit none 17 18 … … 20 21 real,dimension(:),allocatable :: tpert !< temperature for climate forcing 21 22 real,dimension(:),allocatable :: spert !< sea surface perturbation 23 24 real,dimension(nx,ny) :: ta0 !< initial air temperature at sea level annual 22 25 23 26 real :: coefT !< pour modifier l'amplitude de la perturb. T … … 43 46 character(len=8) :: control !label to check clim. forc. file (filin) is usable 44 47 character(len=80):: filin 45 48 integer :: err !< pour l'allocation des tableaux 49 integer :: i 46 50 47 51 ! Lecture du forcage … … 106 110 subroutine init_forclim 107 111 112 113 character(len=80):: filin 114 integer :: i,j 115 integer :: ivo,jvo 108 116 109 117 namelist/clim_pert/coefT,rappact,retroac,rapbmshelf,mincoefbmelt,maxcoefbmelt,filforc … … 127 135 write(num_rep_42,*)'/' 128 136 write(num_rep_42,*) 137 138 139 140 !!!!!!!! ATTENTION AJOUTE POUR TEST MAIS A REMETTRE AU PROPRE PLUS TARD C. DUMAS !!!!!!!!!! 141 !!!!!!!! ancien input_climat_ref de lect_clim_act_anteis 142 ! accumulation de Philippe 143 filin='accumHUY40km.dat' 144 call lect_eis(nx,ny,precip,filin,DIRNAMEINP) 145 !====================================== La reponse est 42 =========== 146 write(num_rep_42,*) 'fichier accum : ', filin 147 148 ! cas particulier de Vostok 149 ivo=101 150 jvo=62 151 do j=jvo-1,jvo+1 152 do i=ivo-1,ivo+1 153 precip(i,j)=0.02 ! valeur plus faible a Vostok. 154 end do 155 end do 156 acc(:,:)=precip(:,:) 157 158 ! temperature en surface : 159 ! parametrisation de Fortuin pour la temperature annuelle. 160 do j=1,ny 161 do i=1,nx 162 163 if (s0(i,j).le.200.) then ! shelfs 164 tann(i,j)=49.642-0.943*abs(ylat(i,j)) 165 else if ((s0(i,j).gt.200.).and.(s0(i,j).lt.1500.)) then ! pente 166 tann(i,j)=36.689-0.005102*s0(i,j)-0.725*abs(ylat(i,j)) 167 else if (s0(i,j).ge.1500.) then ! plateau 168 tann(i,j)=7.405-0.014285*s0(i,j)-0.180*abs(ylat(i,j)) 169 endif 170 171 ta0(i,j)=tann(i,j) 172 ! pour la temperature d'ete, idem parametrisation huybrechts 173 tjuly(i,j)=tann(i,j)-17.65+0.00222*s0(i,j)& 174 +0.40802*abs(ylat(i,j)) 175 end do 176 end do 177 !!!!!!!! FIN MODIF TEMPORAIRE !!!!!!!!!! 178 129 179 130 180 return … … 145 195 ! coefbmelt : forcage fusion basale ice shelves 146 196 147 use module3d_phy197 ! use module3d_phy 148 198 implicit none 199 integer :: i,j,ift 149 200 150 201 ! time en dehors des limites du fichier forcage … … 192 243 coefbmshelf=min(coefbmshelf,maxcoefbmelt) 193 244 194 ! call massb_anteis_perturb()245 call massb_perturb_Tparam 195 246 ! massb_perturb_Tparam remplace desormais massb_anteis_perturb 196 247 ! le code est le meme pour l'Antarctique (simplement passe en format libre) … … 198 249 199 250 200 call massb_perturb_Tparam201 202 203 204 205 206 251 end subroutine forclim 207 252 253 subroutine massb_perturb_Tparam ! calcule le mass balance en mode perturbation 254 ! avec la temperature parametree 255 ! version pour l'antarctique 256 ! simple copie nettoyee de massb_anteis_perturb 257 implicit none 258 259 integer :: i,j 260 261 ! surface temperature et accumulation 262 263 do j=1,ny 264 do i=1,nx 265 266 if(retroac.eq.1) then 267 268 tann(i,j)=ta0(i,j)-0.00914*(s(i,j)-s0(i,j))+tafor 269 tjuly(i,j)=tann(i,j)-17.65+0.00222*s(i,j) & 270 +0.40802*abs(ylat(i,j)) 271 272 acc(i,j)=precip(i,j)*exp(rappact*(tann(i,j)-ta0(i,j))) 273 274 else if(retroac.eq.0) then 275 276 tann(i,j)=ta0(i,j) 277 tjuly(i,j)=tann(i,j) 278 acc(i,j)=precip(i,j)*exp(rappact*(tann(i,j)-ta0(i,j))) 279 endif 280 end do 281 end do 282 283 end subroutine massb_perturb_Tparam 284 285 208 286 end module climat_perturb_mod -
trunk/SOURCES/climat_forcage_mois_mod.f90
r22 r27 99 99 ! Fichier ERA' en mm/jour 100 100 ! FIchier NCEP2 en mm/s 101 do mo=1,nbmois102 if (mo.eq.1.or.mo.eq.3.or.mo.eq.5.or.mo.eq.7.or.mo.eq.8.or.mo.eq.10.or.mo.eq.12) then103 ! Pm(:,:,mo)= Pm(:,:,mo)*31. ! ERA int104 Pm(:,:,mo)= Pm(:,:,mo)*86400.*31./1000. ! NCEP2105 elseif (mo.eq.4.or.mo.eq.6.or.mo.eq.9.or.mo.eq.11) then106 ! Pm(:,:,mo)= Pm(:,:,mo)*30. ! ERA int107 Pm(:,:,mo)= Pm(:,:,mo)*86400.*30./1000. ! NCEP2108 elseif (mo.eq.2) then109 ! Pm(:,:,mo)= Pm(:,:,mo)*28.25 ! ERA int110 Pm(:,:,mo)= Pm(:,:,mo)*86400.*28.25/1000. ! NCEP2111 else112 print*,'ERREUR CONVERSION Precip input_clim climat_forcage_mois_mod'113 endif114 enddo101 !!$ do mo=1,nbmois 102 !!$ if (mo.eq.1.or.mo.eq.3.or.mo.eq.5.or.mo.eq.7.or.mo.eq.8.or.mo.eq.10.or.mo.eq.12) then 103 !!$! Pm(:,:,mo)= Pm(:,:,mo)*31. ! ERA int 104 !!$ Pm(:,:,mo)= Pm(:,:,mo)*86400.*31./1000. ! NCEP2 105 !!$ elseif (mo.eq.4.or.mo.eq.6.or.mo.eq.9.or.mo.eq.11) then 106 !!$! Pm(:,:,mo)= Pm(:,:,mo)*30. ! ERA int 107 !!$ Pm(:,:,mo)= Pm(:,:,mo)*86400.*30./1000. ! NCEP2 108 !!$ elseif (mo.eq.2) then 109 !!$! Pm(:,:,mo)= Pm(:,:,mo)*28.25 ! ERA int 110 !!$ Pm(:,:,mo)= Pm(:,:,mo)*86400.*28.25/1000. ! NCEP2 111 !!$ else 112 !!$ print*,'ERREUR CONVERSION Precip input_clim climat_forcage_mois_mod' 113 !!$ endif 114 !!$ enddo 115 115 116 116 -
trunk/SOURCES/lect-eis.F
r4 r27 18 18 19 19 implicit none 20 character(len= 17) :: DIRNAMEINP20 character(len=20) :: DIRNAMEINP 21 21 integer nx,ny,i,j,kdum 22 22 real data(nx,ny) … … 27 27 28 28 filin = TRIM(DIRNAMEINP)//TRIM(filin) 29 30 29 31 30 open(num_coupe,file=filin) … … 45 44 46 45 implicit none 47 character(len= 17) :: DIRNAMEINP46 character(len=20) :: DIRNAMEINP 48 47 integer nx,ny,i,j,kdum 49 48 integer data(nx,ny)
Note: See TracChangeset
for help on using the changeset viewer.