|
FhSim
3.1.0
Marine systems simulation
|
Collaboration diagram for Bar-element net from an ABAQUS input file (Windows only):A NetStructureTest whose net comes from an ABAQUS .inp file. On top of NetStructureTest, it applies the file's initial node positions, its PINNED and YSYMM boundary conditions and its concentrated loads (*Cload).
WIN32 is defined (src/net/CMakeLists.txt, TEST_STRUCTURE_SRC), and the type string Net/NetStructureABAQUS is registered only under #ifdef WIN32 (src/fhsim_marine_elements.cpp). A Linux build has no such SimObject.tests/ builds or runs this class (see MARE-0031). This page was written from the source code. No simulation results were used to check it.NetStructureSpecABAQUS::FromFile checks that <input dir>/ABAQUSFile exists. It then opens the input-file directory (filePath), not the file (fullPath). As written, nothing is parsed from the ABAQUS file. The net then has no parts, and GetABAQUSPart(0) indexes an empty vector. The format below describes what the parser would read from the correct path.Units are SI: m, s, kg, N, Pa. The z axis points down. The parser converts from the ABAQUS mm–tonne–s–N system and negates z.
These are the same as for NetStructureTest.
| Name | Width | Description |
|---|---|---|
| <tag>Force | 3 | External force in N on the node mapped to <tag>. There is one port per tag in NodesInputForce. An ABAQUS net has no ExternalNodeMap, so any tag is an error. The port can exist only when BinaryFile or XmlFile supplies the net. |
| colorLimits | 2 | Registered but never read. |
These are the same as for NetStructureTest: <tag>Force, <tag>Pos, <tag>Vel, CurrentVelocity, appendixForce, cableForce, dragForce, meanProjectedVelocity, projectedArea and meanDragDeduction. See that page for widths and meanings. The tagged ports have the same limit as <tag>Force above.
| Name | Width | Description |
|---|---|---|
| ABAQUSFile | 1 | ABAQUS .inp file, relative to the input-file directory. This constructor always parses it. The base constructor also parses it when BinaryFile and XmlFile are empty (Default: ""). If the file does not exist, a std::runtime_error is thrown. |
| ModelMeshLength | 1 | Mesh length in m of the physical net (required, no default). Each ABAQUS element of length L0 counts as a bundle of s = 2·L0/ModelMeshLength physical twines. Its structural diameter is 2·sqrt(s·A/π) and its hydrodynamic diameter is s·2·sqrt(A/π), where A is the section area. |
| BinaryFile, XmlFile | 1 | Inherited from NetStructureTest (Default: ""). If either is set, the base class builds the net from it. This class still reads the positions, boundaries and loads from ABAQUSFile and applies them by node index. |
| NodesInputForce, NodesOutputPosAndVel | n | Inherited from NetStructureTest (Default: none). See the input-port note above. |
| LineVisualization, ColorBy | 1 | Inherited from NetStructureTest. Visualisation builds only. |
Spaces are stripped only from the top-level lines, where *Part and *Assembly are detected. The lines inside a part or the assembly are not stripped. Fields are separated by commas. ABAQUS numbers are 1-based and the parser makes them 0-based.
*Part, name=... starts a part. Inside a part:*Node: data lines id, x, y, z in mm. They become positions in m, with z negated.*Element: data lines id, nodeA, nodeB. Each line is one bar element.*Nset, nset=... and *Elset, elset=...: node and element lists.*Solid Section, elset=..., material=...: the next line's first value is the section area in mm². It is multiplied by 1e-6 to give m².*End Part ends the part.*Assembly starts the assembly section. It is read from there to the end of the file: *End Assembly does not stop the reading. Inside it:*Nset and *Elset: node and element sets, used by the boundary conditions and loads.*Material, name=...: the value two lines below is the density in tonne/mm³. It is multiplied by 1e12 to give kg/m³. The value four lines below is Young's modulus in MPa. It is multiplied by 1e6 to give Pa.*Boundary: the next line is set, PINNED or set, YSYMM. Other types print a warning.*Cload: the next line is set, dof, value, where dof is 1–3 and the value is a force in N. The z component is negated. There is one line per keyword, and only the first load per set is kept. When a node is in several loaded sets, their loads are summed.The initial length L0 of each element is the distance between its two nodes at their ABAQUS positions. Elements get no spheres, no disks and no folding points. A node that no element references is an error.
The states Pos_<i> (3, m) and Vel_<i> (3, m/s) are the same as for NetStructureTest. For every node listed under *Node in the first part (part 0), the ABAQUS position replaces the initial position in the input file, and the initial velocity is set to 0. Nodes of other parts are not initialised from the file. This class replaces the base-class InitialConditionSetup, so the NetStructureTest step that replaces NaN with 0 is not run.
Compared with NetStructureTest, the equation of motion adds the following:
*Cload set gets the constant load vector. It also gets a drag term 0.5·1025·0.02·0.06·1.2·|V|·V, where V is the current minus the node velocity. The source comment calls this a "cylinder assumption". The meaning of the fixed 0.02 and 0.06 is not settled from source. They may be a diameter and a length in m.