2
### Compositional Model test-case
3
### 2 phases (gas / liquid) and 3 components (CH4, CO2 and C10 )
4
### (starting under non-equilibrium conditions)
5
### First part - before first *** exit *** statement
6
### is for scalar variables that will set up the right
11
### Option for debugging: if =357, then all print statements will
12
### be sent to the file flog.dat, otherwise to /dev/null
15
# Problem type: options -2, -1, 0, and 1
21
# Number of components
24
# total number of elements
30
# nlev --> controls u_snloc
33
# Number of velocity nodes
36
# Number of spatial nodes associated w velocity
39
# number of nodes associated with CV
42
# Number of spatial nodes
45
# Number of pressure nodes
48
# Number of surface nodes associated with CV
51
# Number of surface nodes associated w velocity
54
# Number of surface pressure nodes
57
# Number of surface spatial nodes
60
# Total number of surface elements
63
# Number of coeffs for polynomial representation for EOS
66
# Number of coeffs for polynomial representation of permeability/absorption
69
# Option for element type: Velocity mesh
72
# Option for element type: Pressure mesh
75
# Option for element type: Material mesh
78
# Option for element type: CV mesh
81
# Option for element type: CV surface mesh
84
# Option for element type: Velocity surface mesh
87
# Total number of time dumps
91
# Frequency in which files will be output into *.d.* files
94
# Total number of non-linear iterations
97
# Total number of non-linear iterations - internal loop
100
# noit_dim : dimension of the arrays to be defined in later stage
101
# (e.g., Field_error, Field_relax, Field_relax_diag, Field_relax_row
102
# and Field_relax_number_iterations, with
103
# Field = volfra, scalar, velocity, global, pressure, mass_matrix)
106
# Maximum number of non-linear iterations for scalar field (saturation /
107
# volume fraction (nits_flux_lim_volfra) and composition (nits_flux_lim_comp)
108
nits_flux_lim_volfra 1
111
# Option for modified CMC color algorithm(/=0), if <0==>ndpset=cv_nonods
117
# Reference pressure (not in use)
120
# Initial pressure (not in use)
123
# Initial temperature (or any scalar field, not in use)
126
# Conservative(1.)/non-conservative(0.) flag for CV discretisation
129
# Conservative(1.)/non-conservative(0.) flag for Volfra discretisation
132
# Time-stepping discretisation parameter
135
# Time-stepping discretisation parameter
138
# Time-stepping discretisation parameter (not in use)
141
# Disopt: discretisation option in space and time (see cv-adv-dif.f90)
142
# = 8: Finite elements in space (Theta = specified; Limiting: Downwind+)
145
# Disopt: discretisation option in space and time (see cv-adv-dif.f90)
146
# = 0: 1st order in space (Theta=specified; Limiting: universal)
149
# Disopt: discretisation option in space and time (see cv-adv-dif.f90)
150
# = 0: 1st order in space (Theta=specified; Limiting: universal) - in
151
# cv-adv-dif.F90, v_disopt --> cv_disopt
154
# t_dg_vel_int_opt: interface scalar field calculation option between elements
157
# u_dg_vel_int_opt: interface velocity calculation option between elements
160
# v_dg_vel_int_opt: interface velocity calculation option between elements
163
# w_dg_vel_int_opt: interface velocity calculation option between elements
166
# Lump multiphase flow equations
169
# For compositional - work out theta-hat for flux
170
comp_get_theta_flux T
171
comp_use_theta_flux F
172
volfra_get_theta_flux T
173
volfra_use_theta_flux F
178
# Capillary pressure option (for now we just have option = 1)
181
# Polynomial representation for the cappilary pressure - order (length of the matrix)
184
# comp_diffusion_opt: option to allow the diffusion in the multicomponent
185
# submodel. =0 disables diffusion calculation
188
# ncomp_diff_coef: number of coefficients (comp_diff_coef) of the diffusion tensor
193
### end of scalars variables necessary for the arrays read after
197
#############################################################################################
198
# To assign variables via external Fortran functions:
199
# If value < -1000, then a pre-defined function may be used, i.e., it is necessary
200
# to assign the corrected dimension to each array, matrix or
201
# tensor IN the external function
202
# If value == -1000 then a pre-defined function for ARRAYS (thus not necessary
203
# to assign dimension to the array as it will be taken automatically from
204
# Multiphase_Prototype.F90)
205
# If value == -999 then a pre-defined function for 2x2 MATRIX (thus not necessary
206
# to assign dimension to the array as it will be taken automatically from
207
# Multiphase_Prototype.F90)
208
# If value == -998 then a pre-defined function for 3x3 MATRIX (thus not necessary
209
# to assign dimension to the array as it will be taken automatically from
210
# Multiphase_Prototype.F90)
211
# If value == -997 then a pre-defined function for 4x4 MATRIX (thus not necessary
212
# to assign dimension to the array as it will be taken automatically from
213
# Multiphase_Prototype.F90)
214
# If value == -990 then a pre-defined function for ARRAYS (thus not necessary
215
# to assign dimension to the array as it will be taken automatically from
216
# Multiphase_Prototype.F90) - temporarily hardcoded to the following
217
# fields: COMP and SUF_COMP_BC
218
#############################################################################################
221
### Boundary conditions parameters
224
# wic_vol_bc( stotel * nphase )
225
wic_vol_bc -1000 InputComp2P3C_wic_vol_bc
227
# wic_d_bc( stotel * nphase )
228
wic_d_bc -1000 InputComp2P3C_wic_d_bc
230
# wic_u_bc( stotel * nphase )
231
wic_u_bc -1000 InputComp2P3C_wic_vol_bc
233
# wic_p_bc( stotel * nphase )
234
wic_p_bc -1000 InputComp2P3C_wic_p_bc
236
# wic_t_bc( stotel * nphase )
239
# wic_comp_bc( stotel * nphase )
240
wic_comp_bc -1000 InputComp2P3C_wic_vol_bc
242
# suf_vol_bc( stotel * cv_snloc * nphase )
243
suf_vol_bc -1000 InputComp2P3C_suf_vol_bc
245
# suf_d_bc( stotel * cv_snloc * nphase )
246
suf_d_bc -1000 InputComp2P3C_suf_vol_bc
248
# suf_cpd_bc( stotel * cv_snloc * nphase )
251
# suf_t_bc( stotel * cv_snloc * nphase )
252
### This BC option needs to be generalised later, for now nphase is hard-coded.
253
suf_t_bc -1000 InputComp2P3C_suf_t_bc
255
# suf_comp_bc( stotel * cv_snloc * nphase * ncomp )
256
suf_comp_bc -990 InputComp2P3C_suf_comp_bc
258
# suf_p_bc ( stotel * p_snloc * nphase )
261
# suf_u_bc( stotel * u_snloc * nphase )
262
suf_u_bc -1000 InputComp2P3C_suf_vol_bc
264
# suf_v_bc( stotel * u_snloc * nphase )
267
# suf_w_bc( stotel * u_snloc * nphase )
270
# suf_one_bc( stotel * cv_snloc * nphase )
274
# suf_comp_bc_rob1( stotel * cv_snloc * nphase )
277
# suf_comp_bc_rob2( stotel * cv_snloc * nphase )
280
# suf_u_bc_rob1( stotel * u_snloc * nphase )
283
# suf_u_bc_rob2( stotel * u_snloc * nphase )
286
# suf_v_bc_rob1( stotel * u_snloc * nphase )
289
# suf_v_bc_rob2( stotel * u_snloc * nphase )
292
# suf_w_bc_rob1( stotel * u_snloc * nphase )
295
# suf_w_bc_rob2( stotel * u_snloc * nphase )
298
# suf_t_bc_rob1( stotel * cv_snloc * nphase )
301
# suf_t_bc_rob2( stotel * cv_snloc * nphase )
305
### Some solvers options -- scalars to be allocated as real arrays
306
### sat_error_relax2_noit, t_error_relax2_noit, gl_error_relax2_noit,
307
### u_error_relax2_noit, p_error_relax2_noit and mass_error_relax2_noit
308
### with length noit_dim.
309
### All components of the arrays need to be defined as there is NO default
310
### value. Components are:
311
### (a) Field_error: error associated with Field interations;
312
### (b) Field_relax: overall relaxation coefficient associated with Field interations;
313
### (c) Field_relax_diag: relaxation coefficient for the diagonal matrix associated with Field interations;
314
### (d) Field_relax_row: relaxation coefficient for the sum of the row of the matrix associated with Field interations;
315
### (e) Field_relax_number_iterations: maximum number of linear iterations associated with Field interations;
316
### Field: volfra, scalar, velocity, global, pressure, mass_matrix
319
# For Volfra (i.e., saturation):
324
volfra_relax_number_iterations 100
326
# For Scalar (i.e., T):
331
scalar_relax_number_iterations 100
338
global_relax_number_iterations 100
343
velocity_relax_diag 0.
344
velocity_relax_row 1.
345
velocity_relax_number_iterations 100
350
pressure_relax_diag 0.
351
pressure_relax_row 1.
352
pressure_relax_number_iterations 4000
355
mass_matrix_error 1.e-5
357
mass_matrix_relax_diag 0.
358
mass_matrix_relax_row 1.
359
mass_matrix_relax_number_iterations 100
362
### Options for upwind discretisation scheme:
363
### in_ele_upwind: coefficient for upwind inside the element
364
### dg_ele_upwind: coefficient for upwind between elements
365
### = 1: full upwind; = 2: 80% upwind; = 3: optimal;
366
### = 4: central difference (more diffusive)
372
### Spatial, grid and velocity parameters
392
# nu( u_nonods * nphase )
395
# nv( u_nonods * nphase )
398
# nw( u_nonods * nphase )
401
# ug( u_nonods * nphase )
404
# vg( u_nonods * nphase )
407
# wg( u_nonods * nphase )
420
### Absorption and Source terms (include options for
424
# uabs_option( nphase )
429
# uabs_coefs( nphase, nuabs_coefs )
432
# u_abs_stab ( mat_nonods, ndim * nphase, ndim * nphase )
435
# u_absorb ( mat_nonods, ndim * nphase, ndim * nphase )
438
# t_absorb ( cv_pha_nonods, nphase, nphase )
441
# v_absorb ( cv_pha_nonods, nphase, nphase )
444
# u_source( u_pha_nonods )
447
# t_source( cv_pha_nonods )
450
# v_source( cv_pha_nonods )
453
# perm ( totele, ndim, ndim )
454
perm -998 InputComp2P3C_permability
461
# udiffusion( mat_nonods, ndim, ndim, nphase )
464
# tdiffusion( mat_nonods, ndim, ndim, nphase )
468
### Scalar fields and pressures
471
# satura ( cv_pha_nonods )
472
satura -1000 InputComp2P3C_saturation
474
# volfra ( cv_pha_nonods )
477
# t ( cv_pha_nonods )
480
# cv_one( cv_pha_nonods )
489
# Capillary pressure coefficients (for the polynomial representation)
493
### Densities, Equations of State and Compositional parameterisations
496
# den ( cv_pha_nonods )
499
# comp( cv_pha_nonods * ncomp )
500
comp -990 InputComp2P3C_Comp2
502
# volfra_pore ( totele )
505
# eos_option( nphase )
508
# eos_coefs( nphase, ncoef )
509
eos_coefs -999 InputComp2P3C_EOSCoeff
511
# cp_option( nphase )
514
# cp_coefs( nphase, ncp_coefs )
517
# Option to use a sigmoid function in the K-Value Constant as function
518
# of the saturation. If false, the non-zero values stored in K_Comp
519
# variable will be inverted, i.e., K_Comp = 1. / K_Comp
522
# K_Comp( ncomp, nphase, nphase )
523
K_Comp -998 InputComp2P3C_KComp
525
# Ensure the sum of the components is equal to one
528
# alpha_beta: parameter for the K partition relation between phases
531
# ncomp_diff_coef: number of coefficients (comp_diff_coef) of the diffusion tensor
534
# end of the input file