strömungsmechanik elektronisches rechnen im bauwesen … · kröhn, k.-p. (1991): simulation von...
TRANSCRIPT
Institut für
Strömungsmechanik und
Elektronisches Rechnen im Bauwesen
ROCKFLOW
Data Concept Graphical User Interface
Developer Manual - Version 3.5 Juni 2001
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
ROCKFLOW
Numerical Modeling of Fluid Flow, Mass and Heat Transport in Subsurface Systems
User’s Manual Release 3.5 – Juni 2001
by
Olaf Kolditz, Abderrahmane Habbar, René Kaiser, Thomas Rother, Carsten Thorenz Martin Kohlmeier & Sylvia Moenickes
2
Contents: I RF-FEM - Theory: Governing Equations and Finite Element Formulations II RF-FEM - Data Concept and Graphical User Interface III RF-FEM - Benchmarks and Examples IV RF-HGM - Geometric Modelling and Mesh Generation V RF-HGM - Benchmarks and Examples Information on current activities and complete literature: www.rockflow.de
Acknowledgements We appreciate the following institutes for financial support in developing ROCKFLOW:
Deutsche Forschungsgemeinschaft (DFG)
Bundesministerium für Bildung, Wissenschaft, Forschung und Technologie (BMBF)
Bundesanstalt für Geowissenschaften und Rohstoffe (Dr. Liedtke, Dr. Shao, Dr. Wallner) Geowissenschaftliche Gemeinschaftsaufgaben (Prof. Dr. Clauser, Dr. Pribnow)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
3
Preface Previous and current work on ROCKFLOW Version 1 Wollrath, J. (1990): Ein Strömungs- und Transportmodell für klüftiges Gestein und Untersuchungen zu homogenen Ersatzsystemen. - Bericht Nr.28/1990, Universität Hannover, Institut für Strömungs-mechanik, Dissertationsschrift. Kröhn, K.-P. (1991): Simulation von Transportvorgängen im klüftigen Gestein mit der Methode der Finiten-Elemente. - Bericht Nr. 29/1991, Institut für Strömungsmechanik und Elektronisches Rechnen im Bauwesen, Universität Hannover, Dissertationsschrift. Version 2 Helmig, R. (1993): Theorie und Numerik der Mehrphasenströmungen in geklüftet-porösen Medien. - Dissertationsschrift, Bericht Nr. 34/1993, Institut für Strömungsmechanik, Universität Hannover. Shao, H. (1994): Simulation von Strömungs- und Transportvorgängen in geklüftet porösen Medien mit gekoppelten Finite-Elemente- und Rand-Element-Methoden. - Dissertationsschrift, Bericht Nr. 37/1994, Institut für Strömungsmechanik, Universität Hannover. Lege, T. (1995): Modellierung des Kluftgesteins als geologische Barriere für Deponien. - Dissertations-schrift, Institut für Strömungsmechanik und elektronisches Rechnen im Bauwesen, Universität Hannover, 213S. Ratke, R. & Kolditz, O. & Zielke, W. (1996a,b): ROCKFLOW-DM2 - 3-D Dichteströmungsmodell. - Technischer Bericht, Institut für Strömungsmechanik und Elektronisches Rechnen im Bauwesen, Universität Hannover. Kolditz, O. (1996): Stoff- und Wärmetransport im Kluftgestein. - Habilitationsschrift, Institut für Strö-mungsmechanik und Elektronisches Rechnen im Bauwesen, Universität Hannover, 392S. Barlag C. (1997): Adaptive Methoden zur Modellierung von Stofftransport im Kluftgestein. - Disserta-tionsschrift, Institut für Strömungsmechanik, Universität Hannover. Version 3 Kolditz O, Kaiser R, Thorenz C & Schulze-Ruhfus M: ROCKFLOW User’s Manual Release 3.1, June 1997, Institut für Strömungsmechanik und Elektronisches Rechnen im Bauwesen, Universität Hannover. Kolditz O, Habbar A, Kaiser R, Thorenz C: ROCKFLOW User’s Manual Release 3.2, December 1997, Institut für Strömungsmechanik und Elektronisches Rechnen im Bauwesen, Universität Hannover. Kolditz O, Habbar A, Kaiser R, Thorenz C: ROCKFLOW User’s Manual Release 3.3, November 1998, Institut für Strömungsmechanik und Elektronisches Rechnen im Bauwesen, Universität Hannover. Kolditz O, Habbar A, Kaiser R, Thorenz C: ROCKFLOW User’s Manual Release 3.4, November 1999, Institut für Strömungsmechanik und Elektronisches Rechnen im Bauwesen, Universität Hannover. Current activities and persons to contact: Olaf Kolditz Head of the groundwater modelling group, Flow of compressible fluids, heat transport (RF-GM, HTM) THM-Modelling, GUI (RF-SHELL) Abderrahmane Habbar Reactive transport (RF-RTM), Inverse Modelling Solver, Data concepts René Kaiser Grid adaptation (RF-ADP) Thomas Rother Geometric modelling, mesh generation (RF-HGM) Carsten Thorenz Multiphase and Density flow (RF-MM) Method of Characteristics, Data Filter (rf2tec) Martin Kohlmeier Deformation processes (RF-DM) THM-Modelling, GUI (RF-SHELL) Sylvia Moenickes Geometric modelling, mesh generation (RF-HGM) Associated activities concerning geometric modelling and mesh generation: Prof. Taniguchi (Okayama University)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
1 Data Concept
1.1 ROCKFLOW Objects The object-oriented concept is based on the following data objects, which can be treated independently from each other. Objects have own data constructs (properties) and functions to deal with (methods). Within the graphical user interface (GUI) objects communicate by passing messages. Object Abbre- Dimension Organi- Sources (h,c,cpp) Classes viation sation FEM GUI NODES NOD nn × NOD Array nodes sh_nod CNodes ELEMENTS ELE ne × ELE Array elements sh_ele CElements TIME TIM nu × TIM L / A rftime sh_time CTime OUTPUT OUT nu × OUT L / A rfoutput sh_out COutput NUMERICS NUM nu × NUM L / A numerics sh_num CNumerics INITIAL CONDITIONS
IC nu × nic × IC List rfinitc sh_ic CInitialConditions
BOUNDARY CONDITIONS
BC nu × nbc× BC List rfbc sh_bc CBoundaryConditions
SOURCES SS nu × nss × SS List rfsousin sh_ss CSources MATERIALS MAT ng × MAT L / A materials sh_mat CMaterials SOLVER SOL nu × SOL List rfsolver sh_sol CSolver EQUATION SYSTEM
EQS nu × EQS cgs_xxx
ADAPTATION ADP nu × ADP Array rfadapt sh_adp CAdaptation FUNCTIONS FCT nf × FCT Array rffunc sh_fct CFunctions KERNELS KER np × KER cel_xxx CKernels MODELS MOD nu × (nn + ne) Table mod_xxxx CModels RF_FEM RF_SHELL Important numbers for dimension of data objects:
nn - number of nodes ne - number of elements nu - number of unknowns nic - number of initial conditions per unkwon nbc - number of boundary conditions per unknown nss - number of source terms per unknown ng - number of material groups nf - number of functions
Data objects are organized in lists (L) or arrays (A). Lists have a large flexibility, in particular for handling dynamic data types. Arrays have advantages concerning fast data access.
5
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Construction of RF Lists The below functions create empty lists (L) or arrays (A) for all objects and destroy them. Lists are constructed only once during the program execution.
CreateObjectLists(void) DestroyObjectLists(void)
We can separate three different groups of objects. First are contained in a RFI file, second and third belong to the RFD file.
1. Geometric and topologic objects (RFI objects):
nodes (A) elements (A) adaptive elements (A) edges (A) plains (A)
2. Simulation control objects (RFD objects):
time discretization (A) output control data (L) numerical parameter (A) linear solver properties (L) non-linear solver properties (L)
3. Physical objects (RFD objects):
initial conditions (L) boundary conditions (L) source/sink terms (L) materials (L / T)
Construction of RF Objects In general, all objects are designed for numerical simulation of multiphase-multicomponental processes in porous-fractured media. Therefore, the number of objects depends on both the number of phases (number_of_phases) and the number of components (number_of_components). Additionally, the number of material groups (number_of_groups) must be specified. There are two possibilities to create RF objects. First: Reading the data from the RFD and RFI input files. The read/protocol functions -
FctObject() construct the corresponding objects. Second: Withelp of function CreateRFObjects() default objects according to the number of
phases, components and material groups can be created. Destruction of objects is conducted whether by list destruction (DestroyObjectList()) or by DestroyRFObjects() (see table below).
6
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Table: Object construction
Source Construction Configuration Destruction RF input files RFD and RFI
ReadData() FctObject()
- DestroyObjectLists()
RF shell CreateRFObjects() ConfigRFObjects() DestroyRFObjects() If the number of phases or components changes, objects must be configured by ConfigRFObjects().
1.2 ROCKFLOW Source Files The figure below shows the mainframe menus and the connected sources files. Above, the GUI sources are given, and below, the FEM sources are printed.
7
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
2 Data Files
2.1 Data Formats ROCKFLOW processes several files to input and output data. For each computation the program needs the two input files - the RFD file and the RFI file. Two output files are generated during the computation - RFE and RFO files. The RFD file contains a number of keywords which control all necessary adjustments, for example time stepping scheme, material properties, as well as physical and numerical parameters. The output RFE file contains a protocol of the RFD file. For a first computation of the flow models the RFI file only contains the geometry of the problem. The transport models need some special data, for example the pressure field, which are to be calculated by a flow model. If a restart of a computation is necessary the RFI file must contain the data of the last computed time step. An input file for a restart can be produced by copying parts of the RFO output file which has the same structure as the RFI input file.
Table: RF files and file interfaces File Extension Use RFD Input file for chemico-physical data RFI Input file for node geometry and element topology RFE Protocol of RFD file RFO Results output file NXX Output file for time profiles (temporal breakthrough curves) PXX Output file for spatial profiles at fixed time point File interface MSH Internal data format of Dali and RF-HGM PLT Input file for Tecplot (export) SMH Feflow supermesh data (import)
Withhelp of the file menu, a new RF project can be created or an existing input files can be red. The RF project consists of the RFD and RFI data.
8
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
The menus File New and File Open cover important functions: construction of all data either interactively by model dialog or by reading the data from RFD and RFI input files.
Table: Structure of creator functions
Subject File New File Open Tests Destroy lists and objects
If necessary Destroy lists and objects If necessary
Object-Lists CreateObjectLists() CreateObjectLists() Objects Model dialog ReadData(dateiname) Object configuration ConfigRFObjects()
ConfigRFFiles(dateiname) Document data DeleteContents() WriteRFtoDoc()
2.2 File handling GUI functions
void CR
a objects will be
oid CRockflowView::OnFileSave()
//Transfer document data to corresponding Rockflow parameters
g_strFileName=new.rfd (if not changed with File...Save as)
ockflowView::OnFileNew()
Using the File... New menu, a new project and all corresponding datenu, existing data objects were destroyed. created. Note, reusing this m
oid CRockflowView::OnFileOpen() v
Using the File... Open menu an existing project (RFD and RFI data) can be opened withhelp of the file selector box.
v
WriteDoctoRF(); // Write File
WriteRFDFile()
9
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
void CRockflowView::OnFileSaveAs()
existing project (RFD and RFI data) can be saved withhelp of the file selector box.
erter
F2T C RF output data (RFO files) to Tecplot format
Using the File...Save As menu an
2.3 Data Conv R EMSH ow supermesh data to RFI format 2RF Fefl Data r geometric data - see RF-HGM Manual converter fo
10
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
2.4 F Keyword Reference
F u subkeywords (&) for flexible data input. KEY
ist o
Simulation Control
R R ses keywords (#), subkeywords ($) and # WORD, $SUBKEYWORD, &SUBSUBKEYWORD L
f RF Keywords
3 PROJECT MODEL 4 Model TIME 5 Time Discretization OUTPUT_EX 6 Output OUTPUT OUTPUT_NODES OUTPUT_ELEMENTS OUTPUT_SAVE 7 Numerical Methods NUMERICS NUMERICS_PRESSURE NUMERICS_SATURATION NUMERICS_CONCENTRATION NUMERICS_TEMPERATURE NUMERICS_DEFORMATION NUMERICS_VELOCITY NUMERICS_ITERATION NUMERICS_GEOELECTRIC 8 olver RENUMBER 8.1 Linear Solver LINEAR_SOLVER_PROPERTIES_PRESSURE LINEAR_SOLVER_PROPERTIES_SATURATION LINEAR_SOLVER_PROPERTIES_CONCENTRATION LINEAR_SOLVER_PROPERTIES_TEMPERATURE LINEAR_SOLVER_PROPERTIES_SORBED_CONCENTRATION LINEAR_SOLVER_PROPERTIES_IMMOBILE_SOLUTE_CONCENTRATION name_linear_solver_properties_solid_phase 8.2 Non-linear Solver NONLINEAR_SOLVER_PROPERTIES_PRESSURE NONLINEAR_SOLVER_PROPERTIES_SATURATION NONLINEAR_SOLVER_PROPERTIES_CONCENTRATION 8.3 Iteration Process ITERATION_PROPERTIES_PRESSURE ITERATION_PROPERTIES_SATURATION ITERATION_PROPERTIES_CONCENTRATION ITERATION_PROPERTIES_SORBED_CONCENTRATION ITERATION_PROPERTIES_IMMOBILE_SOLUTE_CONCENTRATION 9 Initial Conditions keyword_initial_condition_fluid_phase keyword_initial_condition_saturation keyword_initial_condition_water_content keyword_initial_condition_tracer_component
11
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
keyword_initial_condition_temperature 10 Dirichlet Boundary
Conditions keyword_boundary_condition_fluid_phase keyword_boundary_condition_saturation ke oyw rd_boundary_condition_conditional_saturation ke oyw rd_boundary_condition_wa er t _content ke oyw rd_boundary_condition_tracer_component ke o yw rd_boundary_condition_conditional_tracer_component ke o yw rd_boundary_condition_temperature keyword_boundary_condition_displacement_x keyword_boundary_condition_displacement_y keyword_boundary_condition_free_outflow keyword_boundary_condition_voltage_dc 11 Source/Sink Terms name_source_mass_fluid_phase name_source_volume_fluid_phase name_source_mass_tracer_component name_source_heat_phase keyword_boundary_condition_sorbed_component name_source_electric_current_dc name_sink_mass_fluid_mixture name_sink_volume_fluid_mixture LOAD_SOLID_PHASE_X LOAD_SOLID_PHASE_Y 12 Materials REFERENCE_CONDITIONS FLUID_PROPERTIES SOIL_PROPERTIES TRACER_PROPERTIES SOLID_PROPERTIES 13 Adaptation ADAPTATION ADAPTATION_PRESSURE ADAPTATION_TEMPERATURE ADAPTATION_COMPONENT ADAPTATION_SATURATION ADAPTATION_SORBED_COMPONENT ADAPTATION_SOLUTE_COMPONENT APRIORI_REFINE_ELEMENT Functions CURVES 14 Grafics BCURVE, GRAF, MESH2D, MESH3D, GRAF_EXTD Miscellaneous FRACTURE_APERTURE_DISTRIBUTION
12
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
3 Simulation
• Selection of the physico-chemical model (4 Model) epping (5 Time Discretization)
(6 Data Output) • Runnig the simulator • Settings for on-line output to display (15 Graphics)
This pull-down menu deals with data to control the simulation:
• Contol of time st• Output of data
p e or a
m_bNonlinearTransport
m_bMassTransport
m_bMultiphaseFlow waterFlow
low m_bHeatTransportbyMultiphaseFlow m_bMassTransportbyGroundwaterFlow
m_bMassTransportbyGasFlow m_bMassTransportbyMultiphaseFlow
De ending on the selected physico-chemical model, a number of flags is used to activatde ctivate the corresponding mainframe pull-down menus:
m_bNonlinearFlow m_bFluidFlow m_bHeatTransport m_bGroundwaterFlow m_bGasFlow m_bHeatTransportbyGround m_bHeatTransportbyGasF
13
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4 Model
a general point of view according to the question, which program part drives and controls of that view.
Concept
There is the others. The below figure gives an idea
4.1 Data
In the center of that figure appears the model itself. At first it processes the model dependent data given by input files. The model independent data is stored in globally accessible data structures. rom the point of view software engineering the model equates with a two dimensional and
rinking matrix, which holds specific information for every node of the . the coordinates in all three spatial directions x, y and z.
e figu iving and which data structures it uses: • For the computation of different time steps, the time discretization the time loop is activated. • The adaption loop is activated, if the parts of the grid domain needs to be refined adaptively. • The iteration loop resolves non-linearities within the governing model equations. • The system of non-linear partial differential equations is described above. It is also known as
element loop. • The integration loop finally calculates the element matrices at the Gaussian points. • For the entire calculation steps the model needs information about geometry, topology and
different physical and chemical properties. So, it uses nodes, elements, initial and boundary conditions and material properties. Node, element and output data are managed by the model.
he MODEL consists of control, node and element data.
Fdynamically growing and shdiscretization of the area of interest, e.g The abov re also shows the entire parts the model is dr
• T
14
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4.1.1
Const ObjectConstr
Simulation Control Data Object: SIMULATION Source:Data:
models.h/c
FctProFctMod CallingReadD
DocumConstrReadDWriteR CallingOnFile
char *project_title = NULL; int modex; int model; int flow_model; int g_iDensityDependentFlow; int simulation; int multiphaseflow; int flow, tran, adaptiv; int transport_model_type; int chemical_model; long number_of_groups; long number_of_phases; long number_of_components; int fluid_phase; int saturation_on_phase; int transport_in_phase;
ruction
s uction from RFD file Construction Destruction ject() el()
CreateModelData() DestroyModelData()
functions Calling functions Calling functions ata() CreateAllData()
CRockflowView::OnFileNew()DestroyAllData() DestroyRFObjects() DestroyRFDObjects()
ent uction from RFD file Construction Destruction ata() + F2Doc_Simulation()
CreateModelData() + (Instance of CRockflowDoc)
DestroyModelData() + CRockflowDoc::DeleteContents()
functions Calling functions Calling functions
DestroyAllData() DestroyRFObjects() DestroyRFDObjects()
Open() CreateAllData() CRockflowView::OnFileNew()
CRockflowView::OnFileNew()
15
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4.1.2 Model Node Data The nodal values of the unknown functions are stored in the NODE objects. The model controls
nz_nval).
bject: NODE
nodes.h/c Data: Node data are attached to the NODE object.
void Crk->nva
oid DeleteNode ( long number ) ((Knoten *) nodelist->elements[number])->nval = (double *)Free(((Knoten *) nodelist->elements[number])->nval); ((Knoten *) nodelist->elements[number])->nval_intern = DestroyInternNodeData(((Knoten *) nodelist->elements[number])->nval_intern);
void DestroyNodeList (void)
the number of unknown functions (a OSource: mod_xxxx.h/c
int anz_nval; /* Number of node data */ void *nval /* Node data */ NvalInfo *nval_data = NULL; /* Node data information */
ess1, dummy; ,conc0,conc1;
int ref_rb_flow,ref_rb_tran;
int press0, print source
int satu; int dtidx;
Construction Knoten *NewNode()
k->nval_intern = InitInternNodeData() ble)); k->nval = (double *)Malloc(anz_nval*sizeof(dou
eateModelNodeData ( long number ) l = (double *)Malloc(anz_nval*sizeof(double));
v
16
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4.1.3 Model Element Data
Source: mod_xxxx.h/c elements.h/c Element data are attached to the ELEMENT object.
onstr
ata ( long number ) void ElP ger, int level, long pos )
elem->eval = (double *)Malloc(anz_eval*sizeof(double)); void ElDestroyElementList (void) void ElShortenElementList ( long number )
((Element *)elementlist->elements[i])->eval_intern = DestroyInternElementData(((Element *)elementlist->elements[i])->eval_intern);
((Element *)elementlist->elements[i])->eval = (double *)Free(((Element *)elementlist->elements[i])->eval);
Object: ELEMENT
void *eval_intern; /* Element matrices */ val; /* Number of element data */ val; /* Element data */
EvalInfo *eval_data = NULL; /* Element data information */
int anz_edouble *e
C uction void CreateModelElementD
laceNewElement ( int elementtyp, long vorgaenelem->eval_intern = InitInternElementData();
17
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4.1.4 Model Output Data
ource: filesx.h/c
onstruction
void SelectData ( int lsr ) datafield tafield_n,danz_n*sizeof(DatenFeld)); datafield_e = (DatenFeld *) Realloc(datafield_e,danz_e*sizeof(DatenFeld));
troyFileData ( void )
datafield_n = (DatenFeld *)Free(datafield_n);
S
int danz_n; /* Number of node output data */
e; /* Node output data array */
DatenFeld *datafield_n; /* Node output data array */ int danz_e; /* Number of node output data */ DatenFeld *datafield_
C
_n = (DatenFeld *) Realloc(da
void Desvoid SelectData ( int lsr )
datafield_e = (DatenFeld *)Free(datafield_e);
18
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4.2 Keyword Description
eyword #PROJECT specifies the title of project. The text may have a maximal length of 256 characters per line. S Fc Parameter M
4.2.1 Project Title K
ource: tProject() in models.c
Value eaning
N1 Pchar[256] roject title
Example #PROJE 2-D TR ANS RT
CT ACER TR PO BY UNSTEADY GAS FLOW
19
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4.2.2 Model Sour FctModel() The keyword ODEL contro of the program and specifies the physico-chemical model. Defaults are
FEM Value
Dialog Value
Meaning
ce: in models.c
#M ls the execution mode printed bold.
Para-meter N1 modex
-2
0
Simulation control (modex): RFD input file will be tested. Result in RFE fil
-1 1
1 2
e RFD and RFI input files will be tested. Result in RFE file Execution of the FEM-Simulation
N2 Mo ( l)Model 0 0 Groundwate 2 1 G w p le fluids)
6 2 Multiphase Flow10093 3 Heat transport by groundwater flow 10097 4 Reactive transport b groundwater flow 10299
10010
5
8
dels mode : r flow
as flo (com ressib
yReactive transport by gas flow
or tracer transport by multiphase flow; geoelectric field calculations
omponent transport by ground water flow Consolidation processes
10699
6 Heat and tracer transport by single phase (multicontinua) flow
10095 7 Multic
N3 Flow model (flow_model): 0
1 0 1
Darcy law (linear flow behavior) Forchheimer law (non-linear flow behavior)
N4
0 1
0 1
Density-dependent flow (g_iDensityDependentFlow): Constant density flow (flow of homogeneous liquid) Density dependent flow (flow of heterogeneous liquid)
N5
0 1 2
0 1 2
Reactive transport model (chemical_model): No sorption reaction Equilibrium sorption reactions Nonequilibrium sorption reactions
N6 -1 0 1
0 1
Transport in multiphase flow (transport_in_phase): In all phases In non-wetting phase (e.g. air or oil) In wetting phase (water)
N7 0 1 2 3
Optimization of coupled transient problems (simulation): - flow only - unsteady flow and transport - steady flow and transport - transport only
N8 1 Number of material (soil/rock) groups (number_of_groups)
N9 1 Number of fluid phases (number_of_phases)
N10 1 Number of chemical components (number_of_components)
N11 0 1
Grid adaptation flag (adaptive_mesh_refinement_flag): disable adaptation enable adaptation
20
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
N12 0 1
Chemical chain reactions (chain_reaction_model): disable chain reactions enable chain reactions
N13 0 1
Heat reactions (heat_reaction_model): disable heat reactions enable heat reactions
N14 0 Not used
For further development the “subkeyword” concept is used. The following subkeywords, which can optionally be appended in arbitrary order to the keyword, are recognised: Number of moving fluid phases: $NUMBER_OF_PHASES [int] Number of components within the fluids: $NUMBER_OF_COMPONENTS [int] Number of temperature fields: $NUMBER_OF_TEMPERATURES [int] Number of electrical fields for geoelectrics: $NUMBER_OF_ELECTRIC_FIELDS [int] Number of material groups: $NUMBER_OF_GROUPS [int] Number of continua for multicontinua approach: $NUMBER_OF_CONTINUA [int] Each of them is followed by a single integer value which specifies the value for the regarded quantity, e.g. $NUMBER_OF_PHASES 2 specifies a two-phase flow simulation. Not all of the subkeywords are available for all models.
21
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12 ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
22
22
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
4.3 Ressource Description
sh_simu.h/ *.ccp CSimulation
IDD_PROJECT_MODEL
model.h/c Source file Class Base class CDialog Ressource-ID Control elements Member variables Member functions RF-variables IDC_EDIT_PROJECT_NAME m_strProjectTitle project_title IDC_RADIO_SIMU1 m_iSimulationControl modex IDC_RADIO_SIMU3 IDC_MODEL_LIST m_ModelList
m_iModelTypeSel OnSelchangeModelList() model
IDC_CHECK_FORCH m_bNonlinearFlow flow_model IDC_CHECK_CONVECT m_bDensityDependentFlow g_iDensityDependentFlow IDC_LIST_TRANSPORT_PHASE m_TransportPhase
m_iTransportPhaseSel transport_in_phase
IDC_EDIT_PHASES m_iPhaseNumber number_of_phases IDC_EDIT_COMPONENTS m_iComponentNumber number_of_components IDC_EDIT_MATERIAL_GROUPS m_iGroupNumber number_of_groups IDC_RADIO_SIMU_O1 m_iSimulationOptimization simulation IDC_CHECK_ADAPTATION m_bGridAdaptation adaptive_mesh_refineme
nt_flag IDC_RADIO_MOD_RTM_1 m_iReactionModel chemical_model IDC_CHECK_MOD_RTM_1 m_bChainReactionModel chain_reaction_model ID_CANCEL ID_OK
23
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
24
Data and GUI Functions
4.3 Functions intint E * f) int ) void DestroyModelData(void)
4.3.2 View Functions (CRockflowView) void CRockflowView::OnProjectModel() void CRockflowView::OnUpdateProjectModel(CCmdUI* pCmdUI)
4.3.3 Document Data Exchange void CRockflowView::WriteDoc2RF_Simulation(void)
4.3.4 Dialog Message and Data Exchange BOOL CSimulation::OnInitDialog() voi geModelList() voi void CSimulation::SetMvoi n::SetDi nt model_index) int etMo r (i
.1 Data Construction
FctProject() FctModel(char *data, int found, FIL CreateModelData(void
d CSimulation::OnSelchand CSimulation::OnOK()
odelShellFlags(void) d CSimulatio alogItems (iCSimulation::S delIdentifie nt list_index)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Time Discretization
bject: TIME Organization: array of TimeSteps Source: rftime 5.1.1 Data Object
5
5.1 Data Concept O
5.1.2 SourceData TConstrDestru
int dt_steu; /* Flag fuer Zeitschrittsteuerung */ double startzeit, endezeit; /* Beginn und Ende der Rechnung */ long anz_zeitschritte; /* Gesamtzahl der zu rechnenden Zeitschritte */ long anz_dt_bloecke; /* Anzahl der eingelesenen TimeStep-Bloecke */ long aktueller_zeitschritt; /* Nummer des aktuellen Zeitschritts */ double aktuelle_zeit; /* zugehoeriger Zeitpunkt */ double dt; /* Zeitschritt */ float dt_steu_param; typedef struct { long anzdt; double dt; } TimeSteps
25
ction
Dialog
Constru
RFD File ype Object Object Document uction FctTime() CreateTimeData() WriteDoctoRF_TimeDiscretization() ction DestroyTimeData() DeleteContents()
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
New data object O
26
sh_time
Construction void CreateTimeStepsList(void) void DestroyTimeStepsList(void) void CreateDefaultTimeSteps(void) int DestroyTimeStepsListItem(char *name)
bject: TIME_STEPS Object list: LIST_TIME_STEPS Sources: rftime,
*ts
*ts
*ts
*ts list
typede
f struct { char *name;
List *ts_ long count_of_ts; char **names_of_ts;
long count _name; LIST_TIME_STEPS;
list;
_of_ts }
typedef struct { char *name;
uble dt;
long type long anzdt; do long mode; } TIME_STEPS
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
27
U #TIM ng sc eme can be specified.
lue tion
Meaning
5.2 Keyword Description
sing the keyword E , the time steppi h
Parameter Variables
VaTest func
N1 m_dFinalSimulation endezeit
user def. 0. c
TFEndezeit
Fin [seco putation will be stopped
Prescribed time stepping
al simulation time in ] (the m then)
N2 umber
Maximum number of time steps e cribed time stepping m_ImaximumTimeStepN
anz_zeitschritte
user def.0 Pr
TFAnz_zeitschrittes
N3 m_iTimeStepControl dt_steu g_nSelectedTimeStepModel
0 >0 be
TFDt_steu
Strictly prescribed time stepping scheme will sed
Tim will by the
ue stepping scheme be controled model
General: Time step sets timesteps[i].anzdt (0<i<anz_dt_bloecke) N4 m_ITimeStepNumber m_TimeStepList
TFAnzdt
Nuuser def. mber of time steps
N5 m_dTimeS
steps[i]tepLength .dt
user def. TFDt
Time step length in [sec]
time
...
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
5.3 Resource Description
28
Class e.h/ *.cpp
CTimeDiscretization
rftime.h/cpp TimeSteps
Source file sh_tim
Base class CDialog Ressource-ID IDD_TIME Control elements Member variables Member functions RF-variables IDC_EDIT_TS_1 m_ dFinalSimulation endezeit IDC_EDIT_TS_2 m_IMaximumTime anz_zeitschritte
StepNumber IDC_EDIT_TS_3 m_lTimeStepNumber dt_steu IDC_EDIT_TS_4 m_dTimeStepLength IDC_EDIT_TS_5 m_iTimeStepModel IDC_E l DIT_TS_6 m_ iTimeStepControIDC_BUTTON_TS_1 OnButtonTSAdd() IDC_BUTTON_TS_2 OnButtonTSUpdate() IDC_BUTTON_TS_3 OnButtonTSRemove() IDC_BUTTON_TS_4 OnButtonTSRemoveAll
() IDC_LIST_TS m_ListTimeSteps OnSelchangeListTS() timesteps[i].anz
dt timesteps[i].dt
ID_CANCEL ID_OK
OnOK()
Example #TIME
0000e+00 0 0 1 0.1 10
0.01
0.00
0.001 20 0.00015
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
5.4 Data and GUI
Functions
5.4.1 RF Data Functions
int FctTime ( char *data, int found, FILE *f ) data, int found, FILE *f)
OnProjectTime() imeDiscretization dialog
5.4.3 Document Data Exchange void CRockflowView::WriteRF2Doc_TimeDiscretization() //Tranfers data from Rockflow variables to Document void CRockflowView::WriteRF2Doc_TimeDiscretization() //Tranfers data from Document to Rockflow variables
5.4.4 Dialog Data Exchange and Message Functions BOOL CTimeDiscretization::OnInitDialog()
// Transfers data from Objects/Document to the Dialog, fills the list box void CTimeDiscretization::OnButtonTSAdd()
dds a string for the list box void CTimeDiscretization::OnButtonTSUpdate()
// Up cted list box with dialog data(conmeD ion::OnButtonTSRemove()
e boxD n
Re gvoid CTimeDiscretization::OnSelchangeListTS ()
// Transfers TS object data to dialog data and freshens resource elements void CTimeDiscretization::OnOK()
// Transfers TS object data directly to array of timesteps // Transfers list box data to array in Document (Document concept)
5.4.5 Auxiliary Functions CString CTimeDiscretization::buildStringfromControls() //uses the current edit control data to build a string CString CTimeDiscretization::buildStringfromTS(TimeSteps* pTS) //uses a TimeSteps object to to build a string
int FctTimeNew(char *int CreateTimeData(void) void DestroyTimeData(void)
5.4.2 View Functions (CRockflowView)
void CRockflowView:: //shows the T
// Builds and a
dates selet
trols) void CTi
/iscretizamoves selected list / R
void CTime string
iscretization::OnButtomoves all list box strin
TSRemoveAll() // s
29
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6 Data Output
6.1.1 Data Concept O OUTPUT S rfoutput.hData: Output of odel
6.1.1.1 Data Object
6.1.1.2 Construction Source RFD File GUI Dialog
6.1 Nodal Results
bject:ource: /c
m results #OUTPUT
Data type Object Object Document Construction FctOutput() CreateOutputData() Destruction DestroyOutputData() DestroyOutputData()
int output_many int output_geom itschritt */
tput_start; des */ int output_bin; */ int output_restar eginnen */ int output_mode itpunkte */ long *output_timesteps;double *output_times; /
t_anz; t_nr; /* Nummer der folgenden Ausgabe */
; ;
/* Ausgabe in mehreren Dateien */ /* Ausgabe der Geometrie in jedem Ze
int ou /* Ausgabe des Anfangszustanr binaer (1) /* Ausgabe ascii (0) ode
/* mit Ausgaben bei 0 bt; l; /* Flag zur Steuerung der Ausgabeze
*/ /* Feld mit Ausgabezeitschritten /* Feld mit Ausgabezeitpunkten *
int outputpu
/* Feldgroesse */ int ou
30
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.1.2 Keyword Description Keyword #OUTPUT controls the output of nodal results. Defaults are printed bold. he main handlers are in registers ‘Settings’ and ‘Time Control’.
eter Va
T
Param lue Meaning
N1 output_many
0 All results are w1 Each result
ritten to the same file is written to a single file
N2 output_geom
ll be wriry will be wri each timestep
0 1 Geomet
Geometry wi tten only ten at
onces t
N3 output_start
0 Initial and bo and boundary conditions 1 Initial
undary not be wrwill be written
conditions will itten
N4 output_bin
0 Results wi1
ll be written in ASCII format Results will be written in compact binary format
N5 ut_restart
1
Results are numbere equently Results are numbered beginning with zero
0 d subsoutp
N6 output_model
0 1 2 3 4 5
No output at all Output only after the last timestep Output every N7th timestep Output every N7 seconds Output after timestep N7a, N7b, N7c ..... Output after time N7a, N7b, N7c .....
N7 *output_timesteps *output_times output_anz
Value(s) needed for N6
31
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.1.3 Resource Description
O s
essource-ID D_OUTPUT_FILES
rftime.h/c
utput File
Source file Class Base class R
sh_out.h/ccp COutputFiles CPropertyPage ID
Control elements Member variables Member functions F-variables R OnInit IDC_RADIO_OUT_F1 utput_many m_iOutputFiles oIDC_RADIO_OUT_F3 m_iOutputGeometry output_geom IDC_RADIO_OUT_F5 m_iOutputIC output_start IDC_RADIO_OUT_F7 m_iOutputFormat output_bin ID_CANCEL ID_OK OnOK
32
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Output Time Control Source file Class
sh_out.h/ccp COutp
Base class Ressource-ID IDD_OUTPUT_TIME
utTime CPropertyPage
rftime.h/c
Control elements Member variables Member functions RF-variables OnInit IDC_EDIT_OUT_T1 m_lOutputTimeStepList IDC_EDIT_OUT_T2 m_dOutputTimeList IDC_EDIT_OUT_T3 m_IOutputTimeStepInterval IDC_EDIT_OUT_T4 m_dOutputTimeInterval IDC_RADIO_OUT_T1 m_iOutputTimeType=0 OnRadioOutT1 output_model=4 IDC_RADIO_OUT_T2 m_iOutputTimeType=1 output_model=5 IDC_RADIO_OUT_T3 m_iOutputTimeType=2 output_model=2 IDC_RADIO_OUT_T4 m_iOutputTimeType=3 output_model=3 IDC_RADIO_OUT_T5 m_iOutputTimeType=4 output_model=1 IDC_RADIO_OUT_T6 m_iOutputTimeType=5 output_model=0 IDC_BUTTON_OUT_T1 OnButtonAddList1 IDC_BUTTON_OUT_T2 OnButtonUpdateList1 IDC_BUTTON_OUT_T3 OnButtonRemoveList1 IDC_BUTTON_OUT_T4 OnButtonRemoveAllList1 IDC_BUTTON_OUT_T5 OnButtonAddList2 IDC_BUTTON_OUT_T6 OnButtonUpdateList2 IDC_BUTTON_OUT_T7 OnButtonRemoveList2 IDC_BUTTON_OUT_T8 OnButtonRemoveAllList2 IDC_LIST_OUT_T1 m_LBOutputTimeStepList OnSelchangeListOutT1 output_times IDC_LIST_OUT_T2 m_LBOutputTimeList OnSelchangeListOutT2 output_timesteps ID_CANCEL ID_OK OnOK
33
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.1.4 Data and GUI Functions
.1.4.1 RF Data Functions
, int found, FILE *f ) t CreateOutputData (void)
void)
2 View
void CRockflowView::OnProjectOutput() void CRockflowView::OnUpdateProjectOutputData(CCmdUI* pCmdUI)
.1.4.3 Document Data Exchange
eRF2void WriteDoc2RF_Output(void); 6.1.4.4 Dialog Data Exchange
OutputFiles itDialog()
oid COutputFiles::OnOK()
COu BOO e:void ::Ovoid COutputTime::O () void e::O ( oid COutputTime::OnButtonRemoveAllList1()
void COutputTime::OnSelchangeListOutT1() void COutputTime::OnButtonAddList2() void COutputTime::OnButtonUpdateList2() void COutputTime::OnButtonRemoveList2() void COutputTime::OnButtonRemoveList2() void COutputTime::OnSelchangeListOutT2() void COutputTime::OnRadioOutT1...6() void COutputTime::OnOK() 6.1.4.5 Auxiliary Functions void COutputTime::SetDialogItems(void)
6 int FctOutput ( char *datainvoid DestroyOutputData ( 6.1.4. Functions
6 void Writ Doc_Output(void);
CBOOL COutputFiles::OnInv
tputTimeL COutputTim COutputTime
:OnInitDialog() nButtonAddList1() nButtonUpdateList1
COutputTim nButtonRemoveList1 ) v
34
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.2 Temporal Profiles
.2.1 Data Concept 6.2.1.1 Da ts Data: Temporal profiles a ne
6.2.1.
So
6
ta Objec
t defi d nodes #OUTPUT_NODES
Data:
DaCo
De
exte utput_nodes; oten-Durchbruchskurven */exte _node ; extern int out
rn int o /* Ausgabe von Knrn long *output _array /* Array der Ausgabe-Knoten */
put_node_anz; /* Arraygroesse */
Temporal profiles at defined elements #OUTPUT_ELEMENTS
int ments; abe von Element-Durchbruchskurven */lon utput_ elements _array; der Ausgabe-Elemente */ int
output_ ele /* Ausgg *o /* Arrayoutput_ elements _anz; /* Arraygroesse */
2 Construction
urce RFD File GUI Dialog ta type Object Object Document nstruction FctOutputNodes
FctOutputElements
struction DestroyOutputData
35
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.2.2 Keyword Description
eyword #OUTPUT_NODES specifies nodes, for which temporal breakthrough curves will be w
arameter Meaning
K
ritten.
P Value
N1 output_nodes
>0
o output ode results ary f
Node results n in ASCII format Value corresp o output time step
0 <0
NN will be written in bin ormat
will be writteonds t
N2 ... *output_node_ar
odesum 100 nodes can be speray
Output na maximlong (
of cified)
K L MENTS specifies elements, reak hrough curves will b
Value Meaning
eyword #OUTPUT_E E for which temporal b te written.
Parameter
N1 output_elements
0 <0
No output Element resul r format
ement resul CIIe corresp ep
>0 Elts will be written in bina y ts will be written in AS format
Valu onds to output time st N2 ... *output_element_array
long
Output elements (a maximum of 100 nodes can be specified)
36
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.2.3 Resource Description
sh_out.h/ccp
OUTPUT_PROFILE_TIME
rfoutput.h/c Source file Class COutputProfileTime Base class CPropertyPage Ressource-ID IDD_
Control elements Member variables Member functions RF-variables OnInitDialog OnOK IDC_EDIT_OUT_P1 m_lOutputNode output_node_array IDC_EDIT_OUT_P2 m_lOuputNodeTimeInterval output_nodes IDC_EDIT_OUT_P3 m_lOutputElement output_element_array IDC_EDIT_OUT_P4 m_lOutputElementTimeInterval output_elements IDC_BUTTON_OUT_P1 OnButtonAddList1 IDC_BUTTON_OUT_P2 OnButtonUpdateList1 IDC_BUTTON_OUT_P3 OnButtonRemoveList1 IDC_BUTTON_OUT_P4 OnButtonRemoveAllList1 IDC_BUTTON_OUT_P5 OnButtonAddList2 IDC_BUTTON_OUT_P6 OnButtonUpdateList2 IDC_BUTTON_OUT_P7 OnButtonRemoveList2 IDC_BUTTON_OUT_P8 OnButtonRemoveAllList2 IDC_LIST_OUT_P1 m_LBOutputNodes OnSelchangeListOutP1 output_node_array IDC_LIST_OUT_P2 m_LBOutputElements OnSelchangeListOutP2 output_element_array
37
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.2.4 Data and GUI Functions
1 RF D
extern int FctOutputNodes ( char *data, int found, FILE *f ); extern int FctOutputElements ( char *data, int found, FILE *f ); int CreateOutputData (void) void DestroyOutputData (void) 6.2.4.2 View Functions void CRockflowView::OnProjectOutput() void CRockflowView::OnUpdateProjectOutputData(CCmdUI* pCmdUI) 6.2.4.3 Document Data Exchange void WriteRF2Doc_Output(void); void WriteDoc2RF_Output(void); 6.2.4.4 Dialog Data Exchange BOOL COutputProfileTime::OnInitDialog() void COutputProfileTime::OnButtonAddList1() void COutputProfileTime::OnButtonUpdateList1() void COutputProfileTime::OnButtonRemoveList1() void COutputProfileTime::OnButtonRemoveAllList1() oid COutputProfileTime::OnSelchangeListOutP1() oid COutputProfileTime::OnButtonAddList2()
eTime::OnButtonUpdateList2() fileTime::OnButtonRemoveList2()
oid COutputProfileTime::OnButtonRemoveAllList2() tputPro nSelchange
utPro :OnOK()
6.2.4.5 Auxilia
6.2.4. ata Functions
vvvoid COutputProfilvoid COutputProvvoid COu fileTime::O ListOutP2() void COutp fileTime:
ry Functions
38
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.3 Output Object Data: New data object for data outpu # OUTPUT_BTC t
Construction Source RFD File GUI Dialog
Data type Object Object Document FctOutput FctOutputNodes FctOutputElements FctOutputSave
Construction
CreateOutputList FctOutputBTC
Destruction DestroyOutputData DestroyOutputList
typedef struct { char *name;
long type; long curve; int index; long mode; long level; long begin_node; long end_node; long step_nodes; long start_element; long end_element; long step_elements; long count_of_values; double *values; double *x; double *y; double *z; double radius; long count_of_points; long distribution_type; } OUTPUT;
39
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
6.4 Backup Files Data: Backup files for model results #OUTPUT_SAVE
int output_save; /* Sicherheitskopien in wechselnde Dateien */ int output_save_file; /* Zeiger fuer Ausgabe-Datei*/
40
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
7 Numerical Method
any a ve methods to solve oundary-value problems flow and es stems c n be classified into nu s or a
volving linear or quasi-linear equations and calculation domains of simple geometry. For non- solutions
uch problems the use of nce Method to
e F s the Finite Volume Method are mployed for spatial discretization of the region. The Galerkin weighted residual approach is used provide a weak formulation of the PDEs. This methodology is more general in application than
ds. The Galerkin approach works also for problems which cannot casted in
There are m lternati initial-b arising fromtransport proc ses in subsurface sy . In general these methods aanalytical and merical ones. Analytical olutions can be obtained f number of problems inlinear equations or problems with complex geometry or boundary conditions, exactusually do not exist, and approximate solutions must be obtained. For snumerical methods is advantegeous. In this chapter we use the Finite Differeapproximate time derivatives. Th inite Element Method as well aetovariational methovariational form.
7.1 Data Concept
bject: NUMERICS y
: numerics.h/c
7.1 Da
ata organization:
OOrganization: arra Source
.1 ta object
np_array[] numerics_sets
typedef stru { int count; char *name;
int gaussian_points; double time_collocation;
_parameter; int lagrange_advection;
ct
int method;
double upwind
double lagrange_quality; } NumericalParameter;
D
41
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
7.1.2 Construction Source RFD File GUI Dialog Data type Object Object Document Construction FctNumericsMethods CreateDefaultNumericsObject Destru stroyAl ics estroyAllNumericsObject ction De lNumer Object D FctNum ods CreateD ltNumericsObject e DestroyAllNumericsObject
7.1.3 RF-FEM variables iables Value
ericsMeth Processes all data headed by keyword #NUMERICS Object identification by name
efau Creates a default NUMERIC object with nam Destroys all NUMERIC objects
Names
RF-Shell varname_numerics_fluid_phase PRESSURE name_n tura umerics_fluid_sa tion SATURATION name_n ature hase TEMPERATURE umerics_temper _pname_n rics_concentrat mpume ion_co onent CONCENTRATION
m_strNUMname
bject names can be defined by the user.
bject configuration:
el Model 0097
Model 0297
Model 0697
Model 0093
Model 0095
Model 0499
O O Unknown Model Model Modindex 0 2 6 SM GM MM SM/RTM GM/RTM MM/RTM SM/HTM SM/MTM DM
0 PRESSURE
1 SATU-RATION
CONCEN-TRATION
CONCEN-TRATION
SATU-RATION
TEMPE-RATURE
CONCEN-TRATION
CONCEN-TRATION
2 CONCEN-TRATION
ToDo - ConfigNumericObjects()
7.1.4 Data Access
hod(char *name); on(char *name, double theta);
Access to data is provided via object name. int GetNumericsMetvoid SetNumericalTimeCollocati
42
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
7.2 Keyword Description
e keyword #NUMERICS specifies numerical parameters for the FEM solution of the correspon-g PDE. Defaults are printed bold.
Parameter Value Meaning
Thdin
N1 .method
0 1 2
Bubnov-Galerkin-Method (Standard FEM) Petrov- hod (Upwind FEM) Euler-Taylor-Galerkin-Method (ETG)
Galerkin-Met
N2 name Object identification .name
by name
N3 1-4 Number of Gaussian integration points .gaussian_points
N4 .time_collocation
[0-1] Time collocation factor
N5 .upwind_parameter
[0-1] Upwind parameter
N6 .lagrange_advection
0 1
Lagrangian scheme for advective terms disabled Lagrangian scheme enabled (Operator-Splitting)
N7 [0,.lagrange_quality
1] 0.95
Parameter of Lagrangian scheme for advection terms to control approximation accuracy
For model 10699 the #NUMERICS keywords are no longer valid. These must be replaced by the eywords:
NUMERICS_GEOELECTRIC N
CS_ITERATION
ach of these keywords can contain a number of optional subkeywords (labeled by a $ sign),
value, which specifies the numerical method for the
For transport calculations: Use Lagrangian scheme for advective transport in 2D-elements . Requires additional parameters.
n scheme for 2D-elements, omit everything else.
k #NUMERICS_PRESSURE #NUMERICS_SATURATION #NUMERICS_CONCENTRATION #NUMERICS_TEMPERATURE ##NUMERICS_DEFORMATIO#NUMERICS_VELOCITY #NUMERI Ewhich are explained in the following: $METHOD The keyword is followed by an integerregarded process: 0 No calculation 1 Finite element calculation 3
(fractures). Compute everything else by FEM4 For transport calculations: Use Lagrangia
Requires additional parameters. 5 For transport calculations only. Use Lagrangian scheme for 2D-elements. Requires additional
parameters. 7 For unsaturated flow (pressure and saturation): The Richards’ formulation is used to compute
pressure and saturation fields.
43
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8 For unsaturated flow (pressure and saturation): The Celia-Richards’ formulation is used to pute pressure and saturation fields. com
For transport calculations only. Finite element calculation with artificial diffusion in critical regions. Reads additionally two double values. The first parameter p1 specifies the
h marks an element as critical. If the parameter is negative, concentrations will be normalised with the span of all concentrations in the system before
e is –0.25, i.e. the front should smoothed it is less than four elements wide.). The second parameter p2 specifies the additional diffusion multiplier. The
iplier is computed from
9
concentration difference whic
comparison (recommended valu
1p1pminmax__c
2p−
diffusion mult , where c_max_min is the (normalised) concentration difference within the regarded element.
GAUSS_POINTS
The keyword is followed by f Gaussian points for
quantity
TRANSPORT_IN_PHASE
he keyword is followed by an integer value (-1 ... number_of_phases). It specifies the number of rded.
ATION
ITERATION_METHOD
he keyword is followed by an integer value (0 ... number_of_phases). It specifies which phase ressure shall be used as reference in multiphase flow calculations.
he keyword is followed by an integer value (-1 ... number_of_phases). It specifies the method to turations in multiphase flow:
-1 All phase saturations are modified, so that they sum up to unity (Not recommended).
11 Same as 9. $
an integer value. It specifies the number ointegration (1 ... 4). At the time given this parameter must be the same for all processes.
$NONLINEAR_COUPLING The keyword is followed by an integer value (0 or 1). It specifies whether the regardedshall be regarded within the loop for non-linear iterations.
$ Tthe fluid phase for which transport processes shall be regarded. For –1 all phases are rega $PLASTIC_DEFORM not yet ... $ not yet ... $REFERENCE_PRESSURE_METHOD Tp $CALC_OTHER_SATURATION_METHOD Tcalculate phase sa
44
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
>=0 The saturation of this phase will be computed from the other phase saturations. It is recommended to use the index of the least moveable phase.
IRR_NODES_CORRECTION
owed by an integer value which specifies the upwinding scheme.
atrices:
g of Gaussian integration points (scaled) , additional parameter (double) for upwinding factor is required. Compare THORENZ (2001).
Upwinding of Gaussian integration points (unscaled) , additional parameter (double) for upwinding factor is required. Compare THORENZ (2001).
to advection matrices only, additional parameter (double) for
matric
1 Streamline upwinding, add
eyword is followed by a s whether masslumping shall be sed to reduce wiggles. This can be very useful for multiphase flow calculations or transport
onts. Compare THORENZ (2001).
h owed predictor shall be used le parameter p1 is required. For
ediction
llowed by an integer value which specifies a scheme to reduce the computed inear iterations.
itional double parameter p1 is required.
$ ... not yet ready for prime time ... $UPWINDING The keyword is foll For the pressure field m 1 Upwindin
2
For the concentration and temperature field matrices: 1 Streamline upwinding, additional parameter (double) for upwinding factor is required. 2 Streamline upwinding applied
upwinding factor is required. Compare THORENZ (2001).
es: For the saturation field
itional parameter (double) for upwinding factor is required. $MASS_LUMPING
n integer value (0 or 1)which specifieThe kucalculations with very steep fr $PREDICTOR T e keyword is foll by an integer value (0 or 1). Specifies that a linear to estimate values for the next timestep. An additional doubp1=1.0 full pr is used. $RELAXATION The keyword is focorrection in non-l 0 No relaxation 1 Fixed relaxation, add
45
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
2 Dynamic relaxation on the basis of field oscillations, 4 additional double parameters are required (recommended: 1. 0.25 0.5 0.5). Experimental, not for common use.
3 Dynamic relaxation on the basis of single node oscillations, 2 additional double parameters are required (recommended: 1. 0.5). Experimental, not for common use.
$EXTRACT_VALUES_FROM_PDE
he keyword is only valid for the pressure field. It is followed by an integer value (0 or 1) which specifies
et
$TIMECOLLOCATION
es t time coential equa
subsubkeywords (labe
A (double) &UPWINDING (dou pecifies the time collocation for the upwinding scheme
nded value: 0.) (double)
e as $GLOBAL, for mass fluxes of compressible fluids 0.0
(double)
&OPEN_BOUNDAR ecifies the time collocation for free outflow boundary
$INTEGRATION_PO
is followed by an integer value, giving the method for integration:
dle value for integration t values for integration
the pressure kernel and in the velocity calculation, the following values are recognized:
&VISCOSITY
$MATRIX_REBUILD
Twhether the results of the last timestep are extracted from the system of linear equations while assembling it. For systems with very large vertical extend this procedure reduces “small differences of large numbers” accuracy problems. $TIMESTEPPING not y ...
Specifi he llocation. The time collocation value can be chosen globally for the regarded partial differ tion and differently for certain parts. These are distinguished by optional
led with &)
&GLOB L Specifies the main time collocation (recommended value: 0.6) ble) S
(recomme &SOURCE Specifies the time collocation for sinks and sources (recommended
value: samleads to better stability)
&COND_BC Specifies the time collocation for conditional boundary conditions (recommended value: 0.)
Y (double) Spconditions (recommended value: 0.)
INTS Specifies how certain variables (specified by a subsubkeyword) are to be treated during integration. The subsubkeyword &NAME 1 Use element mid &NAME 2 Use Gauss poin In &DENSITY &REL_PERM
46
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Specifies the circumstances under whicmatrices is a substantial computation
h the system matrices are rebuild. As setting up the system al effort, choosing a conditional rebuild can significantly
ecrease computation time, though the reduced accuracy must be considered. For further i se THOR ethod not available for multi lations. A llow the sa p1 w pec ier for t garded matrix (de on the FE-Kernel), “ ger ises the who to evaluate the matrix rebuild and p1 to p jus
The following methods are valid:
0 N
1 p1 Rebuild if the characte more than p1 (criterion:
dnformation u ENZ (2001). This m is continua calcu
ll entries fo me scheme:
&NAME method p2 .... pn
here “&NAME” s ifies the identif he re pends method” is an inte value that character n are additional ad tment parameters.
ever rebuild.
ristic value diverges
1pxx ref >− ).
p1 Rebuild if the normalised characteristic value diverges more than p1
(criterion:
2
1pxx/xx2 refref >+− ).
3 p1 p2 Rebuild if both criterion 1 (parameter p1) and criterion 2 (parameter p2) are
fulfilled.
11 p1 p2 The rebuild is triggered by a probability approach. Probability P is derived
from evaluating ( ) 2pref 1p/xxP −= .
12 p1 p2 The rebuild is triggered by a probability approach. Probability P is derived
from evaluating ( ) 2prefref 1p/xx/xx2P +−= .
13 p1 p2 p3 p4 Rebuild if both criterion 11 (parameters p1 and p2) and criterion 12
(parameters p3 and p4) are fulfilled.
For the pressure kernel the following &NAME entries are recognised, the characteristic value is given by the name of the entry: &ELEMENT_MOBILITY_CHANGE &ELEMENT_DENSITY_CHANGE &ELEMENT_SATURATION_CHANGE For the transport kernel the following &NAME entries are recognised, the characteristic value is given by the name of the entry: &ELEMENT_SATURATION_CHANGE &ELEMENT_VELOCITY_CHANGE
47
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
7.3 Resource Description
h/ *.ccp CNumeric
numerics.h/c Source file sh_num.Class Base class CpropertyPage
NUMERIC Ressource-ID IDD_Control elements Member variables Member functions RF-variables OnInitDialog() IDC_EDIT_NUM_1 m_strNUMName .name IDC_EDIT_NUM_2 m_dUpwindParameter .upwind_parameter IDC_EDIT_NUM_3 m_dTimeCollocation .theta_transport IDC_EDIT_NUM_4 m_dLagrangeParameter .lagrange_quality IDC_EDIT_NUM_5 m_iGaussPoints .gaussian_points
g_gaussian_points IDC_CHECK_NUM_1 m_bLagrangianScheme .lagrangian_advection IDC_RADIO_NUM_1 m_iFEMethode .numerical_method ID_OK OnOK() SetStatus_NUMDialog()
48
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
7.4 GUI Fun
ctions
7.4.2 View Functions
ow() oid CRockflowView::OnNumericsHeatTransport() oid CRockflowView::OnNumericMassTransport()
.4.4 Dialog Functions
OOL CNumeric::OnInitDialog() oid CNumeric::OnOK()
.4.5 Auxiliary Function
oid CNumeric::SetStatus_NUMDialog(int m_iType)
7.4.1 RF Data Functions int FctNumericalMethodsNew(char *data, int found, FILE * f) NumericalParameter *CreateDefaultNumericsObject(char *name,int *numerics_sets) void DestroyAllNumericsObject(void)
void CRockflowView::OnNumericsFluidFlvv
7.4.3 Document Data Exchange oid CRockflowView::WriteRF2Doc_Numerics() v
void CRockflowView::WriteDoc2RF_Numerics()
7 Bv
7 v
49
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8 Solver Solving equation systems is a cruicial and most time-consuming point of every simulator. Several
ethods as direct and iterative equation solvers are available. Non-linear PDEs result in linearized. Non-linear problems of interest
ity-driven flow, reactive transport (non-ockflow provides linear as well as non-linear
mcorresponding non-linear equations, which have to beare: Forchheimer flow, gas flow, multiphase flow, denslinear equilibrium and non-equilibrium reactions). Requation solver (Habbar 1995).
8.1 Linear Equation Solver
8.1.1 Data Concept The parameters to control the solution process are contained in the below data structure (object).
r objects are organized in a list (object list). This concept is designed in particular for lving a large number of equation systems as for multiphase-multicomponental processes.
All solveso Object: LINEAR_SOLVER_PROPERTIES [LSP] Object list: LIST_LINEAR_SOLVER_PROPERTIES Source: rfsolver.h/c 8.1.1.1 Data Object
typedef struct { char *name; long type; long maxiter; double eps;
t;
;
long nom; long precond;
store; long long criterium; double theta; long repea double time; long kind; long level
} LINEAR_SOLVER_PROPERTIES;
List *lsp list
*lsp
*lsp
*lsp
typedef struct { char *name; List *lsp_list; long count_of_linear_solver_properties; char **names_of_linear_solver_properties; long count_of_linear_solver_properties_name; double *lsp_vector; } LIST LINEAR SOLVER PROPERTIES;
50
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.1.1.2 Object Names Keywords char *keyword_linear_solver_properties_fluid_phase; char *keyword_linear_solver_properties_water_content; char *keyword_linear_solver_properties_saturation; char *keyword_linear_solver_properties_tracer_component; char *keyword_linear_solver_properties_solute_component; char *keyword_linear_solver_properties_sorbed_component; char *keyword_linear_solver_properties_temperature_phase; Objects char *name_linear_solver_properties_fluid_phase; char *name_linear_solver_properties_water_content; char *name_linear_solver_properties_saturation; char *name_linear_solver_properties_tracer_component; char *name_linear_solver_properties_solute_component; char *name_linear_solver_properties_sorbed_component; char *name_linear_solver_properties_temperature_phase; char *name_linear_solver_properties_solid_phase; Access char *GetDefaultNameLinearSolverPropertiesFluidPhase(int number); char *GetDefaultNameLinearSolverPropertiesWaterContent(int number); char *GetDefaultNameLinearSolverPropertiesSaturation(int number); char *GetDefaultNameLinearSolverPropertiesTracerComponent(int number); char *GetDefaultNameLinearSolverPropertiesSoluteComponent(int number); char *GetDefaultNameLinearSolverPropertiesSorbedComponent(int number); char *GetDefaultNameLinearSolverPropertiesTemperaturePhase(int number); char *GetDefaultNameLinearSolverPropertiesSolidPhase(int number); Makros for predefined LSP object names #define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_FLUID_PHASE(i) \ GetDefaultNameLinearSolverPropertiesFluidPhase(i) #define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_TRACER_COMPONENT(i) \ GetDefaultNameLinearSolverPropertiesTracerComponent(i) #define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_SOLUTE_COMPONENT(i) \ GetDefaultNameLinearSolverPropertiesSoluteComponent(i) #define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_SORBED_COMPONENT(i) \ GetDefaultNameLinearSolverPropertiesSorbedComponent(i) #define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_SATURATION(i) \ GetDefaultNameLinearSolverPropertiesSaturation(i) #define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_WATER_CONTENT(i) \ GetDefaultNameLinearSolverPropertiesWaterContent(i) #define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_TEMPRATURE_PHASE(i) \ GetDefaultNameLinearSolverPropertiesTemperaturePhase(i)
51
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
#define DEFAULT_NAME_LINEAR_SOLVER_PROPERTIES_SOLID_PHASE(i) \ GetDefaultNameLinearSolverPropertiesSolidPhase(i)
52
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Construction of LSP names
inearSolverPropertiesNames (char *sys_name, int number_of_phases, int number_of_components);
void Fr es(void); 8.1.1.3 List
void Cr sList(); void DestroyLi
• Con int FctL earSolverProperties( char *data, int found, FILE * f); // Master function
t FctLinearSolverPropertiesPressure( char *data, int found, FILE * f); inearSolverPropertiesSaturation(char *data, int found, FILE * f);
t FctLinearSolverPropertiesConcentration(char *data, int found, FILE * f); ment( char *data, int found, FILE * f);
• Construction according to number of phases and number of components int CreateLinearAllSolverProperties(int number_of_phases, int number_of_components)
int CreateLinearSolverPropertiesPressure(int number_of_phases) int CreateLinearSolverPropertiesSaturation(int number_of_phases) int CreateLinearSolverPropertiesConcentration(int number_of_components) int CreateLinearSolverPropertiesSorbedConcentration(int number_of_components)
The number of LSP objects depends on the number of phases and components.
Destruction
Destruction of objects by list destruction int DestroyLinearSolverProperties(void)
8.1.1.4 Data Access
LINEAR_SOLVER_PROPERTIES *GetLinearSolverProperties (char *name);
void InitDefaultL
eeDefaultLinearSolverPropertiesNam
Construction
eateLinearSolverPropertie
nearSolverPropertiesList();
Object
struction during input of RFD file
ininint FctLinint FctLinearSolverPropertiesDisplace
53
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.1.1.5 Implementation Construction
CreateLinearSolverPropertiesList() FctLinearSolverProperties() CreateLinearAllSolverProperties()
guration Confi
ConfigSolverProperties(InitDefaultLinea Pro
Access
LINEAR_SOLVER_PROP TIES *G arSolverProperties (char *name) DEFAULT_NAME_LINEA SOLVE OPERTIES_FLUID_PHASE(i)
Destruction
stroyLinearSolverPropertiesListFreeDefaultLinearSolverPr
) rSolver pertiesNames()
ER etLineR_ R_PR
De () opertiesNames()
54
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.1.2 Keyword Descript Following keywords can be used to specify properties of linear equation solvers
#LINEAR_SOLVER_PROPERTIES_PRESSURE #LINEAR_SOLVER_PROPERTIES_SATURATION #LINEAR_SOLVER_PROPERTIES_CONCENTRATION #LINEAR_SOLVER_PROPERTIES_DISPLACEMENT
Parameter FEM Value Meaning
ion
N1 .type
1 2 3 4 56 7 8 9 10
Solver method: Gaussian (direct) BiCGSTAB (default for transport) BiCG QMRCGSTAB CG (default for flow) CGNR CGS Richard JOR SOR
N2a if N1=2,3,4,5,6 or7 .nom
0 1 2
Error norm: - Maximum norm - Unity norm - Euclidean norm
N3a .precond
0 1
Preconditioning: No preconditioning Diagonal preconditioning
N4a .maxiter
1000 Maximum number of solver iterations
N5a .repeat
Number of repeated solving
N6a .criterium
0 1 2 3 4
Type of error calculation: absolute error relative error with respect to the RHS vector |b0| relative error with respect to the residuum |r0| variable error (if |r0|<1 then 0 else 2) relative error with respect to actual residuum |r|/|x
N7a .eps
1.e-9 Error tolerance for equation solver iterations
N8a .kind
N9a if N1=2 .time
Validity time interval
N10a .store
1 2
Matrix storage concept: - full matrix - sparse matrix
N3b - if N1=8,9 or 10 .nom
Error norm:
N4b .precond
0 1
Preconditioning: No preconditioning Diagonal preconditioning
N5b .maxiter
1000 Maximum number of solver iterations
N6b .repeat
Number of repeated solving
N7b .criterium
0 1 2 3 4
Type of error calculation: absolute error relative error with respect to the RHS vector |b0| relative error with respect to the residuum |r0| variable error (if |r0|<1 then 0 else 2) relative error with respect to actual residuum |r|/|x
55
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
N8b .eps
1.e-9 Error tolerance for equation solver iterations
N9b .theta
2 0 [0,1] Relaxation factor for Richardson,JOR,and SOR solver
56
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.1.3 Ressource Description
sol.h/ccp CSolverLinear
rfsolver.h/c LINEAR_SOLVER_PROPERTIES
Source file sh_Class Base class CPropertyPage Ressource-ID IDD_SOLVER_LINEAR Control elements Member variables Member RF-variables
functions OnInitDialog() IDC_EDIT_SOL_1 m_strName .name IDC_EDIT_SOL_2 m_dRelaxationFactor .theta IDC_EDIT_SOL_3 m_dErrorTolerance .eps IDC_EDIT_SOL_4 m_lMaximumIterations .maxiter IDC_EDIT_SOL_5 m_lRepeatedSolving .repeat IDC_EDIT_SOL_6 m_dValidTimeInterval .time IDC_CHECK_SOL_1 m_bRenumber umnummerierer IDC_CHECK_SOL_2 m_bPreconditioner .precond IDC_CHECK_SOL_3 m_bMatrixStorage .store IDC_RADIO_SOL_1 m_iSolverTypeRadioButton .type IDC_RADIO_SOL_E1 m_iErrorType .criterium OnOK()
Recommendations: Use BiCGSTAB not for steady flow (large iteration number due to insufficient start approximation)
57
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.1.4 GUI Functions 8.1.4.1 View Functions
mdUI* pCmdUI) oid CRockflowView::OnSolverFluidFlowSaturation()
CCmdUI* pCmdUI)
dUI* pCmdUI) ssTransport()
UpdateSolverMassTransport(CCmdUI* pCmdUI)
.1.4.2 Dialog Data Exchange and Messages
String CSolverLinearNew::Get_RF2Dialog_Object(CString m_strName) oid CSolverLinearNew::Set_Dialog2RF_Object(void)
oid CSolverLinearNew::DoDataExchange(CDataExchange* pDX) OOL CSolverLinearNew::OnInitDialog() oid CSolverLinearNew::OnOK()
.1.4.3 Auxiliary Functions
t CSolverLinearNew::GetObjectType(int type) t CSolverLinearNew::SetObjectType(int selected_radio_button)
void CRockflowView::OnSolverFluidFlowPressure() oid CRockflowView::OnUpdateSolverFluidFlowPressure(CCv
vvoid CRockflowView::OnUpdateSolverFluidFlowSaturation(
lowvoid CRockf View::OnSolverHeatTransport() lverHeatTransport(CCmvoid CRockflowView::OnUpdateSo
oid CRockflowView::OnSolverMavvoid CRockflowView::On 8 Cv vBv 8 inin
58
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.2 Non-Linear Solver
Concept
.2.1.1 Data Object
8.2.1 Data Non-linear solver are developed to solve non-linear PDEs. Object: NONLINEAR_SOLVER_PROPERTIES Object list: LIST_NONLINEAR_SOLVER_PROPERTIES Source: rfsolver.h/c 8
List *nlsp list typed c
ef struct { har *name;
g type; g maxiter;
riterium; abs_eps; rel_eps; rel_cg_eps; heta; mble; ime;
long kind; } NONLINEAR_SOLVER_PROPERTIES;
lon lon
*nlsp long c double double double double t
*nlsp int asse double t
*nlsp
typedef struct { char *name; List *nlsp_list; long count_of_nonlinear_solver_properties; char **names_of_nonlinear_solver_properties; long count_of_nonlinear_solver_properties_name; double *nlsp_vector; } LIST NONLINEAR SOLVER PROPERTIES;
59
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.2.1.2 Object Names Keywo
_properties_water_content; ar *keyword_nonlinear_solver_properties_saturation; ar *keyword_nonlinear_solver_properties_tracer_component;
_solver_properties_solute_component; ar *keyword_nonlinear_solver_properties_sorbed_component;
*keyword_nonlinear_solver_properties_temperature_phase;
ar *name_nonlinear_solver_properties_fluid_phase; me_nonlinear_solver_properties_water_content; me_nonlinear_solver_properties_saturation;
s_tracer_component; s_solute_component;
ar *GetDefaultNameNonLinearSolverPropertiesFluidPhase(int number);
ertiesTracerComponent(int number); ertiesSoluteComponent(int number);
ar *Gar *G
redefined LSP object names
ER_PROPERTIES_FLUID_PHASE(i) \ tiesFluidPhase(i)
define DEFAULT_NAME_NONLINEAR_SOLVER_PROPERTIES_TRACER_COMPONENT(i) \ GetDefaultNameNonLinearSolverPropertiesTracerComponent(i)
_NONLINEAR_SOLVER_PROPERTIES_SORBED_COMPONENT(i) \ GetDefaultNameNonLinearSolverPropertiesSorbedComponent(i)
T(i) \
define DEFAULT_NAME_NONLINEAR_SOLVER_PROPERTIES_SATURATION(i) \ GetDefaultNameNonLinearSolverPropertiesSaturation(i) #define DEFAULT_NAME_NONLINEAR_SOLVER_PROPERTIES_WATER_CONTENT(i) \ GetDefaultNameNonLinearSolverPropertiesWaterContent(i) #define DEFAULT_NAME_NONLINEAR_SOLVER_PROPERTIES_TEMPRATURE(i) \ GetDefaultNameNonLinearSolverPropertiesTemperaturePhase(i)
rds char *keyword_nonlinear_solver_properties_fluid_phase; char *keyword_nonlinear_solverchchchar *keyword_nonlinearchchar Objects chchar *nahar *nac
char *name_nonlinear_solver_propertiechar *name_nonlinear_solver_propertiechar *name_nonlinear_solver_properties_sorbed_component; char *name_nonlinear_solver_properties_temperature_phase; Access chchar *GetDefaultNameNonLinearSolverPropertiesWaterContent(int number); har *GetDefaultNameNonLinearSolverPropertiesSaturation(int number); c
char *GetDefaultNameNonLinearSolverPropchar *GetDefaultNameNonLinearSolverPropch etDefaultNameNonLinearSolverPropertiesSorbedComponent(int number);
etDefaultNameNonLinearSolverPropertiesTemperaturePhase(int number); ch Makros for p #define DEFAULT_NAME_NONLINEAR_SOLV GetDefaultNameNonLinearSolverProper# #define DEFAULT_NAME #define DEFAULT_NAME_NONLINEAR_SOLVER_PROPERTIES_SOLUTE_COMPONEN GetDefaultNameNonLinearSolverPropertiesSoluteComponent(i) #
60
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Construction of LSP names
esNames (char *sys_name, int number_of_phases, int number_of_components);
jekt-Namen konfigurieren */
ist
ar *data, int found, FILE * f); har *data, int found, FILE * f);
on(char *data, int found, FILE * f);
char *name);
Co components int CreateNonLinearSolverProperties(void)
The number of LSP objects depends on the number of phases and components. - Destruction Destruction of objects by list destruction int DestroyNonLinearSolverProperties(void) 8.2.1.4 Data Access
NONLINEAR_SOLVER_PROPERTIES *GetNonLinearSolverProperties (char *name);
void InitDefaultNonLinearSolverProperti
/* Alle Vordefinierte nonlineare Loesereigenschaften-Oboid FreeDefaultNonLinearSolverPropertiesNames(void); v
/* Destruktor */ 8.2.1.3 Construction L
void CreateNonLinear tiesList(); SolverPropervoid DestroyNonLinearSolverPropertiesList(); Object - Construction during input of RFD file int FctNonLinearSolverPropertiesPressure( ch
lverPropertiesSaturation(cint FctNonLinearSoint FctNonLinearSolverPropertiesConcentrati int FctNonLinearSolverProperties(char *data, int found, FILE * f, - nstruction according to number of phases and number of
61
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.2.2 Solver Implementation
PICARD text) /*------
/* 1 - Neuaufbau des Gleichungssystems */ SetMatrixToZeroLinearSolver(ls);
SetRightSideVectorTo lv ExecuteAssembleFunctionLinearSolver(ls); MakeGS_ASM_NEW ( double *re gebnis, double aktuelle_zeit )
k_rel_iteration = CalcNonl ex,ASMGetNodePress1,NULL);
/ ----------------------------- ------- - Loesen des linearisierten Gleichungssystems */ Ite / iter = ExecuteLinearSolver(ls, ltext); /* TransferNodeVals(x,ind); */ /*- -------------------------------------- berechnung near_convergence_type case 1: error = MVekDist(x, xs, n) / -------------------------------------- / abfrage */ (error <= nonlinear_eps || k >= nonlinear_maxiter) {
_METHOD(long ind, LINEAR_SOLVER * ls, char *l
-----------------------------------------------------------------*/
ZeroLinearSo er(ls);
chts, double *erinearFlowPermeability1(ind
*---- ------- ------------------------*/ /* 2/* Speichern des Ergebnisses des rationsschritts in nval[ind] *
---/* 3 - Fehler----- ------------------------*/
) { */
switch (nonli
;
*--------- ------------------------*/* 4 - Fehlerif
62
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.2.3 Keyword Description Following keywords can b ify properties non-linear equ
LINEAR_SO ES_PRESSURE NEAR_SOL RATION
R_SOL CONCE
Meaning
e used to spec of ation solvers
#NON LVER_PROPERTI#NONLI VER_PROPERTIES_SATU#NONLINEA VER_PROPERTIES_ NTRATION
Parameter FEM Value
N1 .type
Solver m1 - Pic2 - N
eth : ard fixpoint iteration
ewton-Ra hson method
od
pN2 .maxiter
100 Maximum nu ber of solver item rations
N3 .criterium
T0 - d1 - di
ype of erro alculation: ifference result vector fference residuum
r cinin
N4 .abs_eps 1.e-6 Absolute err lerance for non-linear solver
ions or to
iteratN.rel_ep
5 s 1.e-3 e for non-linear solver
iterations Relative error toleranc
N6 .rel_cg_eps 0.0 Combined error tolerance for non-linear solver
iterations with respect to linear solver iterations N7 .assemble 1 Number of iterations before reassembling the
system of equation N8 .time
-1 Validity time
N9 .kind
0 Validity time model
63
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.2.4 Ressource Description
_sol.h/ccp CSolverNonLinear
rfsolver.h/c NONLINEAR_ SOLVER_PROPERTIES
Source file shClass Base class CPropertyPage Ressource-ID IDD_SOLVER_NONLINEAR
Control elements Member variables Member RF-variables functions
OnInitDialog() IDC_EDIT_NLSP_1 m_strName .name IDC_EDIT_NLSP_2 m_lMaximumIterations .maxiter IDC_EDIT_NLSP_3 m_dAbsoluteError .abs_eps IDC_EDIT_NLSP_4 m_dRelativeError .rel_eps IDC_EDIT_NLSP_5 m_dCombinedError .rel_cg_eps IDC_EDIT_NLSP_6 m_lReassembling .assemble IDC_EDIT_NLSP_7 m_iTimeModel .kind IDC_EDIT_NLSP_8 m_dTimeInterval .time IDC_RADIO_NLSP_E1 m_iSolverMethod .type IDC_RADIO_NLSP_M1 m_iErrorType .criterium IDC_CHECK_NLSP_1 m_bCombinedError OnOK()
64
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.2.5 GUI Functions
.2.5.1 View Functions
teSolverFluidFlowPressure(CCmdUI* pCmdUI) oid CRockflowView::OnSolverFluidFlowSaturation() oid CRockflowView::OnUpdateSolverFluidFlowSaturation(CCmdUI* pCmdUI)
olverHeatTransport() oid CRockflowView::OnUpdateSolverHeatTransport(CCmdUI* pCmdUI)
ow sport(CCmdUI* pCmdUI)
.2.5.2 Dialog Data Exchange and Messages
String CSolverLinearNew::Get_RF2Dialog_Object(CString m_strName) oid CSolverLinearNew::Set_Dialog2RF_Object(void)
oid CSolverLinearNew::DoDataExchange(CDataExchange* pDX) OOL CSolverLinearNew::OnInitDialog() oid CSolverLinearNew::OnOK()
.2.5.3 Auxiliary Functions
t CSolverLinearNew::GetObjectType(int type) t CSolverLinearNew::SetObjectType(int selected_radio_button)
8 void CRockflowView::OnSolverFluidFlowPressure() void CRockflowView::OnUpdavvvoid CRockflowView::OnSvvoid CRockflowView::OnSolverMassTransport() void CRockfl View::OnUpdateSolverMassTran 8 Cv vBv 8 inin
65
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.3 Iteration Process
general, multiphase-multicomponental processes cover a system of coupled non-linear PDEs. To low e can
ITERATION_PROPERTIES (IP) bject list: LIST_ITERATION_PROPERTIES
Insolve the whole system of equations (i.e. , mass and/or heat transport equaf tions), wspecify iteration parameters.
8.3.1 Data Concept Object: OSource: rfiter.h/c 8.3.1.1 Data Organization
List *ip list
*ip
*ip
*ip
typedef struct { char *name; List *ip_list; long count_of_iteration_properties char **names_of_iteration_properti long count_of_iteration_properties double *ip_vector;
PERTIES; } LIST_ITERATION_PRO
6
typedef struct {
double fac_eps; double exp_eps; long kind;
ps;
*values;
_PROPERTIES;
char *name; long type; int norm; long maxiter; double abs_eps; double rel_eps; double var_eps; double begin_eps; double end_eps;
long criterium;
double rel_cg_e double theta; double time; long level; long count_of_values; double long distribution_type; } ITERATION
; es; _name;
6
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.3.1.2 Object Names
ords
se = "ITERATION_PROPERTIES_PRESSURE"; WATER_CONTENT";
char *ke IES_SATURATION"; = "ITERATION_PROPERTIES_CONCENTRATION";
PERTIES_SORBED_CONCENTRATION"; ar *key SOLUTE_CONCENTRATION";
ord_iteration_properties_temperature_phase = "ITERATION_PROPERTIES_TEMPERATURE_PHASE";
char *naar *name_iteration_properties_water_content = "ITERATION_PROPERTIES_WATER_CONTENT";
e_iteration_properties_saturation = "ITERATION_PROPERTIES_SATURATION"; ar *name_iteration_properties_tracer_component = "ITERATION_PROPERTIES_CONCENTRATION";
nent = "ITERATION_PROPERTIES_SORBED_CONCENTRATION"; ent = "ITERATION_PROPERTIES_SOLUTE_CONCENTRATION";
ar *name_iteration_properties_temperature_phase = "ITERATION_PROPERTIES_TEMPERATURE_PHASE";
ar *GetDefaultNameIterationPropertiesSaturation(int number);
ar *GetDefaultNameIterationPropertiesSoluteComponent(int number);
ar *GetDefaultNameIterationPropertiesTemperaturePhase(int number);
akros for predefined IP object names
define DEFAULT_NAME_ITERATION_PROPERTIES_FLUID_PHASE(i) \ luidPhase(i)
_PROPERTIES_TRACER_COMPONENT(i) \ GetDefaultNameIterationPropertiesTracerComponent(i) define DEFAULT_NAME_ITERATION_PROPERTIES_SOLUTE_COMPONENT(i) \
rationPropertiesSoluteComponent(i) define DEFAULT_NAME_ITERATION_PROPERTIES_SORBED_COMPONENT(i) \
GetDefaultNameIterationPropertiesSaturation(i) define DEFAULT_NAME_ITERATION_PROPERTIES_WATER_CONTENT(i) \
GetDefaultNameIterationPropertiesWaterContent(i) #define DEFAULT_NAME_ITERATION_PROPERTIES_TEMPRATURE_PHASE(i) \ GetDefaultNameIterationPropertiesTemperaturePhase(i) Construction of IP names void InitDefaultIterationPropertiesNames
(char *sys_name, int number_of_phases, int number_of_components); /* Alle Vordefinierte lineare Loesereigenschaften-Objekt-Namen konfigurieren */
void FreeDefaultIterationPropertiesNames(void); /* Destruktor */
Keyw char *keyword_iteration_properties_fluid_phachar *keyword_iteration_properties_water_content = "ITERATION_PROPERTIES_
yword_iteration_properties_saturation = "ITERATION_PROPERTchar *keyword_iteration_properties_tracer_component char *keyword_iteration_properties_sorbed_component = "ITERATION_PRO
word_iteration_properties_solute_component = "ITERATION_PROPERTIES_chchar *keyw Objects
me_iteration_properties_fluid_phase = "ITERATION_PROPERTIES_PRESSURE"; chchar *namchchar *name_iteration_properties_sorbed_compochar *name_iteration_properties_solute_componch Access char *GetDefaultNameIterationPropertiesFluidPhase(int number); char *GetDefaultNameIterationPropertiesWaterContent(int number); chchar *GetDefaultNameIterationPropertiesTracerComponent(int number); chchar *GetDefaultNameIterationPropertiesSorbedComponent(int number); ch
M # GetDefaultNameIterationPropertiesF#define DEFAULT_NAME_ITERATION # GetDefaultNameIte# GetDefaultNameIterationPropertiesSorbedComponent(i) #define DEFAULT_NAME_ITERATION_PROPERTIES_SATURATION(i) \ #
67
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.3.1.3 Construction List void Cr
ustaende */ extern ende */ Group
t DestroyIterationPropertiesListGroup(char *name); ERATION_PROPERTIES-Objekte der Gruppe NAME */
O - truction during input of R file int FctIterationProperties ( cha ata, inint Fct tiesPressure( char *i ropertiesSatura n(charint FctIterationPropertiesConce ation(c d, FILE * f); int FctIterationPropertiesSorbe ncentr nt found, FILE * f); - uction according to number of phases and number of components int CreateIterationProperties(number_of_phases, number_of_components);
ber of IP object depend components. - Destruction Destruction of objects by list tioni erationPropertie 8.3.1.4 Data Access I TION_PROPERTIES *Get rationP r *name,ITERATION_PROPERTIES *ip);
eateIterationPropertiesList(); /* Erzeugt leere unbenannte Liste von Anfangszvoid DestroyIterationPropertiesList(); /* Zerstoert unbenannte Liste von Anfangszusta
in/* Zerstoert saemtliche IT
bject
Cons FD
r d * t found, FILE *f ); data, int found, FILE * f); IterationProper
nt FctIterationP tio *data, int found, FILE * f); ntr har *data, int foundCo ation(char *data, i
Constr
The num s s on the number of phases and
destruc nt DestroyIt s(void)
TERA Ite ropertiesGroup(cha
68
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.3.2 Keyword Description Following keywords can be u iteration pr erties:
RATION_PROPE E ION_PROPE
_PROPE N #ITERATION_PROPERTIES_CONCENTRATION #ITERATION_PROPE TIES_SORBED_CONCENT
ROPE TE_CONCENTROPE H SE
D ed bo
FE aning
sed to specify ocess prop
#ITE RTIES_PRESSUR#ITERAT RTIES_WATER_CONTENT #ITERATION RTIES_SATURATIO
R RATION ATION #ITERATION_P RTIES_SOLU R
#ITERATION_P RTIES_TEMPERATURE_P A
efault values are print ld.
Parameter M Value Me
N1 .type
Iterat0 - Absolu1 - Relative2 - Variable e
ion proc hod: te err tolerance error tolerance
rror tolerance
ess metor
N2a (if N1=0) .norm
Norm of 0 - M1 - E
error alculation: aximum norm uklidean norm
c
N3a er
000 Maximum num rocess it ations 1 ber of p er.maxit
N4a .abs_eps
1.e-9 Absolute error tolerance
N5a .kind
0
Time validity control: - always valid
N2b (if N1=1) .norm
0 1
Norm of error calculation: - Maximum norm - Euklidean norm
N3b .maxiter
1000 Maximum number of process iterations
N4b .rel_eps
1.e-9 Relative error tolerance
N5b .kind
0
Time validity control: - always valid
N2c (if N1=2) .norm
0 1
Norm of error calculation: - Maximum norm - Euklidean norm
N3c .maxiter
1000 Maximum number of process iterations
N4c .begin_eps
double Start error tolerance
N5c .end_eps
double Final error tolerance
N6c .fac_eps
double Error tolerance factor
N7c .exp_eps
double Error tolerance exponent
N8c .kind
0
Time validity control: - always valid
69
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.3.3 Ressource Description
sh_sol.h/ccp CSolverIteration CPropertyPage
rfiter.h/c ITERATION_PROPERTIES
Source file Class Base class Ressource-ID IDD_SOLVER_ITERATION
Control elements Member variables Member RF-vafunctions
riables
OnInitDialog() IDC_EDIT_SOL_IP_1 m_strName .name IDC_EDIT_SOL_IP_2 m_lMaximumIterations .maxiter IDC_EDIT_SOL_IP_3 m_dAbsoluteError .abs_eps IDC_EDIT_SOL_IP_4 m_dRelativeError .rel_eps IDC_EDIT_SOL_IP_5 m_dErrorStart .begin_eps IDC_EDIT_SOL_IP_6 m_dErrorFinal .end_eps IDC_EDIT_SOL_IP_7 m_dErrorFactor .fac_eps IDC_EDIT_SOL_IP_8 m_dErrorExponent .exp_eps IDC_EDIT_SOL_IP_9 m_iErrorTimeControl .kind IDC_EDIT_SOL_IP_10 m_dErrorTimeInterval .time IDC_RADIO_SOL_IP_M1 m_iIterationMethod .type IDC_RADIO_SOL_IP_N1 m_iErrorNorm .norm IDC_RADIO_SOL_IP_T1 m_iErrorType .criterium OnOK()
70
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
8.3.4 GUI Functions 8.3.4.1 View Functions
oid CRockflowView::OnUpdateSolverFluidFlowSaturation(CCmdUI* pCmdUI) void CRockflowView::OnSolverHeatTransport() void CRockflowView::OnUpdateSolverHeatTransport(CCmdUI* pCmdUI) void CRockflowView::OnSolverMassTransport() void CRockflowView::OnUpdateSolverMassTransport(CCmdUI* pCmdUI)
.3.4.2 Dialog Data Exchange and Messages
String CSolverIteration::Get_RF2Dialog_Object(CString m_strName) ialog2RF_Object(void)
oid CSolverIteration::DoDataExchange(CDataExchange* pDX)
It
void CSolverIteration::StatusDialogResourceElements(void)
void CRockflowView::OnSolverFluidFlowPressure() void CRockflowView::OnUpdateSolverFluidFlowPressure(CCmdUI* pCmdUI) oid CRockflowView::OnSolverFluidFlowSaturation() v
v
8 Cvoid CSolverIteration::Set_D vBOOL CSolverIteration::OnInitDialog() void CSolver eration::OnOK() 8.3.4.3 Auxiliary Functions
71
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
9 Initial Conditions
can be specified for satura e, t ture and concentration. mperatur refer to phases and concentration refers to
trol h l as well as and compo
Initial conditions tion, fluid pressur emperaSaturation, fluid pressure and te ecomponents. The available menus are con ed by the selected p ysico-chemical modeby the specified number of phases nents.
9.1 Data Concept
bject list: LIST_INITIAL_CONDITIONS ources: rfinitc
.1.1 Data Organization
Objects building groups, e.g. initial conditions for fluid pressure of first phase (PRESSURE1) or initial conditions for third chemical sorpted component (SORB_CONC_3). Numbers are used to the object group names to specify phase or component.
Object: INITIAL_CONDITIONS OS 9
List *ic list
typedef struct { char *name; long type;
element; long end_element;
long count_of_values; double *values; long count_of_points; double *x; double *y; double *z; double radius; long distribution_type;
*ic
*ic
long mode; long begin_node; long end_node; *ic long step_nodes; long begin_
long step_elements;
typedef struct { char * List * long count_of_ics;
name; ic_list;
char **names_of_ics; } INITIAL_CONDITIONS; long count_of_ics_name;
} LIST_INITIAL_CONDITIONS;
72
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
9.1.2 Object Names RF-FEM variable RF-Shell variable Value name_ PRESSURE initial_condition_fluid_phase name_ WATER_CONTENT initial_condition_water_content name_ SATURATION initial_condition_saturation name_ CONC_ initial_condition_tracer_component name_initial_condition_solute_component SOLU_CONC_ name_initial_condition_sorbed_component SORB_CONC_ name_initial_condition_temperature_phase
nitialConditions ic.m_strICName
TEMPERATURE
CIm_
Data type: char * Data type: Cstring 9.1.3 Data truction 9.1.3.1 List void CreateInitialConditionsList(void) void DestroyInitialConditionsList(void) 9.1.3.2 Grou int DestroyIni onsListItem(char *name); 9.1.3.3 Obje From RFD file
int Fct nditionNew(char *data,FILE *f,char *ic_name,char *string,int found) B ialog
ITIA IONS* AddInitialC
i yIni Object( ng co
9.1.4 Data ess INITIAL_CON NS *GetInitialConditionsList(char *name,INITIAL_CONDITIONS *ic); INITIAL_CON *GetInitialConditionsObject(long count,char *name); I CON ONS *GetInitialC nditio
Cons
p
tialConditi
ct
InitialCo
y GUI dIN
L_CONDIT onditionsObject(char *name);
nt Destro tialConditions lo unt,char *name);
Acc
DITIODITIONS
NITIAL_ DITI o nsObjectCount(long count,char *name);
73
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
9.2 Keyword Description The following keywords are a ify initial conditions for fluid flow, he t transport and
ransport.
L_CONDITIONCONDITION
L_CONDITIONS_TEMPERATURE L_CONDITION TRATION
se of the key conditions for corresponding phases a
F Variable Meaning
vailable to spec amass t
#INITIA S_PRESSURE #INITIAL_ S_SATURATION #INITIA#INITIA S_CONCEN
By repeatedly u words, initial nd compo-nents are specified. Parameter R Defaults
N1 type Initial value is specified for all nodes 0
N2 mode
Overwrite Superimpose
0 1
if N1=0 values[0] Constant value to all nodes if N1=1 begin_node
es[0] Value for individu nodes given by node num
valu al ber first
node if N1=2 x[0]
z[0]
dividu nodes given by coordinates y[0]
values[0]
Value for in al
if N1=3 begin_node end_node step_nodes values[0]
Linear value distr two given First node, secon f nodes in b
ibution betwee node, count o
n nodes: d etween
if N1=4 x[0] y[0] z[0] values[0] x[1] y[1] z[1] values[1]
Linear value distr en by coordinates ibution on a line giv
if N1=5 z[0] values[0]
Hydrostatic distribution to all nodes by pressure
if N1=6 z[0] values[0]
Hydrostatic distribution to all nodes by z-coordinate
if N1=7 begin_node distribution_type radius values[0]
Block entries by node number
if N1=8 x[0] y[0] z[0] distribution_type radius values[0]
block entries by node coordinates
if N1=9 x[0] y[0] z[0] x[1] y[1] z[1] x[2] y[2] z[2] values[0]
Constant value at a plain given by coordinates
74
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
9.3 Ressource Description Source file Class Base class Ressource-ID
sh_ic.h/ *.ccp CInitialConditions CPropertyPage IDD_INITIAL_CONDITIONS
Control elements Member variables Member functions RF-variables IDC_EDIT_IC_1 m_strICName ->name IDC_EDIT_IC_2 m_lNode1 ->begin_node IDC_EDIT_IC_3 m_lNode2 ->end_node IDC_EDIT_IC_4 m_lElement1 ->begin_element IDC_EDIT_IC_5 m_lElement2 ->end_element IDC_EDIT_IC_6 m_iStepInterval IDC_EDIT_IC_7 m_dPoint1x ->x[0] IDC_EDIT_IC_8 m_dPoint1y ->y[0] IDC_EDIT_IC_9 m_dPoint1z ->z[0] IDC_EDIT_IC_10 m_dPoint2x ->x[1] IDC_EDIT_IC_11 m_dPoint2y ->y[1] IDC_EDIT_IC_12 m_dPoint2z ->z[1] IDC_EDIT_IC_13 m_dValue1 ->values[0] IDC_EDIT_IC_14 m_dValue2 ->values[1] IDC_EDIT_IC_15 m_dRadius ->radius IDC_EDIT_IC_16 m_dStandardDeviation IDC_EDIT_IC_18 m_strICComponent IDC_LIST_IC m_ListICPressure OnSelchangeICList() IDC_RADIO_IC_TYPE1- IDC_RADIO_IC_TYPE7
m_iICSelectedType OnRadioIC1()- OnRadioIC7()
->type
IDC_RADIO_IC_MODE1- IDC_RADIO_IC_MODE2
m_iICMode ->mode
IDC_RADIO_IC_QUANTITIES1 IDC_RADIO_IC_QUANTITIES2
m_iICQuantities
IDC_BUTTON_IC_ADD OnButtonICAdd() IDC_BUTTON_IC_UPDATE OnButtonICUpdate() IDC_BUTTON_IC_REMOVE OnButtonICRemove() IDC_BUTTON_IC_REMOVEALL OnButtonICRemoveAll() IDC_BUTTON_IC_SAVE OnButtonICSaveData()
Example: #INITIAL_CONDITIONS_PRESSURE 0 0 3.0000e+000 1 0 2 1.0000e+000 2 0 1.0000e+000 2.0000e+000 3.0000e+000 1.0000e+001 2 0 3.0000e+000 3.0000e+000 3.0000e+000 1.1000e+001 5 0 4.0000e+000 4.0000e+000
75
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
9.4 GUI Data Concept
9.4.1 Class Representation
CInitialConditions
9.4.2 Document Data Concept Document Data Exchange (RF-FEM----CRockflowDoc---RF-Shell) The dialog data are stored in 2-dimensional arrays of CStringLists in CRockflowDoc: CStringList m_strlstListICPressure [0][0] with: d=0 for fluid dialog selected
r=0 for first phase
Tranfers: CRockflowDoc---RF-Shell:
CInitialConditions::OnInitDialog() pActualList =&(m_pDoc-> strlstListICPressure [0][0])
while(pos) m_ListICPressure.AddString(pAktualList->GetNext(pos));
CInitialConditions::OnOK() pAktualList=&(m_pDoc->m_strlstListICPressure[0][0]); //For all entries in Listbox: m_ListICPressure.GetText(i,tmp);
pAktualList->AddTail(tmp); RF-FEM---CRockflowDoc: CRockflowView::OnFileSave() Write_DocToRF_InitialConditions()
{ //for all entries in the CStringLists for all registers an INITIAL_CONDITIONS object(struct) is created and inserted into INITIAL_CONDITIONS_LIST}
CRockflowView::OnFileOpen() CRockflowDoc::WriteRFtoDoc_InitialConditions()
{ // for all INITIAL_CONDITIONS in LIST_INITIAL_CONDITIONS a String is created and inserted in the correct CStringList in Document depending on INITIAL_CONDITION.name}
ocument Concept Data Flow
D
r
OnInitDialog()
OnOK())
class CRockflowDoc { CStringArray[dialog][registe]
77
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
9.4.3 Object Data Concept
ata are exchanged between dialog and RF-Object INITIAL_CONDITIONS.
D
typedef struct {
long mode;
double *values; long count_of_points;
double radius;
char *name; long type;
long begin_node; long end_node; long step_nodes; long begin_element; long end_element; long step_elements; long count_of_values;
double *x; double *y; double *z;
long distribution_type; } INITIAL_CONDITIONS;
*ic
*ic
*ic
L
SetRFInitialConditions(ic)
GetRFInitialConditions(ic)
ist *ic list
78
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
9.5 GUI Functions
.5.1 View Functions (CRockflowView)
iew functions connect the mainframe menu (pull-down menu) with the individual dialogs.
oid CRockflowView::OnIcsTemperature() oid CRockflowView::OnIcsConcentration1()
9.5.3 Dialog Data Exchange void CInitialConditions::GetRFInitialConditionsGroup()
// Copies data of all IC objects named m_strICName to protocol list box CString CinitialConditions::GetRFInitialConditionsObject(INITIAL_CONDITIONS *ic)
// Transfers IC object data to dialog data and freshens resource elements void CInitialConditions::SetRFInitialConditions(INITIAL_CONDITIONS *ic) // Transfers dialog data to IC object
9.5.4 Dialog Messages BOOL CInitialConditions::OnInitDialog()
// Transfers data from Objects/Document to the Dialog, fills the protocol list box void CInitialConditions::OnRadioICPress1()
// Activates resource elements for the selected IC object type void CInitialConditions::OnButtonICPressAdd()
// Adds new IC object and build string for the protocol list box // Adds string in the protocol list box(Document concept only)
void CInitialConditions::OnButtonICPressUpdate() // Updates IC object and protocol list box with dialog data
// Updates selected list box string with dialog data(Document concept) void CInitialConditions::OnButtonICPressRemove()
// Removes selected IC object and corresponding protocol list box string // Removes selected protocol list box string(Document concept)
void CInitialConditions::OnButtonICPressRemoveAll() // Removes all IC objects and empties protocol list box
// Removes all list box strings (Document concept) void CInitialConditions::OnSelchangeICList()
// Transfers IC object data to dialog data and freshens resource elements void CInitialConditions::OnButtonICSaveData() // Saves IC object data (only for string concept) void CInitialConditions::OnOK()
9 V void CRockflowView::OnIcsPressure() void CRockflowView::OnIcsSaturation() vv
9.5.2 Document Data Exchange void WriteRF2Doc_InitialConditions(void) void WriteDoc2RF_InitialConditions(void)
79
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
80
// Saves IC object data n Document (Document concept)
9.5 void CinitialConditions::OnAdd_ICDialog(int mode,char *name,CListBox *m_ICList,int type) void CinitialConditions::OnSel_ICDialog(int mode,char *name,CListBox *m_ICList,int type) void nitialConditions::OnOK_ICDialog(int (*DestroyListGroup)(char *name)) 9.5.6 Auxiliary Functions void CInitialConditions::SetStatus_ICDialog(void) lonlonvoi lues(NMHDR* pNMHDR, LRESULT* pResult);
// Transfers list box data to Arrays i
.5 Functions for String Concept
CI
g CInitialConditions::GetType_ICDialogID(void) g CInitialConditions::GetICType(void) d OnItemchangedIcListVa
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
82
0 Boundary Conditions
his menu is used to introduce the required (time dependent) boundary conditions. Note, ysico-chemical model. Only those
bounda et for the current model
1 Tthe buttons are activiated/deactiviated by selection of a ph
ry conditions are available which have to be s
10.1 Data Concept Object: BOUNDARY_CONDITIONS Object list: LIST_ BOUNDARY _CONDITIONS Sources: rfbc 10.1.1 Data Organization
typedef struct { char *name; List *bc_list; long count_of_boundary_conditions; char **names_of_boundary_conditions; long count_of_boundary_conditions_name; double *bc_vector; } LIST_BOUNDARY_CONDITIONS;
List *bc list
*bc
*bc
*bc
typedef struct { char *name; long type; long mode; long kind; long curve; int index; long level; long begin_node; long end_node; long step_nodes; long begin_element; long end_element; long step_elements; long count_of_values; double *values; long count_of_points; double *x; double *y; double *z; double radius; long distribution_type; int component_number; long *nodes; } BOUNDARY CONDITIONS;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
83
y conditions for fluid pressure of first phase rd chemical sorpted component (SORB_CONC_3).
umbers are used to the object group names to specify phase or component.
0.1.2 RF-FEM F-Shell variable Value
Objects building groups, e.g. boundar(PRESSURE1) or initial conditions for thiN
1 Object Names
variable Rname_ PRESSURE boundary_condition_fluid_phase name_ WATER_CONTENT boundary_condition_water_content name_ SATURATION boundary_condition_saturation name_ BOUND_CONC boundary_condition_tracer_component name_ BOUND_SORB boundary_condition_solute_component name_ BOUND_SOLU boundary_condition_sorbed_component name_boundary_condition_temperature_phase TEMPERATURE name_boundary_condition_free_outflow FREE_OUTFLOW name_displacement_x DISPLACEMENT_X name_displacement_y
ndaryConditions bc.m_strBCName
DISPLACEMENT_Y
CBoum_
D ata type: CString ata type: char * D char *GetDefaultNameBoundaryConditionFchar *GetDefaultNameBoundaryConditionSchar *GetDefaultNameBoundaryCond nTchar *GetDefaultNameBoundaryConditionSchar *GetDefaultNameBoundaryConditionSchar *GetDefaultNameBoundaryCond nT 10.1.3 Construction 10.1.3.1 List void CreateBoundaryConditionsList(void) void DestroyBoundaryConditionsList( ) 10.1.3.2 Group int DestroyBo ditionsListGro p(ch 10.1.3.3 O Names void InitDefau ryConditionNames
har *sys_name, int number_ f_ph of_compovoid Fr efa ryConditionNa es( Object Data
luidPhase(int number) aturation(int number)
itio racerComponent(int number) orbedComponent(int number) oluteComponent(int number)
itio emperaturePhase(int number)
void
undaryCon u ar *name)
bject
ltBounda(ceeD
om
ases, int number_ nents) ultBounda )
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
84
F fileint Fct nditionNew
f,char *bc string,int found) By GUI dialog
DARY_CONDITIONS *AddBou e) t Des Conditions bje )
10.1.4 Da By name: BOUNDARY_C *GetBoundaryCo
(char *nam ONDITIO By counter: BOUNDARY_CONDITIONS *GetBoundaryCo ditionsObject(long count,char *name)
rom RFD BoundaryCo(char *data,FILE * _name,int index,char *
BOUNin
ndaryConditionsObject(char *namct(long count,char *nametroyBoundary O
ta Access
ONDITIONS nditionsGroup e,BOUNDARY_C NS *bc)
n
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
85
10.2 Keyword Description The following ailable to specify boundary conditions for fluid flow, heat transport and nsport.
#BOUN ITIONS_PRESS#BOUN ONDITIONS_SATURATION #BOUN ITIONS_TEMPERATURE #BOUN ITIONS_CONCE TRATION #BOUN ONDITIONS_SORBE
OUN _CONDITIONS_S LUTOUN ONDITIONS_D PLACEMENT_X
#BOUN ITIONS_DISPLACEMENT_Y #BOUN ITIONS_FREE_OUTFLOW
By repeatedly use of the keywords, boundary conditions for correspoomponents are specified.
Values Meaning
keywords are av mass tra
DARY_COND URE DARY_CDARY_CONDDARY_COND NDARY_C D_CONCENTRATION
_CONCENTRATION #B#B
DARY OIS
EDARY_CDARY_CONDDARY_COND
nding phases and c Parameter RF Variable
N1 type 0 1
IndiIndividual
2 3
Linear distribution between two nodes byLinear distribution between two nodes by
4 5 6 7 8
Constant value at plain given by 3 points Linear distribution along polygon Constant value at plain given by polygon node numbersHydrostatic distribution at plain given by 3 points Constant value at plain given by polygon coordinates
9 10
16 17
vidual nodes by node number nodes by coordinates
coordinates node number
Bilinear distribution within rectangle by coordinates Bilinear distribution at plain given by coordinates
Bilinear distribution within rectangle by coordinates Hydrostatic distribution in rectangle / coordinates (eps)
11/0 12/5 13 14 15
Individual nodes by node number (eps) Linear distribution along polygon / coordinates (eps) Linear distribution along polygon / nodes (eps) Hydrostatic distribution in polygon / coordinates (eps) Hydrostatic distribution in polygon / nodes (eps)
N2 mode 0 1
Overwrite Superimpose
N3 curve int Curve number if N1=0 begin_node
values[0] Node number
Nodal value (AH) if N1=1 x[0] y[0] z[0]
radius[0] values[0]
Node coordinates Radius (>0.0) Nodal value (AH)
if N1=2 x[0] y[0] z[0] x[1] y[1] z[1] radius[0] values[0] values[1]
First node coordinates First nodal value „Radius“, epsilon Second node coordinates Second nodal value (RFE-Data not correct) (AH)
if N1=3 begin_node end_node step_nodes values[0] value[1]
First node Second node Increment First nodal value Second nodal value (RFE-Data has to be adjusted) (AH)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
86
if N1=4 x[0] y[0] z[0] x[1] y[1] z[1] x[2] y[2] z[2] radius[0] values[0]
First node coordinates Second node coordinates Third node coordinates „Radius“, epsilon Areal value (AH)
if N1=5 count_of_points nodes[count_of_points] values[count_of_points]
Number of polygon points Polygon nodes Nodal values (AH/CT)
if N1=6 count_of_points nodes[count_of_points] radius [0] value[0]
Number of surface polygon points Surface polygon nodes „Radius“, epsilon (does not work properly !!!) Areal value (RFE-Data not correct) (AH)
if N1=7 x[0] y[0] z[0] x[1] y[1] z[1] x[2] y[2] z[2] z[3] values[0]
First node coordinates Second node coordinates Third node coordinates Reference elevation Reference value (not yet tested) (AH)
if N1=8 count_of_points x[0] y[0] z[0] ... x[count_of_points-1] y[count_of_points-1] z[count_of_points-1] radius [0] values[0]
Number of polygon points Polygon node coordinates ... „Radius“, epsilon (does not work properly !!!) Value (RFE-Data not correct) (AH)
if N1=9 x[0] y[0] z[0] values[0] x[1] y[1] z[1] values[1] x[2] y[2] z[2] values[2] x[3] y[3] z[3] values[3]
Rectangle node coordinates Value ... (does not work properly !!!) (RK)
if N1=10 x[0] y[0] z[0] values[0] x[1] y[1] z[1] values[1] x[2] y[2] z[2] values[2] x[3] y[3] z[3] values[3]
Node coordinates Value ... (does not work properly !!!) (RK)
if N1=11 x[0] y[0] z[0] values[0] epsilon
(CT)
if N1=12 count_of_points x[count_of_points] y[count_of_points] z[count_of_points] values[count_of_points] epsilon
(CT)
if N1=13 count_of_points for(i<count_of_points) nodes[i] values[i] epsilon
(CT)
if N1=14 values[0] values[1] phase count_of_points x[count_of_points] y[count_of_points] z[count_of_points] epsilon
(not yet tested) (CT)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
87
if N1=15 values[0] values[1] phase count_of_points nodes[count_of_points] epsilon
(not yet tested) (CT)
if N1=16 x[0] y[0] z[0] values[0] x[1] y[1] z[1] values[1] x[2] y[2] z[2] values[2] x[3] y[3] z[3] values[3] epsilon
(CT)
if N1=17 values[0] values[1] x[0] y[0] z[0] x[1] y[1] z[1] x[2] y[2] z[2] x[3] y[3] z[3] epsilon
(not yet tested) (CT)
Specific boundary conditions #BOUNDARY_CONDITIONS_FREE_OUTFLOW This keyword is intended for open boundarys under multiphase flow conditions. For a system with two or more phases it is necessary to specify BCs for the saturations on each boundary which is regarded "open" by specifying a pressure BC. If the user knows in advance that this will be a free outflow boundary, the free outflow BC can replace the saturation BCs and the saturations at the boundary will adjust freely in the simulation due to the conditions inside the system. If the simplified Richards solution is used, this BC specifies the free outflow of fluid over a boundary with no pressure BC specified. In the iterative process the pressure will be set to zero (which is the reference pressure for the transition between full and partially saturated conditions) if thereby an outflow is enabled, otherwise the boundary is regarded as impermeable.
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
88
10.3 Ressource Description
Source file Class Base class Ressource-ID
sh_bc.h/ *.ccp CBoundaryConditions CPropertyPage IDD_BOUNDARY_CONDITIONS
Control elements Member variables Member functions RF-variables OnInitDialog() IDC_EDIT_BC_1 m_strName name IDC_EDIT_BC_2 m_lNode1 values[0] IDC_EDIT_BC_3 m_lNode2 radius IDC_EDIT_BC_4 m_lElement1 distribution_type IDC_EDIT_BC_5 m_lElement2 begin_node IDC_EDIT_BC_6 m_lStepInterval end_node IDC_EDIT_BC_7 m_dPoint1x begin_element IDC_EDIT_BC_8 m_dPoint1y end_element IDC_EDIT_BC_9 m_dPoint1z step_nodes IDC_EDIT_BC_10 m_dPoint2x x[0] IDC_EDIT_BC_11 m_dPoint2y y[0] IDC_EDIT_BC_12 m_dPoint2z z[0] IDC_EDIT_BC_13 m_dValue1 x[1] IDC_EDIT_BC_14 m_dValue2 y[1] IDC_EDIT_BC_15 m_dRadius z[1] IDC_EDIT_BC_16 m_dStandardDeviation curve IDC_EDIT_BC_17 m_iCurve IDC_EDIT_BC_18 m_iPhase value[1] IDC_EDIT_BC_19 m_lElementStepInterval IDC_EDIT_BC_20 m_dPoint3x IDC_EDIT_BC_21 m_dPoint3y IDC_EDIT_BC_22 m_dPoint3z IDC_EDIT_BC_23 m_dValue3 IDC_EDIT_BC_24 m_lElement3 IDC_EDIT_BC_25 m_lNode3 IDC_EDIT_BC_26 m_lNode4 IDC_EDIT_BC_27 m_dPoint4x IDC_EDIT_BC_28 m_dPoint4y IDC_EDIT_BC_29 m_dPoint4z IDC_EDIT_BC_30 m_dValue4 IDC_LIST_BC_PRESS1 m_LBBoundaryConditions OnSelchangeListBC() IDC_RADIO_BC_TYPE1 – 5 m_iBCSelectedType OnRadioBC1 – 5 type IDC_RADIO_BC_QUANTITIES1 m_iBCQuantities IDC_RADIO_BC_MODE1 m_iBCMode IDC_BUTTON_BC_ADD OnButtonBCAdd IDC_BUTTON_BC_UPDATE OnButtonBCUpdate IDC_BUTTON_BC_REMOVE OnButtonBCRemove IDC_BUTTON_BC_REMOVEALL OnButtonBCRemoveAll IDC_BUTTON_BC_SAVE OnButtonBCSaveData
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
10.4 GUI Data Concept
10.4.1 Class Representation
CBoundaryConditions
10.4.2 Document Data Concept Document Data Exchange (RF-FEM----CRockflowDoc---RF-Shell) Data Exchange (RF-FEM---CRockflowDoc--- RF-Shell) CRockflowDoc---RF-Shell: The dialog datas are stored in 2-dimensional arrays in CRockflowDoc: m_arrExample[d][r] d=Dialog identifier, r=Registercard identifier Example for ‘Type’: m_iarrBCType[0][0] with: d=0 for Fluid-Dialog selected, r=0 for first phase Tranfers: CBCPressure1::OnInitDialog() m_iBCType=m_pDoc->m_iarrBCType[0][0] CBCPressure1::OnOK() m_pDoc->m_iarrBCType[0][0]=m_iBCType RF-FEM---CRockflowDoc:
Document Concept Data Flow
OnOK())
OnInitDialog()
class CRockflowDoc { CStringArray[dialog][register]90
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
10.4.3 Object Data Concept
Data are exchanged between dialog and RF-Object BOUNDARY_CONDITIONS.
typedef struct { char *name; long type; long mode; long kind; long curve; int index; long level; long begin_node; long end_node; long step_nodes; long begin_element; long end_element; long step_elements; long count_of_values; double *values; long count_of_points; double *x; double *y; double *z; double radius; long distribution_type; int component_number; long *nodes; } BOUNDARY_CONDITIONS;
91
*bc
*bc
*bc
List *bc list
SetBCObjectData(bc)
Get_RF2Dialog_Object(bc)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
92
10.5 GUI Functions
10.5.1 View Functions (CRockflowView) View functions connect the mainframe menu (pull-down menu) with the individual dialogs. void CRockflowView::OnBCFluidFlowSaturation() void CRockflowView::OnBCFluidFlowPressure() void CRockflowView::OnBCHeatTransport() void CRockflowView::OnBCMassTransport()
10.5.2 Document Data Exchange void WriteRF2Doc_BoundaryConditions(void) void WriteDoc2RF_BoundaryConditions(void)
10.5.3 Dialog Data Exchange void CBoundaryConditions::Get_RF2Dialog_ObjectGroup(void)
// Copies data of all BC objects named m_strBCName to protocol list box CString CBoundaryConditions::Get_RF2Dialog_Object(BOUNDARY_CONDITIONS *bc)
// Transfers BC object data to dialog data and freshens resource elements void CBoundaryConditions::SetBCObjectData(BOUNDARY_CONDITIONS *bc) // Transfers dialog data to BC object
10.5.4 Dialog Messages BOOL CBoundaryConditions::OnInitDialog()
// Transfers data from Objects/Document to the Dialog, fills the protocol list box void CBoundaryConditions::OnRadioBC1() - 5
// Activates resource elements for the selected BC object type void CBoundaryConditions::OnButtonBCAdd()
// Adds new BC object and build string for the protocol list box // Adds string in the protocol list box(Document concept only)
void CBoundaryConditions::OnButtonBCUpdate() // Updates BC object and protocol list box with dialog data
// Updates selected list box string with dialog data(Document concept) void CBoundaryConditions::OnButtonBCRemove()
// Removes selected BC object and corresponding protocol list box string // Removes selected protocol list box string(Document concept)
void CBoundaryConditions::OnButtonBCRemoveAll() // Removes all BC objects and empties protocol list box
// Removes all list box strings (Document concept) void CBoundaryConditions::OnSelchangeListBC()
// Transfers BC object data to dialog data and freshens resource elements void CBoundaryConditions::OnButtonBCSaveData() // Saves BC object data (only for string concept) void CBoundaryConditions::OnOK()
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
93
// Saves BC object data // Transfers list box data to Arrays in Document (Document concept)
10.5.5 Functions for String Concept void CBoundaryConditions::OnInit_BCDialog() void CBoundaryConditions::OnAdd_BCDialog(int mode) void CBoundaryConditions::OnSel_BCDialog(void) void CBoundaryConditions::OnOK_Dialog(char *bc_name)
10.5.6 Auxiliary Functions void CBoundaryConditions::StatusDialogResourceElements(void) long CBoundaryConditions::GetBCType(void)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
94
11 Sources This menu is used to specify the required (possibly time dependent) source and sink terms. Note, the buttons are activiated/deactiviated by selection of a physico-chemical model. Only those sink and/or source terms are available which have to be set for the selected model.
11.1 Data Concept Source-Term (ST) objects are required for the equation system (EQS). The interface between ST and EQS objects is the source term matrix (ST-OM).
Source terms (ST) are independent objects, whereas source term matrices as wel as equation systems are model dependent structures.
11.1.1 Source-Term Objects (SS-O) 11.1.1.1 Data Organization Object: SOURCE_SINK - ST-O Object list: LIST_SOURCE_SINK - ST-OL Sources: rfsousin.c/cpp
ST-O EQSST-M
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
95
Objects are building groups, e.g. volume sources for the first fluid phase (SOURCE_VOLUME_FLUID_PHASE1) or for the third chemical sorpted component (SOURCE_MASS_SORBED_COMPONENT3). Numbers are used to the object group names to specify phase or component. Additionally, sink terms can be specified for the fluid mixture in multiphase flows. 11.1.1.2 Object Names
RF-FEM variable RF-Shell variable Value Name_source_mass_fluid_phase SOURCE_MASS_FLUID_PHASE Name_source_volume_fluid_phase SOURCE_VOLUME_FLUID_PHASE Name_source_heat_phase SOURCE_HEAT_PHASE Name_source_mass_tracer_component SOURCE_MASS_TRACER_COMPONENT Name_source_mass_solute_component SOURCE_MASS_SOLUTE_COMPONENT Name_source_mass_sorbed_component SOURCE_MASS_SORBED_COMPONENT Name_load_x_solid_phase LOAD_SOLID_PHASE_X1 Name_load_y_solid_phase LOAD_SOLID_PHASE_Y1 Name_sink_mass_fluid_mixture SINK_MASS_FLUID_MIXTURE Name_sink_volume_fluid_mixture
CSources m_ss m_ss.m_strSSName
SINK_VOLUME_FLUID_MIXTURE Data type: char * Data type: CString
Note that keyword and object names are defined identically. Access to object names char *GetDefaultNameSourceMassFluidPhase(int number) char *GetDefaultNameSourceVolumeFluidPhase(int number) char *GetDefaultNameSourceMassTracerComponent(int number) char *GetDefaultNameSourceMassSoluteComponent(int number) char *GetDefaultNameSourceMassSorbedComponent(int number) char *GetDefaultNameSourceHeatPhase(int number)
typedef struct { char *name; List *sosi_list; long count_of_source_sink; char **names_of_source_sink; long count_of_source_sink_name; double *sosi_vector; } LIST_SOURCE_SINK;
typedef struct { char *name; long type; long mode; long kind; long curve; int index; long level; long begin_node; long end_node; long step_nodes; long begin_element; long end_element; long step_elements; long count_of_values; double *values; long count_of_points; double *x; double *y; double *z; double radius; long distribution_type; int component_number; long *nodes;
double epsilon; int function_nidx;
} SOURCE_SINK;
List *sosi list
*st
*st
*st
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
96
11.1.1.3 Construction List void CreateSourceSinkList(void) void DestroySourceSinkList(void) Group int DestroySourceSinkListGroup(char *name) Object From RFD file
int FctSourcePhaseNew ( ... char *name ... ) int FctSourceMixtureNew ( ... char *name ...)
By GUI dialog void CSources::OnButtonSSAdd()
ss = AddSourceSinkObject(ss_name); void CSources::OnButtonSSRemove()
DestroySourceSinkObject(nSel,ss_name);
Object names void InitDefaultSourceSinkNames (..., int number_of_phases, int number_of_components) void FreeDefaultSourceSinkNames() 11.1.1.4 Data Access void CSources::Get_RF2Dialog_ObjectGroup(void) CString CSources::Get_RF2Dialog_Object(SOURCE_SINK *ss)
SOURCE_SINK *GetSourceSinkGroup(char *name,SOURCE_SINK *ss) SOURCE_SINK *GetSourceSinkObject(long count, char *name)
void CSources::Set_Dialog2RF_Object(SOURCE_SINK *ss)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
97
row
**m*m[j]m[i][j]
[0][0]
[1][0]
[0][1]
co
l
11.1.2 Source-Term Matrices (ST-OM) Source term matrices (ST-OM) are model dependent structures, building the interface of source term objects to equation systems. The number of ST-OM columns corresponds to the number of specified ST groups (e.g. number of unknown functions). The number of ST-M rows corresponds to the number of nodes. ST groups, i.e. ST-O belonging to a unknown function are specified by their name:
SetSourceSink(name_source_term_group); 11.1.2.1 Data Organization ST-OM consists of two matrices: one for the ST values and a second with ST flags, indicating that a ST-O is specified for a certain node. static DMATRIX *sosi_matrix_values = NULL; static LMATRIX *sosi_matrix_flags = NULL; (in rfbc)
11.1.2.2 Data Construction void InitSourceSink (char *name)
DMATRIX *CreateDoubleMatrix(long row, long col); void DestroyDoubleMatrix(DMATRIX *dm); LMATRIX *CreateLongMatrix(long row, long col); void DestroyLongMatrix(LMATRIX *lm);
typedef struct { long row; long col; double **m; } DMATRIX;
typedef struct { long row; long col; long **m; } LMATRIX;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
98
11.2 Object Communication
11.2.1 ST-ObjectList (ST-OL) <---> ST-ObjectMatrix (ST-OM) The function
ExecuteAllSourceSink (void) copies all ST objects to the ST matrices.
11.2.2 The function
incorpora em (EQS).
u1 u2 u3 unu
SS-Mnumber of unknowns
num
be
r of n
od
es
IncorporateSS (ss_name)LES
les->b
ss_n
am
e
SS
NOD
ExecuteSSMethod
LMATRIX *ss_matrix_flags DMATRIX *ss_matrix_values
u1 u2 u3 unu
number of unknowns
num
be
r of n
od
es
ss_n
am
e
u1 u2 u3 unu
number of unknowns
num
be
r of n
od
es
ss_n
am
eSS-ObjectMatrix (ST-OM) <---> LES
s int IncorporateSourceSink ( ... ); int IncorporateSourceSinkEx ( ... ); int IncorporateSourceSinkEx2 ( ... ); int IncorporateSourceSinkVec ( ... );
te the specified ST objects into the right-hand-side of the equation syst
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
99
11.3 Keyword Description The following keywords are available to specify source-sink terms for fluid flow, heat and mass transport. Object tionames are defined for object identification.
Keyword Name variable (rfsousin.c) #SOURCE_MASS_FLUID_PHASE name_source_mass_fluid_phase #SOURCE_VOLUME_FLUID_PHASE name_source_volume_fluid_phase #SOURCE_HEAT_PHASE name_source_heat_phase #SOURCE_MASS_TRACER_COMPONENT name_source_mass_tracer_component #SOURCE_MASS_SOLUTE_COMPONENT name_source_mass_solute_component #SOURCE_MASS_SORBED_COMPONENT name_source_mass_sorbed_component #LOAD_SOLID_PHASE_X name_load_solid_phase_x #LOAD_SOLID_PHASE_Y name_load_solid_phase_y #SINK_MASS_FLUID_MIXTURE name_sink_mass_fluid_mixture #SINK_VOLUME_FLUID_MIXTURE name_sink_volume_fluid_mixture
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
100
By repeatedly use of the keywords, source terms for corresponding phases and components are specified. Para-meter
Variables Values Meaning
N1 type 0 1 2 3 4 6 7 8 9 10
Nodal source given by node number Nodal source given by node coordinates Nodal sources along line defined by two nodes (coordinates) Flux distributed along line defined by two nodes (coordinates)Nodal sources at plain surface given by 3 nodes (coordinates) Nodal sources at a polygon given by node coordinates (eps) Nodal sources at a polygon given by node numbers (eps) Nodal source given by node coordinates (eps) Distributed nodal source given by coordinates (eps) Transfer function by nodal sources
AH AH AH AH AH CT CT CT CT OK
N2 mode 0 1
Overwrite Superimpose
N3 curve long Number of time curve if N1=0 begin_node
values[0] Node number
Nodal value
if N1=1 x[0] y[0] z[0] values[0]
Node coordinates Nodal value
if N1=2 x[0] y[0] z[0] x[1] y[1] z[1] values[0]
First node coordinates Second node coordinates Nodal value (to all nodes along this line)
if N1=3 x[0] y[0] z[0] x[1] y[1] z[1] values[0]
First node coordinates Second node coordinates Flux (distributed to all nodes along this line)
if N1=4 x[0] y[0] z[0] x[1] y[1] z[1] x[2] y[2] z[2] values[0]
First node coordinates Second node coordinates Third node coordinates Nodal value
if N1=6 count_of_points x[i] y[i] z[i] epsilon values[0]
Number of nodes Node coordinates Geometric tolerance to catch nodes Value (to be integrated over polygone)
if N1=7 count_of_points nodes[i] epsilon values[0]
Number of nodes Node numbers Geometric tolerance to catch nodes Value (to be integrated over polygone)
if N1=8 x[0] y[0] z[0] epsilon values[0]
Node coordinates Geometric tolerance to catch nodes Nodal value
if N1=9 x[0] y[0] z[0] epsilon values[1] values[0]
Node coordinates Geometric tolerance to catch nodes Distribution function Nodal value
if N1=10 values[0] Transfer coefficient
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
101
11.4 Input Examples
11.5 ; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 #SOURCE_VOLUME_FLUID_PHASE 0 0 0 12 1.000000e-003 0 0 0 36 1.000000e-003 0 0 0 120 1.000000e-003 0 0 0 31 1.000000e-003
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 ; 6.2 Source/Sink Terms ------------------------------------------------ #SOURCE_VOLUME_FLUID_PHASE 2 0 0 0.000000e+000 0.000000e+000 0.000000e+000 1.000000e+001 0.000000e+000 0.000000e+000 1.000000e-003 2 0 0 0.000000e+000 9.000000e+000 0.000000e+000 5.000000e+000 9.000000e+000 0.000000e+000 2.000000e-003 2 0 0 1.000000e+001 5.000000e+000 0.000000e+000 1.000000e+001 9.000000e+000 0.000000e+000 3.000000e-003
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 ; 6.2 Source/Sink Terms ------------------------------------------------ #SOURCE_VOLUME_FLUID_PHASE 9 0 0 2.000000e+000 2.000000e+000 0.000000e+000 2.000000e+000 0.000000e+000 0.000000e+000 9 0 0 7.000000e+000 7.000000e+000 0.000000e+000 3.000000e+000 0.000000e+000 0.000000e+000
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 #SOURCE_VOLUME_FLUID_PHASE 1 0 0 0.000000e+000 0.000000e+000 0.000000e+000 1.000000e-003 1 0 0 1.000000e+000 1.000000e+000 0.000000e+000 1.000000e-003 1 0 0 3.000000e+000 1.000000e+000 0.000000e+000 1.000000e-003 1 0 0 8.000000e+000 1.000000e+000 0.000000e+000 1.000000e-003 1 0 0 2.000000e+000 9.000000e+000 0.000000e+000 1.000000e-003 1 0 0 5.000000e+000 9.000000e+000 0.000000e+000 1.000000e-003 1 0 0 9.000000e+000 9.000000e+000 0.000000e+000 1.000000e-003
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
102
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 ; 6.2 Source/Sink Terms ------------------------------------------------ #SOURCE_VOLUME_FLUID_PHASE 7 0 0 19 11 12 13 14 15 16 27 38 49 60 71 82 93 104 105 106 107 108 109 1.000000e-001 1.000000e+000
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 ; 6.2 Source/Sink Terms ------------------------------------------------ #SOURCE_VOLUME_FLUID_PHASE 3 0 0 1.000000e+000 0.000000e+000 0.000000e+000 9.000000e+000 0.000000e+000 0.000000e+000 1.000000e-003 3 0 0 2.000000e+000 1.000000e+001 0.000000e+000 8.000000e+000 1.000000e+001 0.000000e+000 1.000000e-003 3 0 0 0.000000e+000 1.000000e+001 0.000000e+000 8.000000e+000 2.000000e+000 0.000000e+000 2.000000e-003 3 0 0 1.000000e+001 1.000000e+001 0.000000e+000 0.000000e+000 1.000000e+000 0.000000e+000 3.000000e-003
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 ; 6.2 Source/Sink Terms ------------------------------------------------ #SOURCE_VOLUME_FLUID_PHASE 4 0 0 0.000000e+000 0.000000e+000 0.000000e+000 1.000000e+001 1.000000e+001 0.000000e+000 0.000000e+000 1.000000e+001 0.000000e+000 1.000000e-003
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 ; 6.2 Source/Sink Terms ------------------------------------------------ #SOURCE_VOLUME_FLUID_PHASE 6 0 0 4 0.000000e+000 1.000000e+000 0.000000e+000 5.000000e+000 1.000000e+000 0.000000e+000 5.000000e+000 9.000000e+000 0.000000e+000 1.000000e+001 9.000000e+000 0.000000e+000 1.000000e+000 1.000000e-003
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
103
; RF-FEM - Version: 3.5.04 - 01.03.2001 ; RF-SHELL - Version: 3.5.04 - 01.03.2001 ; 6.2 Source/Sink Terms ------------------------------------------------ #SOURCE_VOLUME_FLUID_PHASE 10 0 0 1.234500e-005
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
104
11.6 Ressource Description Source file Class Base class Ressource-ID
sh_ss.h/ *.ccp CSources CPropertyPage IDD_SOURCES
rfsousin.h/c
Control elements Member variables Member functions RF-variables OnInitDialog() IDC_EDIT_SS_1 m_strSourceName name IDC_EDIT_SS_2 m_iPhase IDC_EDIT_SS_3 m_iCurve curve IDC_EDIT_SS_4 m_lNode1 begin_node IDC_EDIT_SS_5 m_lNode2 end_node IDC_EDIT_SS_6 m_lNode3 IDC_EDIT_SS_7 m_lNodeStepInterval step_nodes IDC_EDIT_SS_8 m_dPoint1x x[0] IDC_EDIT_SS_9 m_dPoint2x x[1] IDC_EDIT_SS_10 m_dPoint3x x[2] IDC_EDIT_SS_11 m_dPoint1y y[0] IDC_EDIT_SS_12 m_dPoint2y y[1] IDC_EDIT_SS_13 m_dPoint3y y[2] IDC_EDIT_SS_14 m_dPoint1z z[0] IDC_EDIT_SS_15 m_dPoint2z z[1] IDC_EDIT_SS_16 m_dPoint3z z[2] IDC_EDIT_SS_17 m_dValue1 values[0] IDC_EDIT_SS_18 m_dValue2 values[1] IDC_EDIT_SS_19 m_dValue3 values[2] IDC_EDIT_SS_20 m_dRadius epsilon IDC_EDIT_SS_21 m_dStandardDeviation distribution_type IDC_EDIT_SS_22 m_lElement1 begin_element IDC_EDIT_SS_23 m_lElement2 end_element IDC_EDIT_SS_24 m_lElement3 IDC_EDIT_SS_25 m_lElemStepInterval step_elements m_iCountOfNodes count_of_nodes IDC_LIST_SS m_LBSinkSources OnSelchangeListSS() IDC_LIST_SS2 m_LBSinkSourceNodes nodes[], values[]IDC_RADIO_SS_TYPE1 – 10 m_iSelectedType OnRadioSS1 – 10 type IDC_RADIO_SS_QUANTITIES1 m_iQuantities IDC_RADIO_SS_MODE1 m_iSelectedMode mode IDC_BUTTON_SS_ADD OnButtonSSAdd IDC_BUTTON_SS_UPDATE OnButtonSSUpdate IDC_BUTTON_SS_REMOVE OnButtonSSRemove IDC_BUTTON_SS_REMOVEALL OnButtonSSRemoveAll
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
11.7 GUI Data Concept
11.7.1 Class Representation
CSources
11.7.2 Object Data Concept
Data exchange between ST objects (ST-O) and dialog menus.
typedef struct { char *name; long type; long mode; long kind; long curve; int index; long level; long begin_node; long end_node; long step_nodes; long begin_element; long end_element; long step_elements; long count_of_values; double *values; long count_of_points; double *x; double *y; double *z; double radius; long distribution_type; int component_number; long *nodes;
double epsilon; int function_nidx;
} SOURCE_SINK;
*st
*st
*st
List *sosi l
Get_RF2Dialog_Object(st)
Set_Dialog2RF_Object(st)
106
ist
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
107
11.7.3 Document Data Concept Document Data Exchange (RF-FEM----CRockflowDoc---RF-Shell) Data Exchange (RF-FEM---CRockflowDoc--- RF-Shell) CRockflowDoc---RF-Shell: The dialog datas are stored in 2-dimensional arrays in CRockflowDoc: m_arrExample[d][r] d=Dialog identifier, r=Registercard identifier Example for ‘Type’: m_iarrBCType[0][0] with: d=0 for Fluid-Dialog selected, r=0 for first phase Tranfers: CBCPressure1::OnInitDialog() m_iBCType=m_pDoc->m_iarrBCType[0][0] CBCPressure1::OnOK() m_pDoc->m_iarrBCType[0][0]=m_iBCType RF-FEM---CRockflowDoc:
Document Concept Data Flow
class CRockflowDoc { CStringArray[dialog][register] }
OnOK())
OnInitDialog()
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
108
11.8 GUI Functions
11.8.1 View Functions (CRockflowView) View functions connect the mainframe menu (pull-down menus) with the individual dialogs. void CRockflowView::OnSSFluidFlowVolume() void CRockflowView::OnSSFluidFlowMass() void CRockflowView::OnSSHeatTransport() void CRockflowView::OnSSMassTransport()
11.8.2 Document Data Exchange void WriteRF2Doc_Sources(void) void WriteDoc2RF_Sources(void)
11.8.3 Dialog Data Exchange void CSources::Get_RF2Dialog_ObjectGroup(void)
// Copies data of all SS objects named m_strSSName to protocol list box CString CSources::Get_RF2Dialog_Object(SOURCES_SINK *ss)
// Transfers SS object data to dialog data and freshens resource elements void CSources::Set_Dialog2RF_Object(SOURCES_SINK *ss) // Transfers dialog data to SS object
11.8.4 Dialog Messages BOOL CSources::OnInitDialog()
// Transfers data from Objects/Document to the Dialog, fills the protocol list box void CSources::OnRadio1() - 5
// Activates resource elements for the selected SS object type void CSources::OnButtonAdd()
// Adds new SS object and build string for the protocol list box // Adds string in the protocol list box(Document concept only)
void CSources::OnButtonUpdate() // Updates SS object and protocol list box with dialog data
// Updates selected list box string with dialog data(Document concept) void CSources::OnButtonRemove()
// Removes selected SS object and corresponding protocol list box string // Removes selected protocol list box string(Document concept)
void CSources::OnButtonRemoveAll() // Removes all SS objects and empties protocol list box
// Removes all list box strings (Document concept) void CSources::OnSelchangeList()
// Transfers SS object data to dialog data and freshens resource elements void CSources::OnButtonSaveData() // Saves SS object data (only for string concept)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
109
void CSources::OnOK() // Saves SS object data
// Transfers list box data to Arrays in Document (Document concept)
11.8.5 Functions for String Concept void CSources::OnInit_Dialog() void CSources::OnAdd_Dialog(int mode) void CSources::OnSel_Dialog(void) void CSources::OnOK_Dialog(char *name)
11.8.6 Auxiliary Functions void CSources::StatusDialogResourceElements(int selType) long CSources::GetType(void)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
110
12 Material Properties The menu MATERIALS is used to assign the required material properties to fluids, solids, porous medium, and chemical species. Data structures for material properties are designed in particular for multiphase-multicomponental systems. Material properties can be specified for several fluid and solid phases, the fractured-porous medium itself, as well as for chemical components, which may be dissolved in a fluid phase or adsorpted to a solid phase. Material conditions, which are connected to finite elements, can be assigned also withhelp of menu ELEMENTS (see 9). Available buttons in the below pull-down menu are controled by the selected physico-chemical model.
12.1 Data Concept The below table shows the implemented RF data constructs (RF-FEM) and corresponding RF classes (RF-Shell) for material properties (MP).
RF data constructs material.h/c
RF classes sh_mat.h/cpp
MAT Groups
Reference
typedef struct {...} FLUID_PROPERTIES CFluidProperties FP
Section 12.2
typedef struct {...} SOLID_PROPERTIES CSolidProperties SP Section 12.3
typedef struct {...} SOIL_PROPERTIES perm[7] kap[7]
CSoilProperties CSoilPS CSoilKS
MP Section 12.4
typedef struct {...} TRACER_PROPERTIES
CTracerProperties TP Section 12.5
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
111
12.1.1 Material Properties List All the different material properties objects (FP,SP,MP,TP) are organized in one list - List *mp_list.
*mat list
typedef struct { char *name; List name List *mp_list; List of objects long count_of_material_properties; Number of MAT groups char **names_of_material_properties; Names of MAT groups long count_of_material_properties_name; Number of MAT group names} LIST_MATERIAL_PROPERTIES;
*mat
typedef struct { long type; char *name; int density_model; double rho_0; double drho_dp; double drho_dT; double drho_dC; int viscosity_model; double my_0; double dmy_dp; double dmy_dT; double dmy_dC; int curve; double Z; double heat_capacity; double heat_conductivity;} FLUID_PROPERTIES;
typedef struct { long type; char *name; /* Geometry */ int dimension; double area; double porosity; double tortuosity; double specific_area; /* Fluid flow */ int nonlinearflowelement; double nonlinearflowparameter; double storativity; int permeabilitymodel; double k[9]; double perm[7]; double kap[7]; /* Mass transport */ double massdispL; double massdispT; /* Heat transport */ double heatdispL; double heatdispT; /* Solid properties */ int heatconductivitymodel; double heatconductivitytensor[3]; double densityrock; double heatcapacityrock; } SOIL_PROPERTIES;
typedef struct { long type; char *name; /* Transport */ double molecular_diffusion; /* Chemical reactions */ double decay_rate; long isotherm; double partitioning coefficient; double sorption_k1; double sorption_k2; double nonequilibrium coefficient; /* Solution */ double solubility; double dissolution_rate; } TRACER_PROPERTIES;
typedef struct { } SOLID_PROPERTIES;
*mat
*mat
*mat
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Construction/Destruction CreateMaterialPropertiesList()
create_material_properties_list (name_material_properties_list) declare_material_properties_name (name_material_properties_list)
DestroyMaterialPropertiesList() char * name_material_properties_list = AMATERIAL_PROPERTIESA
12.1.2 Material Properties Groups Material properties are divided into four groups. Identification of a group is either by group name or by group type (MP_TYPE).
Groups Group Names Group Type Fluid phase properties
name_fluid_properties = FLUID_PROPERTIES
FLUID_PROP = 2
Solid phase properties
name_solid_properties = SOLID_PROPERTIES
SOLID_PROP = 0
Porous medium properties
name_soil_properties = SOIL_PROPERTIES
SOIL_PROP = 1
Component properties
name_tracer_properties = TRACER_PROPERTIES
TRACER_PROP = 3
typedef enum {SOLID_PROP = 0, SOIL_PROP, FLUID_PROP, TRACER_PROP} MP_TYPE; Each material property group can consist of several members, e.g. several fluid phases, locally varying soil or solid properties and chemical properties of different species in multicomponent systems.
112
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
113
12.1.3 Material Properties Table Complex data structures as material properties can be handled conveniently in a list. On the other hand, access to data in a list is time consuming. For fast data access during FEM simulation we can get the data from a data container - the material properties table - which is in fact an multidimensional array:
table[n_fp][n_sp][n_mp][n_tp] n_fp - number of fluid properties n_sp - number of soild properties n_mp - number of porous medium properties n_tp - number of tracer properties
Construction/Destruction
mpt = create_material_properties_table(name, g, p, c); void destroy_material_properties_table(void *member);
Interface
construction void InitMaterialProperties(char *name, long g, long p, long c) destrucion void DestroyMaterialPropertiesList(void)
typedef struct { char *name; long count_of_groups; long count_of_solids; long count_of_soils; long count_of_phases; long count_of_components; SOLID_PROPERTIES **solid_properties_table; SOIL_PROPERTIES **soil_properties_table; FLUID_PROPERTIES **fluid_properties_table; TRACER_PROPERTIES **tracer_properties_table; long ***table;
} MATERIAL_PROPERTIES_TABLE;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
114
12.2 Fluid Properties
12.2.1 Data Concept Object: FLUID_PROPERTIES Object list: LIST_MATERIAL_PROPERTIES Sources: material 12.2.1.1 Data Object - FLUID_PROPERTIES
12.2.1.2 Object Names Subject Name variable Name convention Phase specifier FP Group name_fluid_properties FLUID_PROPERTIES
FP Object name_fluid_properties_phase
names_fluid_properties[] FLUID_PROPERTIES1 FLUID_PROPERTIES2 ...
+phase_number
typedef struct { long type; MP-Typ = FLUID_PROP 1 char *name; object name int density_model; double rho_0; double drho_dp; double drho_dT; double drho_dC; int viscosity_model; double my_0; double dmy_dp; double dmy_dT; double dmy_dC; int curve; double Z; double heat_capacity; double heat_conductivity; } FLUID_PROPERTIES;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
115
12.2.1.3 Construction Fluid properties data can be created either from reading the RFD file or interactively by use of the fluid properties dialog. - from RFD file
FctFluidPropertiesNew ( char *data, int found, FILE *f ) destruction by list destruction
- by fluid properties dialog
CreateFluidPropertiesDefaultsNew(number_of_phases); 12.2.1.4 Data Access Access to FP objects is possible either from MAT list or from MAT table. - from MAT list by object name:
fp = get_fp_object (name_fluid_properties_phase,fp)
- from MAT table by phase number : fp = GetFluidProperties (phase)
Data access to individual FLUID_PROPERTIES We can use the standard data access functions within the MAT environment (#include "material.h")
get_fp_property(fp) set_fp_property(fp,value)
12.2.1.5 Methods Fluid properties depends on the thermodynamic state variables of the specific model. Therefore, the parameter list must be variable.
double CalcFluidDensity (int phase, ...); double CalcFluidViscosity(int phase, ...);
Function prototypes are defined for the model interface, i.e, within the MODEL environment.
DoubleFuncILDDDD GetFluidViscosity; DoubleFuncILDDDD GetFluidDensity; DoubleFuncILD GetNodeFluidDensity; DoubleFuncILD GetNodeFluidViscosity;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
116
12.2.2 Keyword Description Fluid properties (gas or liquid) can be specified using the keyword:
#FLUID_PROPERTIES By repeatedly use the data for several phases are specified. Param. RF variable Value Meaning Unit N1 .density_model
0 1 2
Density model: - constant density - linear density function - piece-wise linear function (curve)
[ - ]
N2 .rho_0 1000 Fluid density (reference value) [ kg m-3 ] N2a (if N1=1)
.drho_dp
.drho_dC 0 - Compressibility
- Coefficient of density variation due to concentration change
[ Pa-1 ] [ m3 kg-1 ]
N2a (if N1=2)
.curve Curve number [ - ]
N3 .viscosity_model 0 1 2
Viscosity model: - constant viscosity - linear viscosity function - piece-wise linear function (curve)
N4 .my_0 0.001 Fluid viscosity (reference value) [ Pa s ] N4a (if N3=1)
.dmy_dp
.dmy_dC 0 - Coefficient of viscosity variation due to
pressure change - Coefficient of viscosity variation due to concentration change
[ Pa-1 s-1 ]
N4a (if N3=2)
.curve Curve number [ - ]
N5 .Z 1 Real gas factor [ - ] N6 .heat_capacity 4200 Heat capacity of fluid [ J kg-1 K-1 ] N7 .heat_conductivity 0.6 Heat conductivity of fluid [ W m-1 K-1 ] Example #FLUID_PROPERTIES 0 1000.000000 ; density function, parameter 0 1.000000e-003 ; viscosity function, parameter 0.000000e+000 ; real gas factor 0.000000e+000 0.000000e+000 ; heat capacity, heat conductivity
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
117
12.2.3 Ressource Description Source file Class Base class Ressource-ID
sh_mat.h/ccp CMaterialsFluid CPropertyPage IDD_MATERIALS_FLUID
material.h/c FLUID_PROPERTIES typedef
Control elements
Member variables
Member functions
RF-variables
IDC_EDIT_FP_1 IDC_EDIT_FP_2 IDC_EDIT_FP_3 IDC_EDIT_FP_4 IDC_EDIT_FP_5 IDC_EDIT_FP_6 IDC_EDIT_FP_7 IDC_EDIT_FP_8 IDC_EDIT_FP_9 IDC_EDIT_FP_10 IDC_EDIT_FP_11 IDC_EDIT_FP_12 IDC_EDIT_FP_13 IDC_EDIT_FP_14 IDC_EDIT_FP_15
m_dDensity_0 m_dDensity_p m_dDensity_C m_dDensity_T m_iDensityCurve m_dViscosity_0 m_dViscosity_p m_dViscosity_C m_dViscosity_T m_iViscosityCurve m_dHeatCapacity m_dHeatConductivity m_strFluidPhaseName m_iFluidPhase m_dRealGasFactor
.rho_0
.drho_dp
.drho_dC
.drho_dT
.curve
.my_0
.dmy_dp
.dmy_dC
.dmy_dT
.curve
.heat_capacity
.heat_conductivity
.name .Z
IDC_RADIO_FP_D1 IDC_RADIO_FP_V1
m_iSelectedDensityModel m_iSelectedViscosityModel
.density_model .viscosity_model
ID_CANCEL ID_OK
OnOK()
OnInitDialog() SetStatus_Dialog() GetFluidProperties() SetFluidProperties()
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
119
12.2.4 GUI Functions
12.2.4.1 Class Representation
CFluidProperties 12.2.4.2 View Functions void CRockflowView::OnMaterialsFluids() void CRockflowView::OnUpdateMaterialsFluids(CCmdUI* pCmdUI) PropertyPages are phase-related. Phase number is defined by selected model. 12.2.4.3 Dialog Data Exchange void CMaterialsFluid::GetFluidProperties(char *name)
fp = get_fp_object (name_fluid_properties_phase,sp) void CMaterialsFluid::SetFluidProperties(char *name)
fp = get_fp_object (name_fluid_properties_phase,sp) 12.2.4.4 Dialog Messages BOOL CMaterialsFluid::OnInitDialog() void CMaterialsFluid::OnOK() 12.2.4.5 Auxiliary Functions void CMaterialsFluid::SetStatus_Dialog(int m_iType)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
120
12.3 Medium Properties
12.3.1 Data Concept Object: SOIL_PROPERTIES Object list: LIST_MATERIAL_PROPERTIES Sources: material.h/c
12.3.1.1 Data Object - SOIL_PROPERTIES - MP
12.3.1.2 Object Names Subject Name variable Value Group specifier MP Group name_soil_properties SOIL_PROPERTIES MP Object name_soil_properties_group SOIL_PROPERTIES1
SOIL_PROPERTIES2 ...
+group_number
typedef struct { /* fuer Bodeneigenschaften */ long type; /* Item-Typ */ char *name; /* Gruppenname */ /* Geometry */ int dimension; double area; /* 1D: Flaeche, 2D: Dicke, 3D: - */ double porosity; /* Porositaet */ double tortuosity; /* Tortuositaet */ double specific_area; /* spez. Oberflaeche (A/V) */ /* Fluid flow */ int nonlinearflowelement; /* Fliessmodell (linear oder nichtlinear) */ double nonlinearflowparameter; /* Exponent fuer nichtlineares Fliessmodell */ double storativity; /* Speicherkoeffizient */ int permeabilitymodel; /* gibt Art der Durchlaessigkeit an */ double k[9]; /* Durchlaessigkeitsbeiwerte und Winkel */ double perm[7]; /* rel. Perm. */ double kap[7]; /* Kapillardruecke */ /* Mass transport */ double massdispL; /* longitudinale Massendispersionslaenge */ double massdispT; /* transversale Massendispersionslaenge */ /* Heat transport */ double heatdispL; /* longitudinale Waermedispersionslaenge */ double heatdispT; /* transversale Waermedispersionslaenge */ /* Solid properties */ int heatconductivitymodel; /* Waermeleitfaehigkeitsmodell */ double heatconductivitytensor[3]; /* Waermeleitfaehigkeit der Fluessigkeit */ double densityrock; /* Fluessigkeitsdichte */ double heatcapacityrock; /* spez. Waermekapazitaet der Fluessigkeit */ } SOIL_PROPERTIES;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
121
12.3.1.3 Construction
SOIL_PROPERTIES *sp Medium properties data can be created either from reading the RFD file or interactively by use of the fluid properties dialog. - from RFD file
int FctSoilPropertiesNew(char *data, int found, FILE * f) sp = create_soil_properties(sp_name_this); insert_material_properties_list(sp);
- by soil properties dialog int CreateSoilPropertiesDefaults(long number)
AddSoilPropertiesDefaults() sp = create_soil_properties(sp_name_this); SetSoilPropertiesDefaults(sp)
RemoveSoilPropertiesObject(name); Destruction by list destruction 12.3.1.4 Data Access Access to MP objects is possible either from MAT list or from MAT table. - from MAT list by name
sp = GetSoilPropertiesObject(name,sp) // Object SetSoilPropertiesDefaults(sp) set_sp_property(property,sp) // Properties value = get_sp_property(sp)
- from MAT table by group number
value = GetSoilProperty(number) // Properties SetSoilPorosity(number, value)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
122
12.3.2 Keyword Description Medium properties (soil or rock) can be specified by use of keyword
#SOIL_PROPERTIES By repeatedly use data for several medium properties are specified. Param. RF variable Value Meaning Unit Geometric properties N1 .dimension
1 2 3
Element dimension [ - ]
N1a (if N1<3)
.area 1 Element exchange area (1-D) Element thickness (2-D)
[ m-2 ] [ m ]
N2 .porosity_model 0 Porosity model [ - ] N3 .porosity
0.2 Medium porosity [ m3 m-3 ]
N4 .tortuosity 1 Medium tortuosity [ - ] N5 .number_grain_classes 0 Number of lithological
components [ - ]
N5a (if N5=1) N5b
Grain class radius Grain class percentage
[ - ] [ - ]
Hydraulic properties N6 .nonlinearflowelement
0 1
Flow model: - Darcy (linear flow) - Forchheimer (nonlinear)
[ - ]
N6a .nonlinearflowparameter 1 Non-linear flow parameter [ - ] N7 .storativity 0.0 Specific storage coefficient [ Pa-1 ] N8 .permeability_model 0 Permeability model [ - ] N9 .permeability_tensor
0 1 3
Permeability characteristics - isotropic permeability - orthotropic permeability - distribution (see comment)
[ - ]
N10a (if N9=0)
.k[0] 0.0 Isotropic medium permeability [ m-2 ]
N10a N10b (if N9=1)
.k[0]
.k[1]
0.0 0.0
2-D element (N1=2) k_xx permeability k_yy permeability
[ m-2 ]
N11a N11b N11c (if N9=1)
.k[0]
.k[1]
.k[2]
0.0 0.0 0.0
3-D element (N1=3) k_xx permeability k_yy permeability k_zz permeability
[ m-2 ]
N12 - RP[7] see comments
.perm[0]
.perm[1]
.perm[2]
.perm[3]
.perm[4]
.perm[5]
.perm[6]
0.0 ...
Permeability functions k(S) relationships
N13 - CP[7] see comments
.kap[0]
.kap[1]
.kap[2]
.kap[3]
.kap[4]
.kap[5]
0.0 ...
Capillary pressure functions p(S) relationships
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
123
.kap[6]
Transport properties N14a .massdispL 0.0 Longitudinal mass dispersion
length [ m ]
N14b .massdispT 0.0 Transverse mass dispersion length
[ m ]
N15a .heatdispL 0.0 Longitudinal heat dispersion length
[ m ]
N15b .heatdispT 0.0 Transverse heat dispersion length [ m ] N16 .heatconductivitymodel 0
1 Heat conductivity model
N17a (if N12=0)
.heatconductivitytensor[0] 0.0 Isotropic medium heat conductivity
[ W m-1 K-1 ]
N17a N17b (if N16=1)
.heatconductivitytensor[0]
.heatconductivitytensor[1] 0.0 0.0
2-D element (N1=2) λ_xx heat conductivity λ_yy heat conductivity
[ W m-1 K-1 ]
N18a N18b N18c (if N16=1)
.heatconductivitytensor[0]
.heatconductivitytensor[1]
.heatconductivitytensor[2]
0.0 0.0 0.0
3-D element (N1=3) λ_xx heat conductivity λ_yy heat conductivity λ_zz heat conductivity
[ W m-1 K-1 ]
N19 .densityrock 0.0 Density of soil/rock [ kg m-3 ] N20 .heatcapacityrock 0.0 Heat capacity of soil/rock [ J kg-1 K-1 ] Default values are printed bold.
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
124
Comments on hydraulic properties for multi-phase flow Two data fields with a width of 7 doubles describe the „Relative Permeability-Saturation Functions“ and the „Capillary Pressure-Saturation Functions“. They are explained in the following. The first value of those fields (referenced as RP[0] to RP[6] and CP[0] to CP[6] in the following) specifies the type of function to be used. In the describtion the following variables will be used: satu : Saturation of phase 1 satu_water : Saturation of phase 2 *perm1 : Relative permeability of phase 1 *perm2 : Relative permeability of phase 2 *kap12 : Capillary pressure between phase 1 and phase 2 Additionally to the given functions, the range of input values and results will be checked. The relative permeabilites are limited to a range from 0. to 1. For the capillary pressure calculation the saturation of the wetting phase will be checked for it’s fitting into the area of residual and maximal saturation. If it doesn’t fit, it will be adjusted accordingly. 1 - Relative Permeability-Saturation Functions 1.1 "Perfectly Mobile" RP[0] = 0. All phases show perfect mobility and do not inherit each other. *perm1 = 1.; *perm2 = 1.; 1.2 "Curves" RP[0] = 1. The permeability is specified by curves which the user defines in the keyword #CURVES. RP[1]: Number of the curve (curves are numbered beginning with 0) which specifies the saturation-
permeability-relation for phase 1 RP[2]: Number of the curve (curves are numbered beginning with 0) which specifies the saturation-
permeability-relation for phase 2 1.3 "Linear" RP[0] = 2. *perm1 rises linear in the area RP[1] to RP[2] from 0. to 1. *perm2 rises linear in the area RP[4] to RP[5] from 0. to 1. 1.4 "Parabolic" RP[0] = 3. The relative permeability *perm1 rises linearily in the area RP[1] to RP[2] from 0. to 1. and an exponent of RP[3] will be applied afterwards and the relative permeability *perm2 rises linear in the area RP[4] to RP[5] from 0. to 1. and an exponent of RP[6] will be applied afterwards. 1.5 "Van Genuchten" RP[0] = 4 Taken from: SOIL SCI. SOC. AM. J. VOL. 44, 1980 Page 894 Equation 19 RP[1]: Residual water saturation RP[2]: Maximal water saturation RP[3]: Paramter a (0.005 in the publication) RP[4]: Parameter m (0.5 in the publication) RP[5]: Parameter n (2.0 in the publication)
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
125
s_eff = (satu_water - RP[1]) / (RP[2]- RP[1]); *perm2 = pow(s_eff, 2.) * (1 - pow((1 - pow(s_eff, 1. / m)), m)); *perm1 = 1. - *perm2; 1.6 "Haverkamp" RP[0] = 5 Take form: SOIL SCI. SOC. AM. J., VOL. 41, 1977, Pages 285ff RP[1]: Residual water saturation (0.075 in the publication) RP[2]: Maximal water saturation (0.287 in the publication) RP[3]: Parameter a (1.611e6 in the publication) RP[4]: Parameter b (4.74/3.96 = 1.197 in the publication) RP[5]: Parameter c (1.175e6 in the publication) *perm2 = c / (c + pow(-a * (satu_water - satu RP[2] - RP[1]) / satu_water, b)); *perm1 = 1. - *perm2; 1.7 "Brooks/Corey" RP[0] = 6 Taken from: Journal of the Irrigation and Drainage Division June, 1966 Pages 61ff RP[1]: Residual water saturation RP[2]: Maximal water saturation s_eff = (satu_water - RP[1]) / (RP[2] - RP[1]); *perm2 = pow(s_eff, 4.); /* Equation 4 */ *perm1 = pow(1. - s_eff, 2.) * (1. - pow(s_eff, 2.)); 2 - Capillary Pressure Functions 2.1 "No Capillary Pressure" CP[0] = 0. The capillary pressure is neglected. *kap12 = 0.; 2.2 "Curves" CP[0] = 1. The capillary pressure is specified by curves which the user defines in the keyword #CURVES. CP[1]: Number of the curve (curves are numbered beginning with 0) which specifies the relation
between the wetting phase (phase2) saturation and the capillary pressure. 2.3 "Linear" CP[0] = 2. p_cap rises linearily in the area CP[2] (maximal saturation of the wetting phase) to CP[1] (residual saturation of the wetting phase) from 0. to CP[3]. 2.4 "Parabolic" CP[0] = 3. The capillary pressure rises parabolicly in the area CP[2] (maximal saturation of the wetting phase) to CP[1] (residual saturation of the wetting phase) from 0. to CP[3] with an exponent of CP[4]. 2.5 "Van Genuchten" CP[0] = 4. Taken from: SOIL SIC. SOC. AM. J. VOL. 44, 1980 Page 894 Equation 21
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
126
CP[1]: Residual water saturation (0.1 in the publication) CP[2]: Maximal water saturation (0.5 in the publication) CP[3]: Paramter a (0.005 in the publication) CP[4]: Parameter m (0.5 in the publication) CP[5]: Parameter n (2.0 in the publication) *kap12 = ρ * g * pow((pow(((satu_water_saturated - satu_water_residual) / (satu_water - satu_water_residual)), (1. / m)) - 1.), 1. / n) * 1. / a; 2.6 "Haverkamp" CP[0] = 5. Taken from: SOIL SCI. SOC. AM. J., VOL. 41, 1977, Pages 285ff CP[1]: Residual water saturation (0.075 in the publication) CP[2]: Maximal water saturation (0.287 in the publication) CP[3]: Parameter a (1.611e6 in the publication) CP[4]: Parameter b (3.96 in the publication) CP[5]: Parameter c (1.e5 in the publication) *kap12 = pow(((a * (satu_water_saturated - satu_water_residual) / (satu_water - satu_water_residual) - a)), (1. / b)) * 0.01 * ρ * g Comments on permeability distribution (N9=3) With N9=3, a user-defined permeability distribution can be introduced. The current implementation is for 2-D fracture elements. The permeability for each element is calculated according to the "cubic law". For this purpose, the keyword #FRACTURE_APERTURE_DISTRIBUTION has to be used, which defines the fracture aperture for each element (ordering is element number). Example: #SOIL_PROPERTIES 2 5.915840e-005 ; dimension, (area) 0 1.000000e+000 1.000000e+000 ; porosity model, porosity, tortuosity 0 ; number of lytho class, grain radius, grain percent 0 ; nonlinear flow parameter 1.000000e-005 ; storativity 0 3 ; permeability model, tensor type 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 ; k-S 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 ; p-S 0.000000e+000 0.000000e+000 ; mass dispersion parameters 0.000000e+000 0.000000e+000 ; heat dispersion parameters 2.500000e+003 1.000000e+003 ; rock density, heat capacity 0 3.000000e+000 ; heat conductivity parameters #FRACTURE_APERTURE_DISTRIBUTION 5.915840e-05 7.426280e-05 1.228406e-04 2.434464e-04 3.882522e-04 3.193660e-04 2.110266e-04 2.751834e-04 2.875850e-04 4.000738e-04 5.016136e-04 5.503466e-04 7.206372e-04 7.434452e-04 8.011422e-04 ........... number of elements
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
127
12.3.3 Ressource Description Source file Class Base class Ressource-ID
sh_mat.h/ccp CSoilProperties CPropertyPage IDD_SOIL_PROPERTIES
material.h/c
Control elements
Member variables
Member functions
RF-variables
IDC_RADIO
-
IDC_CHECK_PMP_1
m_bNonDarcianFlow
IDC_EDIT_PMP_1 IDC_EDIT_PMP_2 IDC_EDIT_PMP_3 IDC_EDIT_PMP_4 IDC_EDIT_PMP_5 IDC_EDIT_PMP_6 IDC_EDIT_PMP_7 IDC_EDIT_PMP_8 IDC_EDIT_PMP_9 IDC_EDIT_PMP_10 IDC_EDIT_PMP_11 IDC_EDIT_PMP_12 IDC_EDIT_PMP_13 IDC_EDIT_PMP_14
m_strSoilPropertiesName m_iElementDimension m_dElementArea m_dPorosity m_dTortuosity m_dNonlinearFlowParameter m_dSpecificStorativity m_dPermeabilityXX m_dPermeabilityYY m_dPermeabilityZZ m_dMassDispersionLengthL m_dMassDispersionLengthT m_dHeatDispersionLengthL m_dHeatDispersionLengthT
name dimension area porosity tortuosity nonlinearflowparameter storativity k[0] k[1] k[2] massdispL massdispT heatdispL heatdispT
IDC_LIST_PMP m_MaterialGroupList OnSelchangeListPMP() number_of_groups
ID_CANCEL ID_OK
OnOK
IDC_BUTTON_PMP_1 IDC_BUTTON_PMP_2 IDC_BUTTON_PMP_3 IDC_BUTTON_PMP_4 IDC_BUTTON_PMP_5
OnInitDialog() OnButtonSavePMPData() OnButtonAddSoilGroup() OnButtonSpecifyPS() OnButtonSpecifyKS() OnButtonDeleteSoilGroup()
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
129
Capillary pressure functions Source file Class Base class Ressource-ID
sh_mat.h/ccp CSoilPS CDialog IDD_MATERIALS_SOIL_PS
material.h/c
Control elements Member variables Member functions
RF-variables
IDC_RADIO_PMPS_1 m_iPSModel
.perm[0]
IDC_EDIT_PMPS_1 IDC_EDIT_PMPS_2 IDC_EDIT_PMPS_3 IDC_EDIT_PMPS_4 IDC_EDIT_PMPS_5 IDC_EDIT_PMPS_6
m_dPSCoefficient1 m_dPSCoefficient2 m_dPSCoefficient3 m_dPSCoefficient4 m_dPSCoefficient5 m_dPSCoefficient6
.perm[1]
.perm[2]
.perm[3]
.perm[4]
.perm[5]
.perm[6] ID_CANCEL ID_OK
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
130
Permeability functions Source file Class Base class Ressource-ID
sh_mat.h/ccp CSoilKS CDialog IDD_MATERIALS_SOIL_KS
material.h/c
Control elements Member variables Member functions
RF-variables
IDC_RADIO_PMKS_1 m_IKSModel
.kap[0]
IDC_EDIT_PMKS_1 IDC_EDIT_PMKS_2 IDC_EDIT_PMKS_3 IDC_EDIT_PMKS_4 IDC_EDIT_PMKS_5 IDC_EDIT_PMKS_6
m_dKSCoefficient1 m_dKSCoefficient2 m_dKSCoefficient3 m_dKSCoefficient4 m_dKSCoefficient5 m_dKSCoefficient6
.kap[1]
.kap[2]
.kap[3]
.kap[4]
.kap[5]
.kap[6] ID_CANCEL ID_OK
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
131
12.3.4 GUI Functions
12.3.4.1 Class representation
CSoilProperties 12.3.4.2 View Functions void CRockflowView::OnMaterialsPorousMedium() void CRockflowView::OnUpdateMaterialsPorousMedium(CCmdUI* pCmdUI) 12.3.4.3 Dialog Data Exchange CSoilProperties::GetSoilData(int group_index)
sp = GetSoilPropertiesObject(sp_name_this,sp) CSoilProperties::SetSoilData(int group_index)
sp = GetSoilPropertiesObject(sp_name_this,sp) 12.3.4.4 Dialog Messages CSoilProperties::OnInitDialog() CSoilProperties::OnSelchangeListPMP() CSoilProperties::GetSoilData(int group_index)
sp = GetSoilPropertiesObject(sp_name_this,sp) CSoilProperties::OnButtonAddSoilGroup()
AddSoilPropertiesDefaults() CSoilProperties::OnButtonDeleteSoilGroup()
DeleteSoilPropertiesObject(sp_name_this,sp) RenameSoilPropertiesObjects()
CSoilProperties::OnButtonSavePMPData()
CSoilProperties::SetSoilData(int group_index) sp = GetSoilPropertiesObject(sp_name_this,sp)
Consecutive menues for specific data PS-relationship: CSoilPS KS-relationship: CSoilKS
12.4 Tracer Properties
12.4.1 Data Concept
Object: TRACER_PROPERTIES
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
132
Object list: LIST_MATERIAL_PROPERTIES Sources: material.h/c 12.4.1.1 Data Organization
typedef struct { /* fuer Tracereigenschaften */ long type; /* Item-Typ */ char *name; /* Gruppenname */ /* Diffusionsmodelle und zugehoerige Beschreibungswerte */ int diffusion_model; /* Diffusionsmodell */ int count_of_diffusion_model_values; /* Anzahl und Werte zur Spezifikation der */ double *diffusion_model_values; /* Parameter fuer das Diffusionsprozess */ /* Zerfallsmodelle und zugehoerige Beschreibungswerte in der geloesten Phase */ int soluted_decay_model; /* Zerfallsmodell in geloester phase */ int count_of_soluted_decay_model_values; /* Anzahl und Werte zur Spezifikation der */ double *soluted_decay_model_values; /* Parameter fuer das in der Loesungsphase Zerfallsprozess wie z.B. Zerfallsrate */ /* Zerfallsmodelle und zugehoerige Beschreibungswerte in der sorbierten Phase */ int sorbed_decay_model; /* Zerfallsmodell in sorbierter phase */ int count_of_sorbed_decay_model_values; /* Anzahl und Werte zur Spezifikation der */ double *sorbed_decay_model_values; /* Parameter fuer das in der geloesten Phase Zerfallsprozess wie z.B. Zerfallsrate */ /* Sorption */ int isotherm_model; /* Isothermen-Typ */ int count_of_isotherm_model_values; /* Anzahl der Isothermen-Koeffizienten */ double *isotherm_model_values; /* Isothermen-Koeffizienten */ /* Chemische Nichtsgleichgewichtsmodelle und zugehoerige Beschreibungswerte */ int chemical_nonequilibrium_model; /* Chemisches Nichtsgleichgewichtsmodell */ int count_of_chemical_nonequilibrium_model_values; /* Anzahl und Werte zur Spezifikation double *chemical_nonequilibrium_model_values; /* der Parameter fuer das chemische Nichtsgleichgewichtsmodell */ /* Physikalische Nichtsgleichgewichtsmodelle und zugehoerige Beschreibungswerte */ int physical_nonequilibrium_model; /* Physikalisches Nichtsgleichgewichtsmodell */ int count_of_physical_nonequilibrium_model_values; /* Anzahl und Werte zur Spezifikation */ double *physical_nonequilibrium_model_values; /* der Parameter fuer das physikalische Nichtsgleichgewichtsmodell */ /* Solution */ int solubility_model; /* Mathematisches Loesungsmodell */ int solubility_dependence_model; int count_of_solubility_model_field_values; /* Anzahl und Werte zur Spezifikation des */ double *solubility_model_field_values; /* Arbeitsbereiches fuer das Loesungsmodell */} TRACER_PROPERTIES;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
133
12.4.1.2 Object Names
char *name_tracer_properties = "TRACER_PROPERTIES"; char *name_tracer_properties_component; Subject
Name variable
Value
Specifier
TP Group
name_tracer_properties
TRACER_PROPERTIES
TP Object
name_tracer_properties_component
TRACER_PROPERTIES1 TRACER_PROPERTIES2 ...
+component_number
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
134
12.4.1.3 Construction TRACER_PROPERTIES = *tp Tracer properties data can be created either from reading a RFD file or interactively by use of the tracer properties dialog. • Construction from RFD file int FctTracerPropertiesNew (char *data, int found, FILE * f);
tp = create_tracer_properties(name); insert_material_properties_list(tp);
• Construction according to number of components
CreateTracerPropertiesDefaults(long number_of_components) AddTracerPropertiesObject(void); RemoveTracerPropertiesObject(char *name); RenameTracerPropertiesObjects(void);
• Destruction by MAT list destruction
void DestroyMaterialPropertiesList(void) 12.4.1.4 Data Access Access to TP objects is possible either from MAT list or from MAT table. • from MAT list by name: Data object:
tp = GetTracerPropertiesObject(char *name,TRACER_PROPERTIES *tp); Object properties:
set_tp_property(value,tp) value = get_tp_property(tp)
• from MAT table by group, phase, component numbers:
double GetTracerProperty(long index, long phase, long component);
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
135
12.4.2 Keyword Description Tracer properties (chemical species) can be specified using the keyword #TRACER_PROPERTIES This keyword may be used repeatedly, then several species are defined. Default values are printed bold. Param. RF variable Value Meaning Unit Diffusion process N1 .diffusion_model
0 1 2 3 4 5 6 7
Diffusion model: No diffusion (0) Constant value for diffusion (1) Linear function (not ready) (2) Worch model (1) Hayduk and Laudie model (1) Wilke and Chang (2) Stokes-Einstein (1) FSG-Methode (2)
[ - ] [ m2 / s]
Decay process in solution phase N2 .soluted_decay_model
0 1 2 3 4 5 6
Decay model: - no decay (0) - First Order Decay with
constant Decay Rate (1) - First Order Decay with
variable Decay Rate - N-th Order Decay - N-th Order Decay - Monod or Michaelis-Menten - Monod or Michaelis-Menten
[ - ]
Decay process in sorbed phase N3 .sorbed_decay_model
0 1 2 3 4 5 6
Decay model: - no decay (0) - First Order Decay with
constant Decay Rate (1) - First Order Decay with
variable Decay Rate - Not ready - Not ready - Not ready - Not ready
[ m ]
Soprtion process N4 .isotherm_model
0 1 2 3 4 5 6
Isotherm model: - No Isotherm (0) - Henry (1) - Freundlich (2) - Langmuir (2) - Freundlich Langmuir - Double Langmuir - Extented Freundlich
[ - ]
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
136
7 8 9 10 11
- Gunary - ??? - Fitter-Sutton - Power - Modified Kielland
Chemical nonequilibrium model N5 .chemical_nonequilibrium_
model
0 1 2 3 4 5 6 7
Decay model: - No nonequilibrium model (0) - first order reaction (1) - n-th order reaction - reaction with langmuir kinetik - non reversible reaction - power kinetik - (first order reaction - n-th order reaction
[ - ]
Physical nonequilibrium model N6 .physical_nonequilibrium_
model
0 1 2
Decay model: - No nonequilibrium model (0) - Coats & Smith (1) - Coats & Smith
[ - ]
solubility_model N6 .solubility_model
0 1 2
Solution model: - no solution (0) - constant (λ , CS ) - Cosenza (?)
[ - ]
Default values are printed bold. Example #TRACER_PROPERTIES ; diffusion model 0 ; diffusion model type ; decay in soluted phase 1 2.0e-7 1.0 ; decay model type, decay rate in soluted phase, dummy ; decay in sorbed phase 1 2.0e-7 1.0 ; decay model type, decay rate in sorbed phase, dummy ; isotherm model 1 6.8e-5 ; isotherm model type (Henry), kd ; nonequilibrium chemical model 1 1.00e-4 ; chemical nonequilibrium model type, transfer rate value ; nonequilibrium physical model 0 ; physical nonequilibrium model type ; solution/dissolution model 0 ;model type
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
12.4.3 Ressource Description Source file Class Base class Ressource-ID
sh_mat.h/ccp CTracerProperties CPropertyPage IDD_TRACER_PROPERTIES
material.h/c TRACER_PROPERTIES
Control elements Member variables Member functions
RF-variables
IDC_RADIO_TP_M1 IDC_RADIO_TP_M2 IDC_RADIO_TP_M3
m_iChemicalModel
IDC_RADIO_TP_1 IDC_RADIO_TP_2 IDC_RADIO_TP_3 IDC_RADIO_TP_M1 IDC_RADIO_TP_S1
m_iReactionIsothermType m_iChemicalModel m_iSolutionModel
OnRadioTP1 OnRadioTP2 OnRadioTP3
.type
IDC_EDIT_TP_1 IDC_EDIT_TP_3 IDC_EDIT_TP_4 IDC_EDIT_TP_5 IDC_EDIT_TP_6 IDC_EDIT_TP_7 IDC_EDIT_TP_8 IDC_EDIT_TP_9 IDC_EDIT_TP_10 IDC_EDIT_TP_11
m_strTracerComponentName m_dDiffusionConstant m_dDecayRate m_dSolubility m_dDissolutionRate m_dPartitioningCoefficient m_dSorptionCoefficientK1 m_dSorptionCoefficientK2 m_dExchangeParameter m_dDecayRateSorpted
.name
.molecular_diffusion .decay_rate .solubility .dissolution_rate .partitioning_coefficient .sorption_k1 .sorption_k2 .nonequilibrium_coefficient
IDC_LIST IDC_LIST_TP_1
m_LBMaterialGroup m_LBComponentNumber
OnSelchangeList1
ID_CANCEL ID_OK
OnInitDialog()
IDC_BUTTON_TP_1 IDC_BUTTON_TP_2 IDC_BUTTON_TP_3 IDC_BUTTON_TP_4 IDC_BUTTON_TP_5
OnSaveData() OnButtonAdd OnButtonUpdate OnButtonRemove OnButtonRemoveAll
137
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
12.4.4 GUI Functions
12.4.4.1 Class representation
CTracerProperties 12.4.4.2 View Functions void CRockflowView::OnMaterialsChemicals() void CRockflowView::OnUpdateMaterialsChemicalSpecies(CCmdUI* pCmdUI) 12.4.4.3 Document Data Exchange void CRockflowView::WriteRF2Doc_MaterialProperties() void CRockflowView::WriteDoc2RF_MaterialProperties() 12.4.4.4 Dialog Data Exchange and Messages void CTracerProperties::OnInitDialog() void CMaterialsTracer::OnRadioTP1() void CMaterialsTracer::OnRadioTP2() void CMaterialsTracer::OnRadioTP3() void CMaterialsTracer::GetTracerData(char *name)
tp = GetTracerPropertiesObject(name,tp) void CMaterialsTracer::SetTracerData(char *name)
tp = GetTracerPropertiesObject(name,tp); void CMaterialsTracer::OnSaveData()
CTracerProperties::SetTracerData(name) tp = GetTracerPropertiesObject(name,tp)
void CMaterialsTracer::OnButtonAdd() void CMaterialsTracer::OnButtonUpdate() void CMaterialsTracer::OnButtonRemove() void CMaterialsTracer::OnButtonRemoveAll() void CMaterialsTracer::OnSelchangeList1() void CMaterialsTracer::UpdateList1() 12.4.4.5 Auxiliary Functions void CMaterialsTracer::StatusDialogResourceElements(void)
139
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
12.5 Solid Properties
12.5.1 Data Concept
Object: SOLID_PROPERTIES Object list: LIST_MATERIAL_PROPERTIES Sources: material.h/c
12.5.2 Keyword Description Solid properties can be specified using the keyword #SOLID_PROPERTIES This keyword is mandatory for the use of the deformation model (0010) and may be used repeatedly, then several species are defined.
Parameter
Value
Meaning
Unit
N1 E Modulus of elasticity [ Pa ] N2 ν Poisson's ratio [ - ]
Example #SOLID_PROPERTIES 2000.0 ; Modulus of elasticity 0.3 ; Poisson's ratio
140
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
141
13 Adaptation This menu is used to specify the required parameters for controling the automatic grid adaptation. To activiate grid adaptation, the adaptive_mesh_refinement_flag has to set (see 4 MODELS).
13.1 Data Concept Object: ADAPTATION (AdaptData, IndData) Object array: adapt_data[number_adapt_quanitites] Sources: adaptiv.h/c
13.1.1 Data Organization 13.1.1.1 Adaptation Control Parameter adaptive_mesh_refinement_flag
static int method_adaptation; /* Methode/Gitteradaption */ static int adaptation_timestep; /* Adaptionsintervall */ static int method_irr_nodes; /* Methode Irregulaere Knoten 1: Eliminierung in Elementmatrizen 2: Eliminierung im Gesamtgleichungssystem */ static int timestep_ref_number; /* Anzahl Verfeinerungen pro Zeitschritt */ static int max_ref_level; /* Maximaler Verfeinerungsgrad */ static int ref_neighbours_2d; /* Anzahl der feineren 2d-Nachbarn, ab der ein 2d-Element verfeinert wird */ static int ref_neighbours_3d; /* Anzahl der feineren 3d-Nachbarn, ab der ein 3d-Element verfeinert wird */ static int method_node_limiter; /* Methode Knoten-'Limiter' */ static int curve_node_limiter; /* Zeitkurve fuer den Knoten-'Limiter' */ static long max_nodes; /* Maximale Anzahl Knoten */ static int output_adaptation; /* Ausgabe von max, min und Mittelwert fuer jeden Indikator (in jedem Zeitschritt) 0: keine Ausgabe 1: Ausgabe */
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
13.1.1.2 Adaptation Quantity Parameter
13.1.1.3 Adaptation Model Parameter Interface between Adaptation and Model
1 bRa
bRnnnnnnD
AdaptData *adap_data int number_adapt_quantities
typedef struct { int ref_quantity;
int method_ind; int number_phase_component; int quantity_max_ref_level; int coarsement_correction; long number_ind;
IndData *ind_data; int ref_nval0; int ref nval1;
} AdaptData;
*ad
*ad
*ad
adap data[i]
typedef struct { int ref_ind[3][2]; DoubleFuncLIII Ind[3][2]; double ref_param[3][2][3]; int ref_tol;
} IndData;
static int *index_phase_press; static int *index_temp; static int *index_comp_conc; static int *index_phase_satu; static int *index_comp_sorbed_conc; static int *index_comp_solute_conc;
142
3.1.2 Object Identification
y number F-FEM variable Identifier dapt_data[i].ref_quantity 0
1 2 3 4 5
fluid pressure tracer component temperature saturation soluted components sorpted components
y names F-FEM variable RF-Shell variable Value ame_adaptation_pressure ADAPTATION_PRESSURE ame_ adaptation_saturation ADAPTATION_SATURATION ame_adaptation_component ADAPTATION_COMPONENT ame_adaptation_temperature ADAPTATION_TEMPERATURE ame_adaptation_solute_component ADAPTATION_SOLUTE_COMPONENT ame_adaptation_sorbed_component
CAdaptation m_ap m_ap.m_strAPName
ADAPTATION_SORBED_COMPONENTata type: char [80] Data type: CString
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
13.1.3 Construction 13.1.3.1 Adaptation Control Parameter InitAdaptationControlParameter()
13.1.3.2 Adaptation Quantity Parameter Array: adap_data[], number_adapt_quantities
CreateAdaptationParameterArray() DestroyAdaptationParameterArray()
From RFD file:
int FctAdaptationPressure(char *data, int found, FILE * f) int FctAdaptationComponent(char *data, int found, FILE * f) int FctAdaptationSaturation(char *data, int found, FILE * f) int FctAdaptationSorbedComponent(char *data, int found, FILE * f) int FctAdaptationSoluteComponent(char *data, int found, FILE * f) int FctAdaptationTemperature(char *data, int found, FILE * f)
int FctAdaptationQuantities(char *data, int found, FILE * f, int type, char *keyword)
On request:
CreateAdaptationQuantityParameter() DestroyAdaptationQuantityParameter()
13.1.3.3 Adaptation Model Parameter CreateAdaptationModelParameter() DestroyAdaptationModelParameter()
13.1.4 Data Access type GetAdaptProperty (int index) void SetAdaptProperty (int index, type property) Index is the array index: adapt_data[index]
143
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
13.2 Keyword Description The following keywords are available to specify grid adaptation parameters for field functions.
Keywords Name variables #ADAPTATION General control parameter #ADAPTATION_PRESSURE Quantity parameter for fluid pressure #ADAPTATION_COMPONENT Quantity parameter for components #ADAPTATION_SATURATION Quantity parameter for fluid saturation #ADAPTATION_SORBED_COMPONENT Quantity parameter for sorbed components #ADAPTATION_SOLUTE_COMPONENT Quantity parameter for soluted components #ADAPTATION_TEMPERATURE Quantity parameter for temperature
By repeatedly use of the keywords, the parameters for corresponding phases and components are specified.
13.2.1 Adaptation Control Parameter #ADAPTATION Parameter RF Variables Values Meaning
N1 method_adaptation int 0 1 2 3 4
Adaptation loop at time level: - no adaptation - calculation - adaptation - ... - calculation - adaptation – calculation - ... - calculation - calculation - adaptation - ... - calculation - adaptation – calculation - ... - calculation
if N1=3 adaptation_timestep int Time step number interval for adaptation if N1=4 adaptation_timestep int Time step number interval for adaptation N2 max_ref_level int Maximum refinement level N3 timestep_ref_number int Maximum refinement at time step N4 method_irr_nodes int
1 2
Regularization method: - at element level - at equation system level
N5 ref_neighbours_2d int Number of neighbours (2-D elements) to be refined (secondary criterium)
N6 ref_neighbours_3d int Number of neighbours (3-D elements) to be refined (secondary criterium)
N7 method_node_limiter int 0 1 2
Method for node limitation - no limitations - limitation 1 - limitation 2
if N7=1 curve_node_limiter int Time curve number max_nodes long
< 0 = 0 > 0
Maximum number of allowed nodes during grid adaptation - indicators will be changed to succeed - no limitations - indicators will be changed to succeed
if N7=2 curve_node_limiter int Time curve number max_nodes long Maximum number of allowed nodes during grid adaptation N8 output_adaptation Extended output information during simulation
144
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
13.2.2 Adaptation Quantity Parameter #ADAPTATION_PRESSURE #ADAPTATION_COMPONENT #ADAPTATION_SATURATION #ADAPTATION_SORBED_COMPONENT #ADAPTATION_SOLUTE_COMPONENT #ADAPTATION_TEMPERATURE Parameter RF Variables Values Meaning
N1 method_ind int 0 1 2 3
Adaptation method: - using default values - for analytical estimators - for heuristical indicators - professional
Parameter RF Variables Values Meaning
N1 method_ind 1 For analytical estimators N2 coarsement_correction 0
1
N3 number_ind int Number of indicator data blocks N4... l=0;l<number_ind
ind_data[l].ref_tol int 0 1 2
Tolerance parameter: - based on absolute values - based on average values - based on maximum values
N5,6,7 k=0 k=1 k=2
ind_data[l].ref_param[0][0][k] Indicator parameter for 1-D diffusion elements - refinement border - coarsement border - dummy
N8,9,10 k=0 k=1 k=2
ind_data[l].ref_param[0][1][k] Indicator parameter for 1-D advection elements - refinement border - coarsement border - dummy
N11,12,13 k=0 k=1 k=2
ind_data[l].ref_param[1][0][k] Indicator parameter for 2-D diffusion elements - refinement border - coarsement border - dummy
N14,15,16 k=0 k=1 k=2
ind_data[l].ref_param[1][1][k] Indicator parameter for 2-D advection elements - refinement border - coarsement border - dummy
N17,18,19 k=0 k=1 k=2
ind_data[l].ref_param[2][0][k] Indicator parameter for 3-D diffusion elements - refinement border - coarsement border - dummy
N20,21,22 k=0 k=1 k=2
ind_data[l].ref_param[2][1][k] Indicator parameter for 3-D advection elements - refinement border - coarsement border - dummy
l data set index i element dimension j diffusion / advection k parameter
145
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Parameter RF Variables Values Meaning
N1 method_ind 2 Identical parameter for both diffusion and advection-dominated elements
N2 coarsement_correction 0 1
N3 number_ind int Number of indicator data blocks N4... l=0;l<number_ind
ind_data[l].ref_tol int 0 1 2
Tolerance parameter: - based on absolute values - based on average values - based on maximum values
N5,6,7 k=0 k=1 k=2
ind_data[l].ref_param[0][0][k] Indicator parameter for 1-D elements - refinement border - recoarsement border - dummy
N8,9,10 k=0 k=1 k=2
ind_data[l].ref_param[1][0][k] Indicator parameter for 2-D elements - refinement border - recoarsement border - dummy
N11,12,13 k=0 k=1 k=2
ind_data[l].ref_param[2][0][k] Indicator parameter for 3-D elements - refinement border - recoarsement border - dummy
Parameter RF Variables Values Meaning
N1 method_ind 3 Identical parameter for both diffusion and advection-dominated elements special features for time control
N2 quantity_max_ref_level[0] int Maximum refinement level for 1-D elements N3 quantity_max_ref_level[1] int Maximum refinement level for 2-D elements N4 quantity_max_ref_level[2] int Maximum refinement level for 3-D elements N5 coarsement_correction 0
1
N6 number_ind int Number of indicator data blocks N7 l=0;l<number_ind
ind_data[l].ref_tol int 0 1 2
Tolerance parameter: - based on absolute values - based on average values - based on maximum values
N8,9, N10,11,12 k=0 k=1 k=2 k=3 K=4
ind_data[l].ref_param[0][0][k] Indicator parameter for 1-D elements - time curve refinement - time curve recoarsement - refinement border - recoarsement border - dummy
N13,14, N15,16,17 k=0 k=1 k=2 k=3 K=4
ind_data[l].ref_param[1][0][k] Indicator parameter for 2-D elements - time curve refinement - time curve recoarsement - refinement border - recoarsement border - dummy
N18,19 N20,21,22 k=0 k=1 k=2 k=3 K=4
ind_data[l].ref_param[2][0][k] Indicator parameter for 3-D elements - time curve refinement - time curve recoarsement - refinement border - recoarsement border - dummy
146
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
147
13.3 Ressource Description
13.3.1 General Adapation Parameter
Source file Class Base class Ressource-ID
sh_adp.h/ *.cpp CAdaptationGeneral CDialog IDD_ADP_GENERAL
gridadap.h/c
Control elements Member variables Member functions RF-variables OnInitDialog() IDC_CHECK_ADP_1 m_bIndicatePressure IDC_CHECK_ADP_2 m_bIndicateSaturation IDC_CHECK_ADP_3 m_bIndicateTemperature IDC_CHECK_ADP_4 m_bIndicateConcentration IDC_EDIT_ADP_G1 m_iMaximumRefinementLevel max_ref_level IDC_EDIT_ADP_G2 m_iMaximumPerTimeStep timestep_ref_number IDC_EDIT_ADP_G3 m_iRefineNeighboured2Delements ref_neighbours_2d IDC_EDIT_ADP_G4 m_iRefineNeighboured3DElements ref_neighbours_3d IDC_EDIT_ADP_G5 m_IMaximumNodes +max_nodes IDC_EDIT_ADP_G6 m_IDesiredNodes -max_nodes IDC_RADIO_ADP_M1 m_iAdaptationMethod method IDC_RADIO_ADP_M2 IDC_RADIO_ADP_O1 m_iAdaptationNodes IDC_RADIO_ADP_O2 IDC_RADIO_ADP_O3 IDC_BUTTON_ADP_1 OnEnablePressure() IDC_BUTTON_ADP_2 OnEnableSaturation() IDC_BUTTON_ADP_3 OnEnableTemperature() IDC_BUTTON_ADP_4 OnEnableConcentration() OnOK()
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
13.3.2 Adaptation Quantity Source file Class Base class Ressource-ID
sh_adp.h/ *.cpp CAdaptationQuantity CDialog IDD_ADP_QUANTITY
gridadap.h/c
Control elements Member variables Member functions
RF-variables
OnInitDialog() IDC_EDIT_ADP_Q0 m_strName name_adapt_... l = .number_ind .ind_data[l].ref_tol IDC_EDIT_ADP_Q1 m_iDiff1DIndicatorType .ind_data[l].ref_ind[0][0] IDC_EDIT_ADP_Q2 m_iDiff2DIndicatorType .ind_data[l].ref_ind[1][0] IDC_EDIT_ADP_Q3 m_iDiff3DIndicatorType .ind_data[l].ref_ind[2][0] IDC_EDIT_ADP_Q4 m_fDiff1DIndicatorParameter1 .ind_data[l].ref_param[0][0][0] IDC_EDIT_ADP_Q5 m_fDiff1DIndicatorParameter2 .ind_data[l].ref_param[0][0][1] IDC_EDIT_ADP_Q6 m_fDiff1DIndicatorParameter3 .ind_data[l].ref_param[0][0][2] IDC_EDIT_ADP_Q7 m_fDiff2DIndicatorParameter1 .ind_data[l].ref_param[1][0][0] IDC_EDIT_ADP_Q8 m_fDiff2DIndicatorParameter2 .ind_data[l].ref_param[1][0][1] IDC_EDIT_ADP_Q9 m_fDiff2DIndicatorParameter3 .ind_data[l].ref_param[1][0][2] IDC_EDIT_ADP_Q10 m_fDiff3DIndicatorParameter1 .ind_data[l].ref_param[2][0][0] IDC_EDIT_ADP_Q11 m_fDiff3DIndicatorParameter2 .ind_data[l].ref_param[2][0][1] IDC_EDIT_ADP_Q12 m_fDiff3DIndicatorParameter3 .ind_data[l].ref_param[2][0][2] IDC_EDIT_ADP_Q13 m_iAdve1DIndicatorType .ind_data[l].ref_ind[0][1] IDC_EDIT_ADP_Q14 m_iAdve2DIndicatorType .ind_data[l].ref_ind[1][1] IDC_EDIT_ADP_Q15 m_iAdve3DIndicatorType .ind_data[l].ref_ind[2][1] IDC_EDIT_ADP_Q16 m_fAdve1DIndicatorParameter1 .ind_data[l].ref_param[0][1][0] IDC_EDIT_ADP_Q17 m_fAdve1DIndicatorParameter2 .ind_data[l].ref_param[0][1][1] IDC_EDIT_ADP_Q18 m_fAdve1DIndicatorParameter3 .ind_data[l].ref_param[0][1][2] IDC_EDIT_ADP_Q19 m_fAdve2DIndicatorParameter1 .ind_data[l].ref_param[1][1][0] IDC_EDIT_ADP_Q20 m_fAdve2DIndicatorParameter2 .ind_data[l].ref_param[1][1][1] IDC_EDIT_ADP_Q21 m_fAdve2DIndicatorParameter3 .ind_data[l].ref_param[1][1][2] IDC_EDIT_ADP_Q22 m_fAdve3DIndicatorParameter1 .ind_data[l].ref_param[2][1][0] IDC_EDIT_ADP_Q23 m_fAdve3DIndicatorParameter2 .ind_data[l].ref_param[2][1][1] IDC_EDIT_ADP_Q24 m_fAdve3DIndicatorParameter3 .ind_data[l].ref_param[2][1][2] IDC_EDIT_ADP_Q25 m_iMaximumRefinementLevelQuantity .quality_max_ref_level IDC_RADIO_ADP_Q1 m_iMassConservationScheme .coarsement_correction IDC_LIST_ADP_1 m_LBAdaptationQuantity OnSelchange
ListADP1() phase / component
OnOK()
148
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
150
13.4 GUI Data Concept
13.4.1 Class Representation
CAdaptationGeneral CAdaptationQuantity
13.4.2 Data Exchange Concept
RF-Object ADAPTATION Dialog-Class CAdaptationQuantity
*ap
*ap
*ap
AdapData *adap_data adap_data[i]
Get_RF2Dialog_Object(i)
Set_Dialog2RF_Object(i)
typedef struct { int ref_quantity; int number_phase_component; int quantity_max_ref_level; int coarsement_correction; long number_ind;
IndData *ind_data; int ref_nval0; int ref nval1;
} AdaptData;
typedef struct { int ref_ind[3][2]; DoubleFuncLIII Ind[3][2]; double ref_param[3][2][3]; int ref_tol;
} IndData;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
13.5 GUI Functions
13.5.1 View Functions (CRockflowView) View functions connect the mainframe menu (pull-down menus) with the individual dialogs.
void CRockflowView::OnAdaptationGeneral() void CRockflowView::OnAdaptationPressure() void CRockflowView::OnAdaptationSaturation() void CRockflowView::OnAdaptationTemperature() void CRockflowView::OnAdaptationSolutedComponents() void CRockflowView::OnAdaptationSorptedComponents()
13.5.2 Dialog Data Exchange
// i - is the index of array adap_data[i] void CAdaptationQuantity::Get_RF2Dialog_Object(int i)
// Transfer object data to dialog data void CAdaptationQuantity::Set_Dialog2RF_Object(int i) // Transfer dialog data to object data
13.5.3 Dialog Messages Handling - General adaptation data BOOL CAdaptationGeneral::OnInitDialog()
// Data transfer and initialization of ressource elements void CAdaptationGeneral::OnOK() // Data transfer - Quantity adaptation data BOOL CAdaptationQuantity::OnInitDialog()
// Data transfer and initialization of ressource elements void CAdaptationQuantity::OnSelchangeListADP1() // Select corresponding phase or component void CAdaptationQuantity::OnOK() // Data transfer
13.5.4 Auxiliary Functions void CAdaptationQuantity::StatusDialogResourceElements(int
C:\rockflow\manuals\rf_win\docs\15_Renumber.doc
151
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
14 Graphics This menu is used to specify the required parameters for controling the automatic grid adaptation. To activiate grid adaptation, the adaptive_mesh_refinement_flag has to set (see 4 MODELS).
14.1 Data Concept Object: ADAPTATION (AdaptData, IndData) Object array: adapt_data[number_adapt_quanitites] Sources: gridadap.h/c
14.1.1 Data Organization CClientDC dc(this); int width,height; CListBox m_List; double m_dXmin; double m_dXmax; double m_dYmin; double m_dYmax; int m_nGraficType; Methods void DrawFeflowSMHData(CClientDC *dc,int width,int height); void DrawRFIMesh(CClientDC *dc,int width,int height); void DrawTemporalBreakthroughCurves(CClientDC *dc,int width,int height); void DrawTemporalBreakthroughCurves1(CClientDC *dc,int width,int height); void DrawProfileBreakthroughCurves(CClientDC *dc,int width,int height); void PickElement(CClientDC *dc,int width,int height,CPoint point); void MFC_FillElement(int nn,double *nx,double *ny,CClientDC *dc,CBrush *Brush);
152
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
14.1.2 Object Identification 14.1.3 Construction
14.1.4 Data Access
153
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
14.2 Keyword Description The following keywords are available to specify grid adaptation parameters.
Keywords Name variables #ADAPTATION General control parameter #ADAPTATION_PRESSURE #ADAPTATION_COMPONENT #ADAPTATION_SATURATION #ADAPTATION_SORBED_COMPONENT #ADAPTATION_SOLUTE_COMPONENT
By repeatedly use of the keywords, the parameters for corresponding phases and components are specified.
154
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
14.3 Ressource Description
Source file Class Base class Ressource-ID
sh_graf.h/ *.cpp CGrafic CDialog IDD_GRAFICS
plot.h/c
Control elements Member variables Member functions RF-variables OnInitDialog() IDC_CHECK_GRAF_1 m_bDisplayMesh IDC_CHECK_GRAF_2 m_bDisplayNodeNumbers IDC_CHECK_GRAF_3 m_bDisplayElementNumbers IDC_CHECK_GRAF_4 m_bDisplayMaterialGroups IDC_CHECK_GRAF_5 m_bDisplayBoundaryConditions IDC_CHECK_GRAF_6 m_bIsosurfaces m_bDisplayGrid IDC_RADIO_GRAFIC_1 m_nGraficType IDC_EDIT_GRAF_1 m_dXmin IDC_EDIT_GRAF_2 m_dXmax IDC_EDIT_GRAF_3 m_dYmin IDC_EDIT_GRAF_4 m_dYmax IDC_EDIT_GRAF_5 m_dUmin IDC_EDIT_GRAF_6 m_dUmax IDC_EDIT_GRAF_7 m_dUstep IDC_EDIT_GRAF_8 m_lNode1 IDC_EDIT_GRAF_9 m_lNode2 IDC_LIST_GRAF_1 m_ListQuantities IDC_LIST_GRAF_2 m_ListObservationPoints OnOK()
155
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
156
14.4 GUI Data Concept
14.4.1 Class Representation
CGrafic
14.4.2 Data Exchange Concept
RF-Object ADAPTATION Dialog-Class CAdaptationQuantity
*ap
*ap
*ap
AdapData *adap_data adap_data[i]
Get_RF2Dialog_Object(i)
Set_Dialog2RF_Object(i)
typedef struct { int ref_quantity; int number_phase_component; int quantity_max_ref_level; int coarsement_correction; long number_ind;
IndData *ind_data; int ref_nval0; int ref nval1;
} AdaptData;
typedef struct { int ref_ind[3][2]; DoubleFuncLIII Ind[3][2]; double ref_param[3][2][3]; int ref_tol;
} IndData;
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
14.5 GUI Functions
14.5.1 View Functions (CRockflowView) void CRockflowView::OnDraw(CDC* pDC)
14.5.2 Dialog Data Exchange
// i - is the index of array adap_data[i] void CAdaptationQuantity::Get_RF2Dialog_Object(int i)
// Transfer object data to dialog data void CAdaptationQuantity::Set_Dialog2RF_Object(int i) // Transfer dialog data to object data
14.5.3 Dialog Messages Handling - General adaptation data BOOL CAdaptationGeneral::OnInitDialog()
// Data transfer and initialization of ressource elements void CAdaptationGeneral::OnOK() // Data transfer - Quantity adaptation data BOOL CAdaptationQuantity::OnInitDialog()
// Data transfer and initialization of ressource elements void CAdaptationQuantity::OnSelchangeListADP1() // Select corresponding phase or component void CAdaptationQuantity::OnOK() // Data transfer
14.5.4 Auxiliary Functions void CAdaptationQuantity::StatusDialogResourceElements(int i)
157
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
Contents 1 Data Concept.....................................................................................................................5
1.1 ROCKFLOW Objects.....................................................................................................5 1.2 ROCKFLOW Source Files ..............................................................................................7
2 Data Files ..........................................................................................................................8 2.1 Data Formats ..............................................................................................................8 2.2 File handling GUI functions ..........................................................................................9 2.3 Data Converter..........................................................................................................10 2.4 RF Keyword Reference...............................................................................................11
3 Simulation .......................................................................................................................13 4 Model ..............................................................................................................................14
4.1 Data Concept ............................................................................................................14 4.1.1 Simulation Control Data ......................................................................................15 4.1.2 Model Node Data ................................................................................................16 4.1.3 Model Element Data............................................................................................17 4.1.4 Model Output Data .............................................................................................18
4.2 Keyword Description..................................................................................................19 4.2.1 Project Title........................................................................................................19 4.2.2 Model.................................................................................................................20
4.3 Ressource Description................................................................................................23 Data and GUI Functions.......................................................................................................24 Data and GUI Functions.......................................................................................................24
4.3.1 Data Construction Functions ................................................................................24 4.3.2 View Functions (CRockflowView)..........................................................................24 4.3.3 Document Data Exchange ...................................................................................24 4.3.4 Dialog Message and Data Exchange.....................................................................24
5 Time Discretization...........................................................................................................25 5.1 Data Concept ............................................................................................................25
5.1.1 Data Object ........................................................................................................25 5.1.2 Construction .......................................................................................................25
5.2 Keyword Description..................................................................................................27 5.3 Resource Description .................................................................................................28 5.4 Data and GUI Functions.............................................................................................29
5.4.1 RF Data Functions...............................................................................................29 5.4.2 View Functions (CRockflowView)..........................................................................29 5.4.3 Document Data Exchange ...................................................................................29 5.4.4 Dialog Data Exchange and Message Functions......................................................29 5.4.5 Auxiliary Functions..............................................................................................29
6 Data Output.....................................................................................................................30 6.1 Nodal Results ............................................................................................................30
6.1.1 Data Concept .....................................................................................................30 6.1.2 Keyword Description ...........................................................................................31 6.1.3 Resource Description ..........................................................................................32 6.1.4 Data and GUI Functions ......................................................................................34
6.2 Temporal Profiles ......................................................................................................35 6.2.1 Data Concept .....................................................................................................35 6.2.2 Keyword Description ...........................................................................................36 6.2.3 Resource Description ..........................................................................................37 6.2.4 Data and GUI Functions ......................................................................................38
6.3 Output Object ...........................................................................................................39 6.4 Backup Files..............................................................................................................40
7 Numerical Method ............................................................................................................41 7.1 Data Concept ............................................................................................................41
158
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
7.1.1 Data object ........................................................................................................41 7.1.2 Construction .......................................................................................................42 7.1.3 Names ...............................................................................................................42 7.1.4 Data Access........................................................................................................42
7.2 Keyword Description..................................................................................................43 7.3 Resource Description .................................................................................................48 7.4 GUI Functions ...........................................................................................................49
7.4.1 RF Data Functions...............................................................................................49 7.4.2 View Functions ...................................................................................................49 7.4.3 Document Data Exchange ...................................................................................49 7.4.4 Dialog Functions .................................................................................................49 7.4.5 Auxiliary Function ...............................................................................................49
8 Solver..............................................................................................................................50 8.1 Linear Equation Solver ...............................................................................................50
8.1.1 Data Concept .....................................................................................................50 8.1.2 Keyword Description ...........................................................................................55 8.1.3 Ressource Description .........................................................................................57 8.1.4 GUI Functions.....................................................................................................58
8.2 Non-Linear Solver......................................................................................................59 8.2.1 Data Concept .....................................................................................................59 8.2.2 Solver Implementation ........................................................................................62 8.2.3 Keyword Description ...........................................................................................63 8.2.4 Ressource Description .........................................................................................64 8.2.5 GUI Functions.....................................................................................................65
8.3 Iteration Process .......................................................................................................66 8.3.1 Data Concept .....................................................................................................66 8.3.2 Keyword Description ...........................................................................................69 8.3.3 Ressource Description .........................................................................................70 8.3.4 GUI Functions.....................................................................................................71
9 Initial Conditions ..............................................................................................................72 9.1 Data Concept ............................................................................................................72
9.1.1 Data Organization...............................................................................................72 9.1.2 Object Names.....................................................................................................73 9.1.3 Data Construction ...............................................................................................73 9.1.4 Data Access........................................................................................................73
9.2 Keyword Description..................................................................................................74 9.3 Ressource Description................................................................................................75 9.4 GUI Data Concept .....................................................................................................77
9.4.1 Class Representation...........................................................................................77 9.4.2 Document Data Concept .....................................................................................77 9.4.3 Object Data Concept ...........................................................................................78
9.5 GUI Functions ...........................................................................................................79 9.5.1 View Functions (CRockflowView)..........................................................................79 9.5.2 Document Data Exchange ...................................................................................79 9.5.3 Dialog Data Exchange .........................................................................................79 9.5.4 Dialog Messages .................................................................................................79 9.5.5 Functions for String Concept................................................................................80 9.5.6 Auxiliary Functions..............................................................................................80
10 Boundary Conditions .....................................................................................................82 10.1 Data Concept.........................................................................................................82
10.1.1 Data Organization...............................................................................................82 10.1.2 Object Names.....................................................................................................83 10.1.3 Construction .......................................................................................................83 10.1.4 Data Access........................................................................................................84
159
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
10.2 Keyword Description...............................................................................................85 10.3 Ressource Description ............................................................................................88 10.4 GUI Data Concept ..................................................................................................90
10.4.1 Class Representation...........................................................................................90 10.4.2 Document Data Concept .....................................................................................90 10.4.3 Object Data Concept ...........................................................................................91
10.5 GUI Functions ........................................................................................................92 10.5.1 View Functions (CRockflowView)..........................................................................92 10.5.2 Document Data Exchange ...................................................................................92 10.5.3 Dialog Data Exchange .........................................................................................92 10.5.4 Dialog Messages .................................................................................................92 10.5.5 Functions for String Concept................................................................................93 10.5.6 Auxiliary Functions..............................................................................................93
11 Sources........................................................................................................................94 11.1 Data Concept.........................................................................................................94
11.1.1 Source-Term Objects (SS-O) ...............................................................................94 11.1.2 Source-Term Matrices (ST-OM)............................................................................97
11.2 Object Communication ...........................................................................................98 11.2.1 ST-ObjectList (ST-OL) <---> ST-ObjectMatrix (ST-OM) .........................................98 11.2.2 SS-ObjectMatrix (ST-OM) <---> LES ....................................................................98
11.3 Keyword Description...............................................................................................99 11.4 Input Examples.................................................................................................... 101 11.5 ........................................................................................................................... 101 11.5 ........................................................................................................................... 102 11.5 .............................................................................................................................. 103 11.6 Ressource Description .......................................................................................... 104 11.7 GUI Data Concept ................................................................................................ 106
11.7.1 Class Representation......................................................................................... 106 11.7.2 Object Data Concept ......................................................................................... 106 11.7.3 Document Data Concept ................................................................................... 107
11.8 GUI Functions ...................................................................................................... 108 11.8.1 View Functions (CRockflowView)........................................................................ 108 11.8.2 Document Data Exchange ................................................................................. 108 11.8.3 Dialog Data Exchange ....................................................................................... 108 11.8.4 Dialog Messages ............................................................................................... 108 11.8.5 Functions for String Concept.............................................................................. 109 11.8.6 Auxiliary Functions............................................................................................ 109
12 Material Properties ...................................................................................................... 110 12.1 Data Concept....................................................................................................... 110
12.1.1 Material Properties List...................................................................................... 111 12.1.2 Material Properties Groups ................................................................................ 112 12.1.3 Material Properties Table................................................................................... 113
12.2 Fluid Properties .................................................................................................... 114 12.2.1 Data Concept ................................................................................................... 114 12.2.2 Keyword Description ......................................................................................... 116 12.2.3 Ressource Description ....................................................................................... 117 12.2.4 GUI Functions................................................................................................... 119
12.3 Medium Properties ............................................................................................... 120 12.3.1 Data Concept ................................................................................................... 120 12.3.2 Keyword Description ......................................................................................... 122 12.3.3 Ressource Description ....................................................................................... 127 12.3.4 GUI Functions................................................................................................... 131
12.4 Tracer Properties ................................................................................................. 131 12.4.1 Data Concept ................................................................................................... 131
160
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
12.4.2 Keyword Description ......................................................................................... 135
12.4.3 Ressource Description ....................................................................................... 137 12.4.4 GUI Functions................................................................................................... 139
12.5 Solid Properties.................................................................................................... 140 12.5.1 Data Concept ................................................................................................... 140 12.5.2 Keyword Description ......................................................................................... 140
13 Adaptation ................................................................................................................. 141 13.1 Data Concept....................................................................................................... 141
13.1.1 Data Organization............................................................................................. 141 13.1.2 Object Identification.......................................................................................... 142 13.1.3 Construction ..................................................................................................... 143 13.1.4 Data Access...................................................................................................... 143
13.2 Keyword Description............................................................................................. 144 13.2.1 Adaptation Control Parameter............................................................................ 144 13.2.2 Adaptation Quantity Parameter.......................................................................... 145
13.3 Ressource Description .......................................................................................... 147 13.3.1 General Adapation Parameter ............................................................................ 147 13.3.2 Adaptation Quantity .......................................................................................... 148
13.4 GUI Data Concept ................................................................................................ 150 13.4.1 Class Representation......................................................................................... 150 13.4.2 Data Exchange Concept .................................................................................... 150
13.5 GUI Functions ...................................................................................................... 151 13.5.1 View Functions (CRockflowView)........................................................................ 151 13.5.2 Dialog Data Exchange ....................................................................................... 151 13.5.3 Dialog Messages Handling ................................................................................. 151 13.5.4 Auxiliary Functions............................................................................................ 151
14 Graphics..................................................................................................................... 152 14.1 Data Concept....................................................................................................... 152
14.1.1 Data Organization............................................................................................. 152 14.1.2 Object Identification.......................................................................................... 153 14.1.3 Construction ..................................................................................................... 153 14.1.4 Data Access...................................................................................................... 153
14.2 Keyword Description............................................................................................. 154 14.3 Ressource Description .......................................................................................... 155 14.4 GUI Data Concept ................................................................................................ 156
14.4.1 Class Representation......................................................................................... 156 14.4.2 Data Exchange Concept .................................................................................... 156
14.5 GUI Functions ...................................................................................................... 157 14.5.1 View Functions (CRockflowView)........................................................................ 157 14.5.2 Dialog Data Exchange ....................................................................................... 157 14.5.3 Dialog Messages Handling ................................................................................. 157 14.5.4 Auxiliary Functions............................................................................................ 157
15 Renumber .................................................................................................................. 163 15.1 Data Concept....................................................................................................... 163
15.1.1 Data Organization............................................................................................. 163 15.2 Keyword Description............................................................................................. 163 15.3 Ressource Description .......................................................................................... 164 15.4 GUI Data Concept ................................................................................................ 164
15.4.1 Class Representation......................................................................................... 164 15.4.2 Data Exchange Concept .................................................................................... 164
15.5 GUI Functions ...................................................................................................... 164 15.5.1 View Functions (CRockflowView)........................................................................ 164 15.5.2 Dialog Data Exchange ....................................................................................... 164 15.5.3 Dialog Messages Handling ................................................................................. 164
161
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
15.5.4 Auxiliary Functions............................................................................................ 164
16 Topic ......................................................................................................................... 165
16.1 Data Concept....................................................................................................... 165 16.1.1 Data Organization............................................................................................. 165 16.1.2 Object Identification.......................................................................................... 165 16.1.3 Construction ..................................................................................................... 165 16.1.4 Data Access...................................................................................................... 165
16.2 Keyword Description............................................................................................. 165 16.3 Ressource Description .......................................................................................... 165 16.4 GUI Data Concept ................................................................................................ 165
16.4.1 Class Representation......................................................................................... 165 16.4.2 Data Exchange Concept .................................................................................... 165
16.5 GUI Functions ...................................................................................................... 165 16.5.1 View Functions (CRockflowView)........................................................................ 165 16.5.2 Dialog Data Exchange ....................................................................................... 165 16.5.3 Dialog Messages Handling ................................................................................. 165 16.5.4 Auxiliary Functions............................................................................................ 165
162
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
163
15 Renumber This menu is used to specify the required parameters for node renumbering. Node renumbering technique is aimed to reduce the bandwidth of system matrices. This will improve the efficiency of equation solvers.
15.1 Data Concept
15.1.1 Data Organization Sources: renumber.h/c
15.2 Keyword Description #RENUMBER Parameter RF Variables Values Meaning
N1 umnummerierer int 0 1 2
Renumber method: - Node compression - Cuthill-McKee method - Gibbs-Pole-Stockmeyer method (GPS)
if N1 = 2 umnummerier_laeufe int -1 >0
Parameter for GPS method: - default criterion for iterations - user-defined number of iterations
Default #RENUMBER 0 Examples #RENUMBER 1 ; Cuthill-McKee method #RENUMBER 2 -1 ; Gibbs-Pole-Stockmeyer method with default criterion for iterations #RENUMBER 2 10 ; Gibbs-Pole-Stockmeyer method with 10 iterations
umnummerierer umnummerier_laeufe
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
164
15.3 Ressource Description
15.4 GUI Data Concept
15.4.1 Class Representation
15.4.2 Data Exchange Concept
15.5 GUI Functions
15.5.1 View Functions (CRockflowView)
15.5.2 Dialog Data Exchange
15.5.3 Dialog Messages Handling
15.5.4 Auxiliary Functions
ROCKFLOW Manual – Version 3.5.04 - 12.03.04 - 10:12
165
16 Topic
16.1 Data Concept
16.1.1 Data Organization
16.1.2 Object Identification 16.1.3 Construction
16.1.4 Data Access
16.2 Keyword Description
16.3 Ressource Description
16.4 GUI Data Concept
16.4.1 Class Representation
16.4.2 Data Exchange Concept
16.5 GUI Functions
16.5.1 View Functions (CRockflowView)
16.5.2 Dialog Data Exchange
16.5.3 Dialog Messages Handling
16.5.4 Auxiliary Functions