1 | !> \file lect-eurasie_mod.f90 |
---|
2 | !! Module pour la lecture de la topo |
---|
3 | !< |
---|
4 | |
---|
5 | !> \namespace lect_topo_eurasie |
---|
6 | !! Lecture de la topo |
---|
7 | !! \author ... |
---|
8 | !! \date ... |
---|
9 | !! @note Used module |
---|
10 | !! @note - use module3D_phy |
---|
11 | !< |
---|
12 | |
---|
13 | module lect_topo_eurasie |
---|
14 | |
---|
15 | use module3D_phy |
---|
16 | |
---|
17 | character(len=100) :: topo_dep !< Topo de départ |
---|
18 | character(len=100) :: topo_ref !< Topo de référence |
---|
19 | character(len=100) :: filin |
---|
20 | real,dimension(nx,ny) :: xcc , ycc !< coordeonnes en m |
---|
21 | |
---|
22 | contains |
---|
23 | |
---|
24 | subroutine input_topo |
---|
25 | |
---|
26 | namelist/topo/topo_ref,topo_dep |
---|
27 | |
---|
28 | 428 format(A) |
---|
29 | |
---|
30 | rewind(num_param) ! pour revenir au debut du fichier param_list.dat |
---|
31 | read(num_param,topo) |
---|
32 | |
---|
33 | write(num_rep_42,428)'!___________________________________________________________' |
---|
34 | write(num_rep_42,428) '&topo ! module lect_topo_eurasie' |
---|
35 | write(num_rep_42,'(A,A)') 'topo_ref =', topo_ref |
---|
36 | write(num_rep_42,'(A,A)') 'topo_dep =', topo_dep |
---|
37 | write(num_rep_42,*)'/' |
---|
38 | write(num_rep_42,428) '! topo_ref= topo actuelle' |
---|
39 | write(num_rep_42,*) |
---|
40 | |
---|
41 | |
---|
42 | topo_ref=trim(dirnameinp)//trim(topo_ref) |
---|
43 | topo_dep=trim(dirnameinp)//trim(topo_dep) |
---|
44 | |
---|
45 | ! lecture de la topo de référence |
---|
46 | ! ------------------------------- |
---|
47 | ! Cette topo sert a calculer le socle de reference pour l'isostasie |
---|
48 | ! voir init_iso et a avoir une surface de reference pour les temperatures |
---|
49 | |
---|
50 | open (20,file=topo_ref) |
---|
51 | |
---|
52 | do J=1,ny |
---|
53 | do I=1,nx |
---|
54 | read (20,*) S0(I,J),H0(I,J),Bsoc0(I,J) |
---|
55 | |
---|
56 | S0(i,j)=max(S0(i,j),0.) ! pour être au niveau des mers |
---|
57 | |
---|
58 | end do |
---|
59 | end do |
---|
60 | close(20) |
---|
61 | |
---|
62 | |
---|
63 | ! lecture de la topo de depart |
---|
64 | ! --------------------------- |
---|
65 | open (20,file=topo_dep) |
---|
66 | |
---|
67 | do J=1,ny |
---|
68 | do I=1,nx |
---|
69 | read (20,*) S(I,J),H(I,J),BSOC(I,J) |
---|
70 | end do |
---|
71 | end do |
---|
72 | close(20) |
---|
73 | |
---|
74 | |
---|
75 | !--Eurasie 40 --------------------------masque de glace pour enlever le Groenland |
---|
76 | ! si mk0=-1 on ne change pas l'epaisseur, mk0=0 -> sans glace |
---|
77 | |
---|
78 | do j=3,ny-2 |
---|
79 | do i=3,nx-2 |
---|
80 | mk0(i,j)=1 |
---|
81 | if ((i.lt.25).and.(j.gt.35)) mk0(i,j)=-1 |
---|
82 | end do |
---|
83 | end do |
---|
84 | |
---|
85 | |
---|
86 | |
---|
87 | ! lecture des coordonnées geographiques |
---|
88 | |
---|
89 | filin=TRIM(DIRNAMEINP)//'coord-'//geoplace//'.dat' |
---|
90 | |
---|
91 | ! les coordonnees sont calculees en °dec avec GMT, |
---|
92 | ! les longitudes sont comprises entre -180 et +180 (negative a l'Ouest de |
---|
93 | ! Greenwich et positive a l'Est) |
---|
94 | |
---|
95 | open(unit=2004,file=filin,iostat=ios) |
---|
96 | do k=1,nx*ny |
---|
97 | read(2004,*) i,j,xcc(i,j),ycc(i,j),xlong(i,j),ylat(i,j) |
---|
98 | enddo |
---|
99 | close(2004) |
---|
100 | write(42,*) 'fichier grille: ', filin |
---|
101 | |
---|
102 | xmin=xcc(1,1)/1000. |
---|
103 | ymin=ycc(1,1)/1000. |
---|
104 | xmax=xcc(nx,ny)/1000. |
---|
105 | ymax=ycc(nx,ny)/1000. |
---|
106 | |
---|
107 | ! lecture du flux geothermique de Shapiro |
---|
108 | open(88,file=(TRIM(DIRNAMEINP)//'ijphi_'//geoplace//'.dat')) |
---|
109 | |
---|
110 | write(42,*) 'flux geothermique Shapiro :', (TRIM(DIRNAMEINP)//'ijphi_'//geoplace//'.dat') |
---|
111 | |
---|
112 | do k=1,nx*ny |
---|
113 | read(88,*) i,j,ghf(i,j) |
---|
114 | end do |
---|
115 | close(88) |
---|
116 | ! pour passer les flux des mW/m2 au J/m2/an |
---|
117 | ghf(:,:)=-SECYEAR/1000.*ghf(:,:) |
---|
118 | !------------------------------------------------ |
---|
119 | end subroutine input_topo |
---|
120 | |
---|
121 | |
---|
122 | end module lect_topo_eurasie |
---|