5 &(motcar,file_desc,path,ncar,cas_file,dico_file,local_nsusp_tel)
29 INTEGER,
INTENT(IN) :: NCAR
30 INTEGER,
INTENT(INOUT) :: LOCAL_NSUSP_TEL
31 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: PATH
32 CHARACTER(LEN=PATH_LEN),
INTENT(INOUT) :: MOTCAR(
maxkeyword)
33 CHARACTER(LEN=PATH_LEN),
INTENT(INOUT) :: FILE_DESC(4,
maxkeyword)
35 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: CAS_FILE
36 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: DICO_FILE
40 INTEGER :: I,K,ICO,INCO
48 CHARACTER(LEN=250) :: NOM_CAS
49 CHARACTER(LEN=250) :: NOM_DIC
51 CHARACTER(LEN=3) :: SEDTYPE
53 INTEGER :: ID_DICO, ID_CAS
57 CHARACTER(LEN=2) CHAR2
84 nom_dic=path(1:ncar)//
'GAIDICO' 85 nom_cas=path(1:ncar)//
'GAICAS' 93 IF((cas_file(1:1).NE.
' ').AND.(dico_file(1:1).NE.
' '))
THEN 94 WRITE(
lu,*)
'FIXED DICO AND STEERING FILE PRESENT' 97 WRITE(
lu,*)
'NOM_DIC',nom_dic
98 WRITE(
lu,*)
'NOM_CAS',nom_cas
101 CALL get_free_id(id_dico)
102 OPEN(id_dico,file=nom_dic,form=
'FORMATTED',action=
'READ')
103 CALL get_free_id(id_cas)
104 OPEN(id_cas,file=nom_cas,form=
'FORMATTED',action=
'READ')
111 & motint, motrea ,motlog , motcar ,
112 & motcle, trouve ,id_dico, id_cas,.false. ,file_desc)
124 maxfro = motint( adress(1,58) )
125 sortis = motcar( adress(4, 2) )(1:72)
127 susp = motlog( adress(3, 7) )
135 sedtype = motcar(adress(4,59)+i-1)(1:3)
136 IF(sedtype.EQ.
'CO')
THEN 137 WRITE(char2,
'(I2)') ico
139 local_nsusp_tel = local_nsusp_tel + 1
141 &
'SEDIMENT COH' //adjustl(char2)//
' ',
142 &
'COH SEDIMENT' //adjustl(char2)//
' ',
144 ELSE IF(sedtype.EQ.
'NCO'.AND.
susp)
THEN 146 WRITE(char2,
'(I2)') inco
148 local_nsusp_tel = local_nsusp_tel + 1
150 &
'SEDIMENT NCOH' //adjustl(char2)//
' ',
151 &
'NCOH SEDIMENT' //adjustl(char2)//
' ',
154 ELSE IF(sedtype.NE.
'CO'.AND.sedtype.NE.
'NCO')
THEN 155 WRITE(
lu,*)
'LECDON_T3D_GAIA: CHECK TYPE OF SEDIMENT' 156 WRITE(
lu,*)
'POSSIBLE CHOICES ARE: CO AND NCO' 163 IF(
ntrac.GT.tmp_ntrac)
THEN 172 IF(local_nsusp_tel.GT.0)
THEN 175 ALLOCATE(
slvsed(local_nsusp_tel))
176 ALLOCATE(
sed0(local_nsusp_tel))
180 ALLOCATE(
dnusedh(local_nsusp_tel))
181 ALLOCATE(
dnusedv(local_nsusp_tel))
182 DO i=1,local_nsusp_tel
188 slvsed(i)%SLV= motint(adress(1,26))
190 slvsed(i)%KRYLOV= motint(adress(1,27))
192 slvsed(i)%PRECON= motint(adress(1,28))
194 slvsed(i)%NITMAX= motint(adress(1,29))
197 slvsed(i)%EPS= motrea(adress(2,21))
203 IF(trouve(1,8).EQ.2)
THEN 209 IF(trouve(1,9).EQ.2)
THEN 215 IF(trouve(1,26).EQ.2)
THEN 217 slvsed(i)%SLV=motint(adress(1,26)+i-1)
221 IF(trouve(1,27).EQ.2)
THEN 223 slvsed(i)%KRYLOV=motint(adress(1,27)+i-1)
227 IF(trouve(1,28).EQ.2)
THEN 229 slvsed(i)%PRECON=motint(adress(1,28)+i-1)
233 IF(trouve(1,29).EQ.2)
THEN 235 slvsed(i)%NITMAX=motint(adress(1,29)+i-1)
240 DO i=1,local_nsusp_tel
244 IF(dimens(2,12).GE.i)
THEN 245 sed0(i) = motrea(adress(2,12)+i-1)
252 presed(i)=motrea(adress(2,13)+i-1)
257 DO i=1,local_nsusp_tel
262 sedsce(k,i)=motrea(adress(2,38)+(k-1)*local_nsusp_tel+i-1)
266 DO i=1,
maxfro*local_nsusp_tel
278 IF(trouve(2,44).EQ.2.AND.dimens(2,44).EQ.local_nsusp_tel)
THEN 280 dnusedh(i) = motrea(adress(2,44)+i-1)
282 ELSEIF(trouve(2,44).EQ.2.AND.dimens(2,44).LT.local_nsusp_tel
283 & .AND.dimens(2,44).GT.0)
THEN 286 dnusedh(i) = motrea(adress(2,44)+i-1)
289 DO i=dimens(2,44)+1,local_nsusp_tel
290 dnusedh(i) = motrea(adress(2,44)+dimens(2,44)-1)
293 IF(trouve(2,45).EQ.2.AND.dimens(2,45).EQ.local_nsusp_tel)
THEN 295 dnusedv(i) = motrea(adress(2,45)+i-1)
297 ELSEIF(trouve(2,45).EQ.2.AND.dimens(2,45).LT.local_nsusp_tel
298 & .AND.dimens(2,45).GT.0)
THEN 301 dnusedv(i) = motrea(adress(2,45)+i-1)
304 DO i=dimens(2,45)+1,local_nsusp_tel
305 dnusedv(i) = motrea(adress(2,45)+dimens(2,45)-1)
310 IF(trouve(2,43).EQ.2)
THEN 311 WRITE(
lu,*)
'WARNING: COEFFICIENT FOR DIFFUSION OF' 312 WRITE(
lu,*)
'SUSPENDED SEDIMENTS IS NOT USED IN 3D:' 313 WRITE(
lu,*)
'YOU NEED TO SET THE HORIZONTAL AND VERTICAL ONE' character(len=32), dimension(:), allocatable nametrac
logical, target susp
Suspension : yes if there is at least one suspended sediment this is the case if there is mud or if s...
integer, dimension(:), allocatable verprosed
double precision, dimension(:), allocatable dnusedh
Coefficient for horizontal diffusion of suspended sediments in 3D.
integer, parameter maxkeyword
integer nverprosed
Number of sediment vertical profiles.
integer npresed
Number of prescribed suspended sediments for TELEMAC3D or TELEMAC2D.
subroutine lecdon_telemac3d_gaia(MOTCAR, FILE_DESC, PATH, NCAR, CAS_FILE, DICO_FILE, LOCAL_NSUSP_TEL)
double precision, dimension(:), allocatable sed0
Initial values of suspended sediments.
integer, target nsicla
Number of sediment classes of bed material (less than NISCLM)
double precision, dimension(:), allocatable presed
Prescribed values of suspended sediments.
integer, dimension(:), allocatable schadvsed
Scheme for advection of suspended sediments.
subroutine damocle(ADRESS, DIMENS, NMAX, DOC, LLNG, LLU, MOTINT, MOTREA, MOTLOG, MOTCAR, MOTCLE, TROUVE, NFICMO, NFICDA, GESTD, MOTATT)
double precision, dimension(:), allocatable dnusedv
Coefficient for vertical diffusion of suspended sediments in 3D.
integer maxfro
Maximum number of (liquid boundaries, solid boundaries)
character(len=72) sortis
List of the variable to ouput in the result file.
integer nsedsce
Number of suspended sediments at the sources.
subroutine addtracer(NAMETRAC, MTRAC, ITRAC, ADD, NAME1, NAME2, UNIT0)
integer schdsed
Scheme for diffusion of suspended sediments in 3D.
type(slvcfg), dimension(:), allocatable slvsed
Solver for the diffusion of sediment.
double precision, dimension(:,:), allocatable sedsce
Values of suspended sediments at the sources.
integer, dimension(:), allocatable optadv_sed
Advection scheme options for suspended sediments.