Users:FSI/CouplingCode
Line 1: | Line 1: | ||
[[Category: Users:FSI]] | [[Category: Users:FSI]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= Coupling Code CoMA = | = Coupling Code CoMA = | ||
Line 44: | Line 38: | ||
− | === Input File Block Description === | + | === Input File: Compulsory Block Description === |
{| border="1" cellpadding="3" cellspacing="0" | {| border="1" cellpadding="3" cellspacing="0" | ||
− | |colspan="3" style="background:#efefef;"| Block General | + | |colspan="3" style="background:#efefef;"| Block General: General control of application flow |
|- | |- | ||
!Type | !Type | ||
|''fsi or ffi or wind'' | |''fsi or ffi or wind'' | ||
− | |defines MPI Ident tag of CoMA within | + | |defines MPI Ident tag of CoMA within MPI Environment, used by other codes to identify CoMA process |
|- | |- | ||
!Method | !Method | ||
Line 61: | Line 55: | ||
{| border="1" cellpadding="3" cellspacing="0" | {| border="1" cellpadding="3" cellspacing="0" | ||
− | |colspan="3" style="background:#efefef;"| Block Processgroup | + | |colspan="3" style="background:#efefef;"| Block Processgroup: Defines a group of processes, which belong to one field |
|- | |- | ||
!ID | !ID | ||
Line 70: | Line 64: | ||
|''string'' | |''string'' | ||
|for output only | |for output only | ||
+ | |- | ||
+ | !InterfaceType | ||
+ | |''mpi or file'' | ||
+ | |type of communication between CoMA and processgroup, Warning: type file only partly implemented | ||
+ | |- | ||
+ | !MPIIdentTag | ||
+ | |''1 or 2'' | ||
+ | |used to identify processes of processgroup in MPI-universe | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | {| border="1" cellpadding="3" cellspacing="0" | ||
+ | |colspan="3" style="background:#efefef;"| Block ExchangedQuantity: Defines a quantitiy to be exchanged between processgroups | ||
+ | |- | ||
+ | !ID | ||
+ | |''0 or 1 or 2 ...'' | ||
+ | |used to order quantities (0 exchanged before 1 before 2...) | ||
|- | |- | ||
!Name | !Name | ||
Line 75: | Line 86: | ||
|for output only | |for output only | ||
|- | |- | ||
− | ! | + | !Dimension |
− | |'' | + | |''int'' |
− | | | + | |dofs per node, e.g. displacements 3 |
+ | |- | ||
+ | !InterpolationType | ||
+ | |''1 or 2'' | ||
+ | |1 = flux mapping (summation e.g. for forces), 2 = field mapping (interpolation e.g. for displacements) | ||
+ | |- | ||
+ | !SenderID | ||
+ | |''int'' | ||
+ | |ID of processgroups, which sends this quantitiy | ||
+ | |- | ||
+ | !RecieverID | ||
+ | |''int'' | ||
+ | |ID of processgroups, which recieves this quantitiy | ||
+ | |- | ||
+ | !MpiTagBasis | ||
+ | |''int'' | ||
+ | |used for MPI-data exchange of this quantitiy | ||
+ | |- | ||
+ | !DoFType | ||
+ | |''node'' | ||
+ | |dummy paramter, quantitiy specified per node | ||
+ | |- | ||
+ | !Predictor - optional parameter | ||
+ | |''yes or no'' | ||
+ | |use a predictor for this quantitiy in the first inner iteration and do not recieve from sender, block "Predictor" is necessary | ||
+ | |- | ||
+ | !CouplingAlgo - optional parameter | ||
+ | |''yes or no'' | ||
+ | |use a coupling algorithm for this quantitiy, block "CouplingAlgo" is necessary | ||
+ | |- | ||
+ | !Convergence - optional parameter | ||
+ | |''yes or no'' | ||
+ | |use a convergence criterion for this quantitiy, block "ConvergenceCalculation" is necessary | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | {| border="1" cellpadding="3" cellspacing="0" | ||
+ | |colspan="3" style="background:#efefef;"| Block Mapping: Defines mapping method of exchanged quantities between surface meshes. | ||
+ | |- | ||
+ | !Type | ||
+ | |''TNM or MM'' | ||
+ | |TNM: Triangular Nonmatching Mesh Mapper, MM: Matching Meshes | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | {| border="1" cellpadding="3" cellspacing="0" | ||
+ | |colspan="3" style="background:#efefef;"| Block Output: General output of CoMA for postprocessing and simulation control | ||
+ | |- | ||
+ | !Path | ||
+ | |''string'' | ||
+ | |absolute or relative path to directory for output files, created if necessary | ||
+ | |- | ||
+ | !Name | ||
+ | |''string'' | ||
+ | |prefix for output file names | ||
+ | |- | ||
+ | !Format | ||
+ | |''gid or vtk'' | ||
+ | |write ouput in Gid- or Vtk(Paraview)-format, Warning: Vtk writes out the mesh in every step, so huge data amount possible | ||
+ | |- | ||
+ | !Frequency | ||
+ | |''int'' | ||
+ | |ouput ever int step | ||
+ | |- | ||
+ | !Energy | ||
+ | |''yes or no'' | ||
+ | |additional output of energy | ||
+ | |- | ||
+ | !Convergence | ||
+ | |''yes or no'' | ||
+ | |write additional file Path/Name+.cc with iteration information | ||
+ | |- | ||
+ | !QuantityID | ||
+ | |''int'' | ||
+ | |which quantity to examine in .cc-file | ||
+ | |- | ||
+ | !Dof | ||
+ | |''yes or no'' | ||
+ | |write dof-history in .cc-file, yes -> define node by following four entries: | ||
+ | |- | ||
+ | !ProcessgroupIndex | ||
+ | |''int'' | ||
+ | |processgroup of dof | ||
+ | |- | ||
+ | !MeshTagIndex | ||
+ | |''int'' | ||
+ | |meshTag of dof | ||
+ | |- | ||
+ | !NodeIndex | ||
+ | |''int'' | ||
+ | |node index of dof | ||
+ | |- | ||
+ | !DofIndex | ||
+ | |''int'' | ||
+ | |dof index of dof | ||
|- | |- | ||
|} | |} | ||
+ | === Input File: Optional Block Description === | ||
Revision as of 08:53, 24 February 2011
Contents |
Coupling Code CoMA
CoMA (Coupling for Multiphysics Analysis) is a general code coupling tool, used in the simulation of surface coupled problems. It is developed since some years at the institute. The tasks of CoMA within a coupled analysis are:
- Control of the coupled computation and the single-field solvers
- Convergence control
- Coupling algorithms for implicit computations
- Data transfer between distributed interface meshes
- Communication between parallel single-field solvers and CoMA
This wiki should just give a short overview on how to use CoMA, being specific on FSI-simulation with Carat and OpenFOAM. Detailed information on programming concepts and theoretical aspects can be found in the dissertation of Thomas Gallinger.
Installation and Compilation
CoMA has to installed under Linux operating system, because FSI-jobs only run under Linux. There exists an svn-repository, which contains all CoMA sources. The svn-repository is hosted on the same server as the carat repository. The current IP is 129.187.141.99 and the folder is named "CoMA". Checkout the svn-repository. Open the file "makfile.in" in the src-directory. You have to adapt the variable "CoMA_DIR", which points to your CoMA installation path, and the variable "MPIHOME", pointing to your MPI installation path. Execute the shellscript "make_obj_directories" to set the directorires for the objety, and then type "make" to build CoMA software.
Problem Setup
The structure of the input file reflects the underlying programming concepts of CoMA. An example input file can be found in the svn-repository under the directory "example". The input file is block-structured. At least five different blocks have to specified:
- General
- Two Processgroups
- ExchangedQuantity
- Mapping
- Output
For an implicit FSI-simulation, three additional blocks have to be specified:
- ConvergenceCalculation
- Predictor
- CouplingAlgo
Input File: Compulsory Block Description
Block General: General control of application flow | ||
Type | fsi or ffi or wind | defines MPI Ident tag of CoMA within MPI Environment, used by other codes to identify CoMA process |
---|---|---|
Method | implicit or explicit | implicit or explicit coupling, implicit with, explicit without inner iteration loops |
Block Processgroup: Defines a group of processes, which belong to one field | ||
ID | 0 or 1 | used to order processgroups and as reference for exchanged quantities |
---|---|---|
Name | string | for output only |
InterfaceType | mpi or file | type of communication between CoMA and processgroup, Warning: type file only partly implemented |
MPIIdentTag | 1 or 2 | used to identify processes of processgroup in MPI-universe |
Block ExchangedQuantity: Defines a quantitiy to be exchanged between processgroups | ||
ID | 0 or 1 or 2 ... | used to order quantities (0 exchanged before 1 before 2...) |
---|---|---|
Name | string | for output only |
Dimension | int | dofs per node, e.g. displacements 3 |
InterpolationType | 1 or 2 | 1 = flux mapping (summation e.g. for forces), 2 = field mapping (interpolation e.g. for displacements) |
SenderID | int | ID of processgroups, which sends this quantitiy |
RecieverID | int | ID of processgroups, which recieves this quantitiy |
MpiTagBasis | int | used for MPI-data exchange of this quantitiy |
DoFType | node | dummy paramter, quantitiy specified per node |
Predictor - optional parameter | yes or no | use a predictor for this quantitiy in the first inner iteration and do not recieve from sender, block "Predictor" is necessary |
CouplingAlgo - optional parameter | yes or no | use a coupling algorithm for this quantitiy, block "CouplingAlgo" is necessary |
Convergence - optional parameter | yes or no | use a convergence criterion for this quantitiy, block "ConvergenceCalculation" is necessary |
Block Mapping: Defines mapping method of exchanged quantities between surface meshes. | ||
Type | TNM or MM | TNM: Triangular Nonmatching Mesh Mapper, MM: Matching Meshes |
---|
Block Output: General output of CoMA for postprocessing and simulation control | ||
Path | string | absolute or relative path to directory for output files, created if necessary |
---|---|---|
Name | string | prefix for output file names |
Format | gid or vtk | write ouput in Gid- or Vtk(Paraview)-format, Warning: Vtk writes out the mesh in every step, so huge data amount possible |
Frequency | int | ouput ever int step |
Energy | yes or no | additional output of energy |
Convergence | yes or no | write additional file Path/Name+.cc with iteration information |
QuantityID | int | which quantity to examine in .cc-file |
Dof | yes or no | write dof-history in .cc-file, yes -> define node by following four entries: |
ProcessgroupIndex | int | processgroup of dof |
MeshTagIndex | int | meshTag of dof |
NodeIndex | int | node index of dof |
DofIndex | int | dof index of dof |
Input File: Optional Block Description
The problem setup is based on a typical Carat++-Inputfile used for a single-field analysis.
To be specific for a coupled analysis, two steps have to made:
- The coupled interface hast to be defined. This is the geometric representation of the coupled surface between fluid and structure field.
- A FSI-analysis is chosen, which links to an basi analysis type, e.g. a static or dynamic analysis.
Interface Definition
The interface is the geometric definition of the physical surface between fluid and structure field. It is based on the already exisiting Finite element model. Note the following:
- Not all elements of the model have to be part of the interface. E.g. Shell and Membrane elements should be part of the model, because the surface type gives large influence from surrounding flow, but truss elements are not part, because wind influence on a truss may be neglected.
- Not all element types are suitable for usage within the interface. Currently only shell and membrane elements are supported.
- An export type has to be defined. Shell and membrane elements are defined by their mid-surface. It depends on the flow and the element thickness, if the mid-surface is a proper definition of the interface. If a very thin membrane element has flow influence only from one side, the mid-surface maybe a proper definition of the interface geometry. If a very thick shell is placed in a surrounding fluid (flow on top and bottom), neglecting the thickness may lead to large errors in the correct physical representation of the problem. Currently, three export types are available: (1) Use the mid-surface of the elements as the interface. (2) Do a blow-up of the mid-surface based on the thickness and a director on the surface to define a 3d representation of the model with a top and bottom surface. (3) Using approach (2) leads to wholes on the side parts of the interface. Close the whole by additional surface elements.
The interface contains different partitions, at least one. Every partition has a unique element type and a unique type of element treatment. A typical interface defintion in Carat++ looks like:
EL-IF 1 NIP 1 1 0 (1-15) MSHTAG=1 BORDER=; NIP 2 3 0 (20-30) MSHTAG=1,1,2 BORDER=31,62;
This interface consists of two partitions. The first partition (NIP 1) has interface export type 1 (export mid-surface only), format type 0 (dummy), sonsists of elements 1-15, the tag of the surface mesh is 1 (used to match carat and Foam interface meshes) and no border definition is necessary. The second partition (NIP 2) has interface export type 3 (export top- and bottom surface and side mesh), format type 0 (dummy), consists of elements 20-30, the tag of the three surface meshes is 1 for the top mesh, 1 for the bottom mesh and 2 for the side mesh (used to match carat and Foam interface meshes). The side mesh is defined by defining nodes, which are part of the border.
Hint: More details on the interface definition can be found in the diploma thesis of Rupert Fisch.
Analysis Definition
Defining a coupled analysis, contains of two part:
- Defining a Analysis of type FSI as master analysis.
- Defining a sub-analysis for the specific structure field behavior (static or dynamic).
The defintion of the master analysis:
PC-ANALYSIS 1: FSI ANALYSIS = PC-ANALYSIS 2 METHOD = BLACKBOX !BLACKBOX, SUBSPACE_LP, SUBSPACE_FD OUTPUT = PC-OUT 1 INTERFACE = EL-IF 1
The sub-analysis is given by Analysis 2. The method is given as black-box (standard). Additionally, the output and the interface have to be defined.
The sub-analysis block is the same as in a standard Carat++-analysis. Possible analysis types are static linear and static nonlinear and dynamic linear and nonlinear (all available time integration algorithms).
- Hint 1: The specification of an end time in a dynamic analysis is necessary in the input block, but is overriden in the coupled analysis by CoMA.
- Hint 2: The loads from the fluid are just added to the loads specified in the carat++-input file. So it is possible to add e.g. self weight to the structure model.
Whos here now: Members 0 Guests 0 Bots & Crawlers 1 |