source: branches/iLoveclim/SOURCES/Old-sources/sealevel-out.f90 @ 244

Last change on this file since 244 was 244, checked in by aquiquet, 5 years ago

Grisli-iloveclim branch merged to trunk at revision 243

File size: 5.2 KB
Line 
1!> \file sealevel-out.f90
2!! Module pour les sorties des variations du niveau de la mer
3!<
4
5!> SUBROUTINE: sealevel_out
6!! \author Vince
7!! \date 17 janvier 2001
8!! @note Sorties des variations du niveau de la mer : nouveau calcul par rapport au niveau actuel
9!! @note Pour executer cette routine on fait appel aux conditions actuels contenues dans un fichier pl
10!! @note Used modules:
11!! @note    - use module3D_phy
12!! @note    - use param_phy_mod
13!!
14!<
15subroutine sealevel_out
16
17  USE module3D_phy
18  USE param_phy_mod
19  implicit none
20
21  !     declarations
22  real :: seal2
23  real :: VOLF1,VOLF2,VOLG1,VOLG2,DX_DY
24  real :: volsea ! difference entre la calotte au temps t et la calotte du fichier pl (etat actuel comme reference). la difference est exprimee en volume de glace.
25
26  real :: V00,V10,V01,V3,V4,V01bis,V01ter
27  integer :: NGR1,NGR2,N00,N11,N01,N10
28
29  !     parametres
30  DX_DY=DX*DY
31  seal2=0    ! niveau de la mer actuel
32
33  !   l' ouverture et la lecture du fichier pl de l'etat actuel (reference)
34  !   se fait dans inputfile lecture de M_sealev, B_sealev, H_sealev et S_sealev
35  !   'present1+k000.pl'  ! nom du fichier etat actuel
36
37
38
39  seal2=0    ! niveau de la mer actuel
40
41
42
43  !      Mise a 0 des compteurs
44  NGR1=0
45  NGR2=0   
46  VOLF1=0.
47  VOLF2=0.
48  VOLG1=0.
49  VOLG2=0.
50  VOLSEA=0.
51  V00=0.
52  V10=0.
53  V01=0.
54  V3=0.
55  V4=0.
56  V01bis=0.
57  V01ter=0.
58  N11=0
59  N00=0
60  N01=0
61  N10=0
62
63  !     debut de la boucle sur les points de grille 
64  !      do k=1,np     
65  do j=1,ny
66     do i=1,nx
67        !     Diagnostics sur les valeurs au moment t
68        if (MK(i,j).eq.0) then     ! grounded
69           NGR1=NGR1+1
70           VOLG1=VOLG1+H(i,j) 
71
72           !        calcul de la hauteur au dessus de la flottaison
73           if (SEALEVEL-B(i,j).le.0.) then  ! socle au dessus niveau des mers du moment
74              VOLF1=VOLF1+H(i,j) 
75              ! on ajoute l'epaisseur de glace
76           else ! socle en dessous du nivx des mers du moment
77              VOLF1=VOLF1+H(i,j)-ROW/RO*(SEALEVEL-B(i,j))
78              ! on ajoute l'epaisseur au-dessus du nivx de la mer plus
79              ! le surplus de volume occupe par la glace dans l'eau
80           endif
81        endif
82        !     Diagnostics sur le fichier actuel
83        !      read(112,*) S2,H2,B2,M2
84        if (M_sealev(i,j).eq.0) then     ! grounded
85           NGR2 = NGR2 + 1
86           VOLG2 = VOLG2 + H_sealev(i,j) 
87
88           !        calcul de la hauteur au dessus de la flottaison
89           if (SEAL2-B_SEALEV(I,J).le.0.) then  ! socle au dessus niveau des mers du moment
90              VOLF2=VOLF2+H_SEALEV(I,J)
91           else
92              VOLF2=VOLF2+H_SEALEV(I,J)-ROW/RO*(SEAL2-B_SEALEV(I,J))
93           endif
94        endif
95
96        !      Tests croises
97        V4=V4+H(i,j)-H_SEALEV(I,J)
98        if ((MK(i,j).eq.1).and.(M_SEALEV(I,J).eq.1)) then    ! flottant aux deux epoques
99           VOLSEA=VOLSEA
100           N11=N11+1
101           !          write(13,*) i,j,0.
102
103        else if ((MK(i,j).eq.0).and.(M_SEALEV(I,J).eq.0)) then  ! grounded aux deux epoques
104           VOLSEA=VOLSEA+(H(i,j)-H_SEALEV(I,J))
105           V00=V00+H(i,j)-H_SEALEV(I,J)
106           V3=V3+H(i,j)-H_SEALEV(I,J)
107           N00=N00+1
108           !          write(13,*) i,j,H1-H_SEALEV(I,J)
109        else if ((MK(i,j).eq.0).and.(M_SEALEV(I,J).eq.1)) then  ! grounded passe,float present
110           VOLSEA=VOLSEA+H(i,j)-ROW/RO*(SEAL2-B_SEALEV(I,J))   
111           V01=V01+H(i,j)-ROW/RO*(SEAL2-B_SEALEV(I,J))
112           !         write(6,*) H1,H_SEALEV(I,J),B1,B_SEALEV(I,J),H1-ROW/RO*(SEAL2-B_SEALEV(I,J))
113           V01bis=V01bis+H(i,j)
114           V01ter=V01ter+(SEAL2-B_SEALEV(I,J))*ROW/RO
115           V3=V3+H(i,j) 
116           N01=N01+1 
117           !          write(13,*) i,j,H1-ROW/RO*(SEAL2-B_SEALEV(I,J))   
118        else if ((MK(i,j).eq.1).and.(M_SEALEV(I,J).eq.0)) then  ! float passe, grounded present
119           VOLSEA=VOLSEA-(H_SEALEV(I,J)-ROW/RO*(SEAL2-B_SEALEV(I,J)))
120           V10=V10-(H_SEALEV(I,J)-ROW/RO*(SEAL2-B_SEALEV(I,J)))
121           V3=V3-H_SEALEV(I,J)
122           N10=N10+1
123           !           write(13,*) i,j,H_SEALEV(I,J)-ROW/RO*(SEAL2-B_SEALEV(I,J))     
124        endif
125        !      if (MK(i,j).eq.0) then
126        !             write(14,*) i,j,H1-H_SEALEV(I,J)
127        !      else
128        !             write(14,*) i,j,0.
129        !      endif
130
131     end do
132  end do         ! fin de la boucle sur les points de grille
133
134
135
136
137  !     sortie des resultats   
138  !write(num_sealevel,*) 'pas de temps' 
139  !write(num_sealevel,*) 'file1', sealevel
140  !write(num_sealevel,*) NGR1, VOLG1*dx_dy,VOLF1*dx_dy
141  !write(num_sealevel,*)
142
143
144  !write(num_sealevel,*) 'file2', seal2
145  !write(num_sealevel,*) NGR2, VOLG2*dx_dy,VOLF2*dx_dy
146  !write(num_sealevel,*)
147
148  !write(num_sealevel,*) 'differences'
149  !write(num_sealevel,*) (NGR1-NGR2)*dx_dy, (VOLG1-VOLG2)*dx_dy,(VOLF1-VOLF2)*dx_dy
150  !write(num_sealevel,*)  VOLSEA*dx_dy,V00*dx_dy,V01*dx_dy,V10*dx_dy,V3*dx_dy
151  !write(num_sealevel,*)  V4*dx_dy,V01bis*dx_dy,V01ter*dx_dy
152  !write(num_sealevel,*)  N11,N00,N01,N10
153  !write(num_sealevel,*)
154  !write(num_sealevel,*)
155
156
157
158
159  write(num_sealevel,112) time,(NGR1-NGR2)*dx_dy,(VOLG1-VOLG2)*dx_dy, &
160       (VOLF1-VOLF2)*dx_dy,VOLSEA*dx_dy,V01ter*dx_dy
161112 format(1x,f8.0,5(1x,e14.6))
162
163
164end subroutine sealevel_out
Note: See TracBrowser for help on using the repository browser.