-
Notifications
You must be signed in to change notification settings - Fork 12
/
JutulDarcy.jl
204 lines (186 loc) · 6.55 KB
/
JutulDarcy.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
"""
$(README)
---
## Module exports:
$(EXPORTS)
"""
module JutulDarcy
export MultiPhaseSystem, ImmiscibleSystem, SinglePhaseSystem
export reservoir_linsolve
export get_1d_reservoir
export DeckPhaseViscosities
export DeckShrinkageFactors
export CPRPreconditioner
export MuBTable
export ConstMuBTable
export DeckPhaseMassDensities, RelativePermeabilities
export ThreePhaseCompositionalDensitiesLV
export PhaseMassFractions
export PhaseMassFractions
export ThreePhaseLBCViscositiesLV
export plot_well!
export plot_well_results
export plot_reservoir_simulation_result
export plot_reservoir
export simulate_reservoir_parray
export setup_reservoir_simulator_parray
export component_mass_fluxes!, update_total_masses!
export table_to_relperm
export AqueousPhase, LiquidPhase, VaporPhase
export number_of_phases
export SourceTerm
export Pressure, Saturations, TotalMasses, TotalMass
export fluid_volume, pore_volume
export MinimalTPFAGrid
export compute_peaceman_index
export discretized_domain_tpfv_flow
export discretized_domain_well
export StandardBlackOilSystem
export PhaseRelativePermeability
export FlowBoundaryCondition
export ReservoirSimResult
export reservoir_domain
export reservoir_model
export setup_reservoir_model
export setup_reservoir_simulator
export simulate_reservoir
export setup_reservoir_state
export setup_reservoir_forces
export full_well_outputs
export well_output
export well_symbols
export wellgroup_symbols
export available_well_targets
export BlackOilUnknown
export BlackOilX
export TotalSurfaceMassRate
export WellGroup
export DisabledControl
export Wells
export TotalMassVelocityMassFractionsFlow
export BottomHolePressureTarget, TotalRateTarget
export SinglePhaseRateTarget, DisabledTarget
export SurfaceLiquidRateTarget, SurfaceOilRateTarget
export SurfaceWaterRateTarget, SurfaceGasRateTarget
export HistoricalReservoirVoidageTarget, ReservoirVoidageTarget
export SinglePhaseRateTarget, BottomHolePressureTarget
export PerforationMask
export WellDomain, MultiSegmentWell
export TotalMassFlux, PotentialDropBalanceWell
export SegmentWellBoreFrictionHB
export InjectorControl, ProducerControl
export Perforations
export MixedWellSegmentFlow
export segment_pressure_drop
export setup_well, setup_vertical_well
export well_mismatch
export simulate_data_file, setup_case_from_data_file
export get_test_setup, get_well_from_mrst_data
export setup_case_from_mrst
export simulate_mrst_case
export MultiPhaseCompositionalSystemLV
export StandardVolumeSource, VolumeSource, MassSource
export OverallMoleFractions
export ImmiscibleSaturation
export ThermalSystem
export PhaseMassDensities, ConstantCompressibilityDensities
export BrooksCoreyRelativePermeabilities, TabulatedSimpleRelativePermeabilities
import Jutul:
number_of_cells, number_of_faces,
degrees_of_freedom_per_entity,
values_per_entity,
absolute_increment_limit, relative_increment_limit, maximum_value, minimum_value,
select_primary_variables!,
select_secondary_variables!,
select_equations!,
select_parameters!,
select_minimum_output_variables!,
initialize_primary_variable_ad!,
update_primary_variable!,
update_secondary_variable!,
default_value,
initialize_variable_value!,
initialize_variable_value,
initialize_variable_ad!,
update_half_face_flux!,
update_accumulation!,
update_equation!,
setup_parameters,
count_entities,
count_active_entities,
associated_entity,
active_entities,
number_of_entities,
declare_entities,
get_neighborship
import Jutul: update_preconditioner!, partial_update_preconditioner!
import Jutul: fill_equation_entries!, update_linearized_system_equation!, check_convergence, update!, linear_operator, transfer, operator_nrows, matrix_layout, apply!
import Jutul: apply_forces_to_equation!, convergence_criterion
import Jutul: get_dependencies
import Jutul: setup_forces, setup_state, setup_state!
import Jutul: declare_pattern
import Jutul: number_of_equations_per_entity
import Jutul: update_equation_in_entity!, update_cross_term_in_entity!, local_discretization, discretization
import Jutul: FiniteVolumeGlobalMap, TrivialGlobalMap
import Jutul: @tic
using Jutul
using ForwardDiff, StaticArrays, SparseArrays, LinearAlgebra, Statistics
using AlgebraicMultigrid
# PVT
using MultiComponentFlash
using MAT
using Tullio, LoopVectorization, Polyester
using TimerOutputs
using PrecompileTools
using Dates
using GeoEnergyIO
import DataStructures: OrderedDict
using DocStringExtensions
timeit_debug_enabled() = Jutul.timeit_debug_enabled()
include("types.jl")
include("deck_types.jl")
include("porousmedia_grids.jl")
include("utils.jl")
include("interpolation.jl")
# Definitions for multiphase flow
include("multiphase.jl")
include("variables/variables.jl")
# Compositional flow
include("multicomponent/multicomponent.jl")
# Blackoil
include("blackoil/blackoil.jl")
include("thermal/thermal.jl")
# Wells etc.
include("facility/facility.jl")
include("flux.jl")
include("porousmedia.jl")
# MRST inputs and test cases that use MRST input
# and .DATA file simulation
include("input_simulation/input_simulation.jl")
# Initialization by equilibriation
include("init/init.jl")
# Gradients, objective functions, etc
include("gradients/gradients.jl")
# Various input tricks
include("io.jl")
include("linsolve.jl")
include("cpr.jl")
include("deck_support.jl")
include("regions/regions.jl")
include("test_utils/test_utils.jl")
include("forces/forces.jl")
include("formulations/formulations.jl")
include("ext.jl")
# Nonlinear domain decomposition solvers
include("NLDD/NLDD.jl")
# CO2-brine properties
include("CO2Properties/CO2Properties.jl")
@compile_workload begin
precompile_darcy_multimodels()
# We run a tiny MRST case to precompile the .MAT file loading
spe1_path = joinpath(pathof(JutulDarcy), "..", "..", "test", "mrst", "spe1.mat")
if isfile(spe1_path)
simulate_mrst_case(spe1_path, info_level = -1, verbose = false)
end
end
end # module