-
Notifications
You must be signed in to change notification settings - Fork 247
Input data
The current input data consist of one archive with .mdpa extension. The input file is free format and the reading is not depend to the spaces, tabs, endlines etc.
The mesh ordering can be consulted in here. Remember that the Kratos mesh does not contain directly any geometry, but elements and conditions defined by that geometry.
This format contains all ModelPart's data in a minimalistic block form:
Begin ModelPartData
// VARIABLE_NAME value
End ModelPartData
Begin Table table_id variable1 variable2
// table_x table_y
End Table
Begin Properties properties_id
// VARIABLE_NAME value
End Properties
Begin Nodes
// id X Y Z
End Nodes
Begin Elements element_name
// id prop_id n1 n2 n3 ...
End Elements
Begin Conditions condition_name
// id prop_id n1 n2 n3 ...
End Conditions
Begin NodalData VARIABLE_NAME
// id is_fixed value //data accessible by GetSolutionStepValue
End NodalData
Begin ElementalData VARIABLE_NAME
// id value //data accessible by GetValue
End ElementalData
Begin ConditionalData VARIABLE_NAME
// id value //data accessible by GetValue
End ConditionalData
Begin Mesh mesh_id // mesh_id cannot be zero!
Begin MeshData
//VARIABLE_NAME value //data accessible by GetValue or operator []
End MeshData
Begin MeshNodes
// node_id
End MeshNodes
Begin MeshElements
// element_id
End MeshElements
Begin MeshConditions
// condition_id
End MeshConditions
End Mesh
Begin SubModelPart SubModelPartName
Begin SubModelPartData
// VARIABLE_NAME value
End SubModelPartData
Begin SubModelPartTables
// Table_id
End SubModelPartTables
Begin SubModelPartNodes
// node_id
End SubModelPartNodes
Begin SubModelPartElements
// element_id
End SubModelPartElements
Begin SubModelPartConditions
// condition_id
End SubModelPartConditions
Begin SubModelPart SubModelPartName // Note that this would be a sub sub modelpart
Begin SubModelPartTables
// Table_id
End SubModelPartTables
Begin SubModelPartNodes
// node_id
End SubModelPartNodes
Begin SubModelPartElements
// element_id
End SubModelPartElements
Begin SubModelPartConditions
// condition_id
End SubModelPartConditions
End SubModelPart
End SubModelPart
Each block starts with a Begin statement following by the block name and ends with the End statement again following by the block name. Some block may have some additional parameter like id or variable in their definitions.
Here is an example of mdpa file:
Begin ModelPartData
// VARIABLE_NAME value
AMBIENT_TEMPERATURE 250.00
End ModelPartData
Begin Table 1 TEMPERATURE VISCOSITY
200. 2e-6
300. 3e-6
400. 4e-6
End Table
Begin Properties 1
DENSITY 3.4E-5 //scalar
THICKNESS 19.5
VOLUME_ACCELERATION [3] (0.00,0.00,9.8) //vector
LOCAL_INERTIA [3,3] ((0, 0.27,0.27),(0.087,0,0.27),(0.075,0.23,0)) // matrix
Begin Table TEMPERATURE VISCOSITY
200. 2e-6
300. 3e-6
400. 4e-6
End Table
End Properties
Begin Nodes
1 16 0 0
2 16 0.4 0
3 15.6 0 0
972 0 7.2 0
973 0 7.6 0
974 0 8 0
End Nodes
Begin Elements Element2D3N
1 1 1 2 3
2 1 2 3 972
3 1 3 972 973
1796 1 972 973 974
End Elements
Begin Conditions Condition2D
1 1 1 2
1800 1 2 3
1801 1 3 972
1947 1 972 973
1948 1 973 974
End Conditions
Begin NodalData DISPLACEMENT_X
1 1 0.100000
2 1 0.200000
973 1 0.000000
974 1 0.000000
End NodalData
Begin NodalData DISPLACEMENT_Y
1 1 0.000000
2 1 0.000000
973 1 0.000973
974 1 0.000974
End NodalData
Begin NodalData DISPLACEMENT_Z
1 1 0.000000
2 1 0.000000
973 1 0.000000
974 1 0.000000
End NodalData
Begin NodalData VISCOSITY
1 0 0.010000
2 0 0.010000
973 0 0.010000
974 0 0.010000
End NodalData
Begin ElementalData TEMPERATURE
1 3.6
End ElementalData
Begin ElementalData VELOCITY
1 [3] (1.0, 2.0, 3.0)
End ElementalData
Begin ElementalData CAUCHY_STRESS_TENSOR
1 [3, 3] ((1.0, 2.0, 3.0), (4.0, 5.0, 6.0), (7.0, 8.0, 9.0))
End ElementalData
Begin SubModelPart Inlets
Begin SubModelPartTables
1
End SubModelPartTables
Begin SubModelPartNodes
1
2
End SubModelPartNodes
Begin SubModelPartElements
1
End SubModelPartElements
Begin SubModelPartConditions
1
1800
End SubModelPartConditions
Begin SubModelPart Inlet1
Begin SubModelPartNodes
1
3
End SubModelPartNodes
Begin SubModelPartConditions
1
1800
End SubModelPartConditions
End SubModelPart // Inlet1
Begin SubModelPart Inlet2
Begin SubModelPartConditions
1800
1801
End SubModelPartConditions
End SubModelPart // Inlet2
End SubModelPart // Inlets
Begin SubModelPart Outlet
Begin SubModelPartProperties
1
End SubModelPartProperties
Begin SubModelPartConditions
1948
End SubModelPartConditions
End SubModelPart // Outlet
The old format for data file is still supported due to the backward compatibility but without further improvement. The old format description can be found here
If you want to import your mesh from a different code, there is an initial support for .mdpa format file in the utility meshio. The list of compatible meshes are:
Let's say we want to import an VTK mesh.
import meshio
mesh = meshio.read("test.vtk")
meshio.write("test.mdpa", mesh)
Additionally, due to the support of meshio it is possible to create a mesh using pygmsh. Check the link for examples.
- Getting Kratos (Last compiled Release)
- Compiling Kratos
- Running an example from GiD
- Kratos input files and I/O
- Data management
- Solving strategies
- Manipulating solution values
- Multiphysics
- Video tutorials
- Style Guide
- Authorship of Kratos files
- Configure .gitignore
- How to configure clang-format
- How to use smart pointer in Kratos
- How to define adjoint elements and response functions
- Visibility and Exposure
- Namespaces and Static Classes
Kratos structure
Conventions
Solvers
Debugging, profiling and testing
- Compiling Kratos in debug mode
- Debugging Kratos using GDB
- Cross-debugging Kratos under Windows
- Debugging Kratos C++ under Windows
- Checking memory usage with Valgind
- Profiling Kratos with MAQAO
- Creating unitary tests
- Using ThreadSanitizer to detect OMP data race bugs
- Debugging Memory with ASAN
HOW TOs
- How to create applications
- Python Tutorials
- Kratos For Dummies (I)
- List of classes and variables accessible via python
- How to use Logger
- How to Create a New Application using cmake
- How to write a JSON configuration file
- How to Access DataBase
- How to use quaternions in Kratos
- How to do Mapping between nonmatching meshes
- How to use Clang-Tidy to automatically correct code
- How to use the Constitutive Law class
- How to use Serialization
- How to use GlobalPointerCommunicator
- How to use PointerMapCommunicator
- How to use the Geometry
- How to use processes for BCs
- How to use Parallel Utilities in futureproofing the code
- Porting to Pybind11 (LEGACY CODE)
- Porting to AMatrix
- How to use Cotire
- Applications: Python-modules
- How to run multiple cases using PyCOMPSs
- How to apply a function to a list of variables
- How to use Kratos Native sparse linear algebra
Utilities
Kratos API
Kratos Structural Mechanics API