The TELEMAC-MASCARET system  trunk
condice.f
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE condice
3 ! ******************
4 !
5  &( npoin,h,record,at,listin )
6 !
7 !***********************************************************************
8 ! KHIONE V7P3
9 !***********************************************************************
10 !
11 !brief INITIALISES THE PHYSICAL PARAMETERS FOR ICE.
12 !
13 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 !| AT |<->| TIME OF THE DATASET
15 !| H |<->| WATER DEPTH
16 !| LISTIN |-->| IF YES, INFORMATIONS PRINTED ON LISTING
17 !| NPOIN |-->| NUMBER OF POINT IN THE GEOMETRY MESH
18 !| RECORD |-->| TIME STEP OF THE DATASET
19 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 !
21  USE bief
23  USE freezeup_khione, ONLY : melting_point
24 !
26  IMPLICIT NONE
27 !
28 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29 !
30  LOGICAL , INTENT(IN) :: LISTIN
31  INTEGER , INTENT(IN) :: NPOIN
32  INTEGER , INTENT(INOUT) :: RECORD
33  DOUBLE PRECISION, INTENT(INOUT) :: AT
34  TYPE(bief_obj) , INTENT(INOUT) :: H
35 !
36 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
37 !
38  INTEGER TROUVE(maxvar), I
39  trouve = 0
40 !
41 !-----------------------------------------------------------------------
42 !
43 ! ATMOSPHERIC HEAT FLUXES
44 !
45 ! PHCL: SOLAR RAD (FLUX) REACHING SURFACE, UNDER CLEAR SKY
46  CALL os('X=C ', x=phcl, c=0.d0 )
47 ! PHRI: SOLAR RAD (FLUX) REACHING SURFACE, UNDER CLOUDY SKY
48  CALL os('X=C ', x=phri, c=0.d0 )
49 ! PHPS: NET SOLAR RAD (FLUX) AFTER REFLECTION
50  CALL os('X=C ', x=phps, c=0.d0 )
51 ! PHIB: EFFECTIVE BACK RADIATION (OPEN WATER OR ICE)
52  CALL os('X=C ', x=phib, c=0.d0 )
53 ! PHIE: EVAPORATIVE HEAT TRANSFER
54  CALL os('X=C ', x=phie, c=0.d0 )
55 ! PHIH: CONVECTIVE HEAT TRANSFER
56  CALL os('X=C ', x=phih, c=0.d0 )
57 ! PHIP: HEAT TRANSFER DUE TO PRECIPITATION
58  CALL os('X=C ', x=phip, c=0.d0 )
59 ! PHIW: HEAT TRANSFER BETWEEN WATER AND ICE
60  CALL os('X=C ', x=phiw, c=0.d0 )
61 ! SUMPH: NET SUM OF ALL THERMAL FLUXES (WATER SURFACE)
62  CALL os('X=C ', x=sumph, c=0.d0 )
63 ! SUMPH: NET SUM OF ALL THERMAL FLUXES (ICE COVER)
64  CALL os('X=C ', x=sumph_ice, c=0.d0 )
65 !
66 !-----------------------------------------------------------------------
67 !
68 ! FRAZIL ICE
69 !
70 ! FREEZING POINT OF WATER ( 0.oC BY DEFAULT )
71  CALL os('X=C ', x=tmelt, c=cst_tmelt )
72 ! FRAZIL ICE SEEDING RATE AT FREE SURFACE
73  CALL os('X=C ', x=seed, c=seedr )
74 ! MEAN TURBULENT KINETIC ENERGY FOR FRAZIL THERMAL GROWTH
75  CALL os('X=C ', x=kgm, c=0.d0 )
76 ! MEAN TURBULENT DISSIPATION RATE FOR FRAZIL THERMAL GROWTH
77  CALL os('X=C ', x=epsgm, c=0.d0 )
78 ! TURBULENT INTENSITY FOR FRAZIL THERMAL GROWTH
79  CALL os('X=C ', x=alpgm, c=0.d0 )
80 ! TURBULENT VISCOSITY FOR FRAZIL THERMAL GROWTH
81  CALL os('X=C ', x=nutgm, c=0.d0 )
82  IF(thermal_budget) THEN
83 ! TOTAL NUMBER OF PARTICLE
84  CALL os('X=C ', x=ntot, c=0.d0 )
85 ! TOTAL CONCENTRATION OF FRAZIL
86  CALL os('X=C ', x=ctot, c=0.d0 )
87  ENDIF
88 !
89 !-----------------------------------------------------------------------
90 !
91 ! ICE COVER
92 !
93 ! PROBABILITY OF FRAZIL DEPOSITION - OPEN WATER
94  CALL os('X=C ', x=theta0, c=0.d0 )
95 ! PROBABILITY OF FRAZIL DEPOSITION - ICE COVER
96  CALL os('X=C ', x=theta1, c=0.d0 )
97 ! RATE OF REENTRAINMENT OF SURFACE PER UNIT AREA
98  CALL os('X=C ', x=beta1, c=0.d0 )
99 ! SETTLING VELOCITY OF FRAZIL ICE IN THE TURBULENT FLOW
100  CALL os('X=C ', x=vbb, c=0.d0 )
101 !
102 ! MORE ICE THAN WATER AT SURFACE IF ANFEM(I) > 0.5
103  CALL os('X=C ', x=anfem, c=0.d0 )
104 ! TOTAL ICE THICKNESS
105  CALL os('X=C ', x=thifem, c=0.d0 )
106 ! SOLID ICE THICKNESS
107  CALL os('X=C ', x=thifems, c=0.d0 )
108 ! FRAZIL ICE THICKNESS
109  CALL os('X=C ', x=thifemf, c=0.d0 )
110 ! UNDERCOVER ICE THICKNESS
111  CALL os('X=C ', x=hun, c=0.d0 )
112 !
113  CALL os('X=C ', x=icestr, c=fice )
114 !
115 ! VERTICAL TURBULENT INTENSITY
116  CALL os('X=C ', x=vz, c=0.d0 )
117 !
118 !-----------------------------------------------------------------------
119 !
120 ! PREVIOUS ICE COVER COMPUTATION FILE
121 !
122  IF( ice_files(icecov)%NAME.NE.' ' ) THEN
124  & varsor,npoin,record,at,textpr,trouve,
125  & alire,listin,record.EQ.0,maxvar)
126  ENDIF
127 !
128 !-----------------------------------------------------------------------
129 !
130 ! INITIALISE ICE CHARACTERISATION (PRIME INTEGER)
131  IF( trouve(21).EQ.1 ) THEN
132  DO i = 1,npoin
133  icetype%I(i) = int( icetype%R(i)+1.d-3 )
134  ENDDO
135  ELSE
136  icetype%I = 1
137  ENDIF
138 !
139 !-----------------------------------------------------------------------
140 !
141 ! ADJUST INITIAL WATER DEPTH AS A RESULT OF ICE COVER
142 !
143  CALL os('X=X+CY ', x=h, y=thifems, c=-rho_ice/ro0 )
144  CALL os('X=X+CY ', x=h, y=thifemf, c=-rho_ice/ro0 )
145 !
146 !-----------------------------------------------------------------------
147 !
148  RETURN
149  END SUBROUTINE
type(bief_obj), target epsgm
type(bief_obj), target sumph_ice
type(bief_obj), target phib
type(bief_obj), target phcl
type(bief_obj), target alpgm
type(bief_obj), target phih
type(bief_obj), target theta0
type(bief_obj), target phip
type(bief_obj), target tmelt
type(bief_obj), target ntot
type(bief_obj), target nutgm
integer, dimension(maxvar) alire
double precision function, public melting_point(SAL)
character(len=32), dimension(maxvar) textpr
type(bief_obj), target hun
type(bief_obj), target icetype
type(bief_obj), target theta1
type(bief_obj), target kgm
type(bief_file), dimension(maxlu_ice) ice_files
type(bief_obj), target ctot
double precision seedr
subroutine condice(NPOIN, H, RECORD, AT, LISTIN)
Definition: condice.f:7
type(bief_obj), target seed
type(bief_obj), target sumph
type(bief_obj), target vbb
type(bief_obj), target vz
type(bief_obj), target phiw
type(bief_obj), target phri
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), target anfem
type(bief_obj), target beta1
double precision rho_ice
subroutine read_dataset(FFORMAT, FID, VARSOR, NPOIN, RECORD, AT, VAR_LIST, TROUVE, ALIRE, LISTIN, LASTRECORD, MAXVAR)
Definition: read_dataset.f:8
type(bief_obj), target phie
double precision cst_tmelt
type(bief_obj), target varsor
type(bief_obj), target thifemf
type(bief_obj), target icestr
type(bief_obj), target thifems
type(bief_obj), target phps
Definition: bief.f:3
integer, parameter maxvar
type(bief_obj), target thifem