KratosMultiphysics / GiDInterface

The graphical user interface of Kratos for GiD. Featuring CFD, CSM, DEM, PFEM, etc
Other
32 stars 16 forks source link

Structural - Adding Hinges/Supports for Beams #244

Closed philbucher closed 6 years ago

philbucher commented 6 years ago

This issue is to include the hinges/supports (see PR) in the interface

What is needed from the GiD side is a selection window (similar to local axis) where the user can a line one wants to assign the hinges to. This should only be done for the small displacement beams.

One should be able to select Fx, Fy, Fz, Mx, My, Mz in 3D and Fx, Fy, Mz in 2D with checkboxes. This should be available for each point.

The information should then be written to the element that has the actual node after meshing. In the mdpa we then need this info in a ElementalData block as follows:

Begin ElementalData CONDENSED_DOF_LIST
    4 [2] (2,5) // this beam has moment hinges at both ends
 End ElementalData

the 4 is the element id the [2] is the size of the vector the (2,5) is the identifier of the selection above: 2D Case:

3D Case:

@KlausBSautter please add if I missed sth.

@jginternational this is a feature that @RiccardoRossi needs for teaching from what I understood. I don't know how exactly he would like to have it, so I suggest you talk to him directly

jginternational commented 6 years ago

Hi @philbucher I'll ask @RiccardoRossi but let me comment something before start.

Any Entity selection (as lines) should be done using GiD groups. LocalAxes selection is a "ghost from the past" in GiD and it should disappear soon. (Don't worry, soon can mean like 10 years).

We can write ElementalData in mdpa, but I thought that the "new way" of assigning data to entities was using process in json and submodelparts.

philbucher commented 6 years ago

Hi @jginternational

The entity selection can also be through groups, no problem (if I understood correctly)

Usually you are right with submodelparts and processes. The thing here is that the input is different for EVERY element, so you would have a submodelpart and process for every element. Therefore we do it in this special case through elementaldata (discussed with riccardo)

jginternational commented 6 years ago

Ok, @philbucher

I'm testing with this problem, but something wrong is happening

arroz.gid.zip


  File "MainKratos.py", line 84, in <module>
    solver.Initialize()
  File "E:\PROYECTOS\KratosGiD\kratos.gid\exec\kratos\applications\StructuralMechanicsApplication\python_scripts\structural_mechanics_static_solver.py", line 63, in Initialize
    super(StaticMechanicalSolver, self).Initialize() # The mechanical solver is created here.
  File "E:\PROYECTOS\KratosGiD\kratos.gid\exec\kratos\applications\StructuralMechanicsApplication\python_scripts\structural_mechanics_solver.py", line 217, in Initialize
    mechanical_solution_strategy.Initialize()
RuntimeError: Error: No degrees of freedom!

in kratos/solving_strategies/builder_and_solvers/residualbased_block_builder_and_solver.h:659:ResidualBasedBlockBuilderAndSolver<class UblasSpace<double,class boost::numeric::ublas::compressed_matrix<...>,class boost::numeric::Vector >,...>::SetUpDofSet
   kratos/solving_strategies/builder_and_solvers/residualbased_block_builder_and_solver.h:696:ResidualBasedBlockBuilderAndSolver<class UblasSpace<double,class boost::numeric::ublas::compressed_matrix<...>,class boost::numeric::Vector >,...>::SetUpDofSet
   kratos/solving_strategies/strategies/residualbased_newton_raphson_strategy.h:485:ResidualBasedNewtonRaphsonStrategy<class UblasSpace<double,class boost::numeric::ublas::compressed_matrix<...>,class boost::numeric::Vector >,class UblasSpace<double,class boost::numeric::Matrix,class boost::numeric::Vector >,class LinearSolver<class UblasSpace<double,class boost::numeric::ublas::compressed_matrix<...>,class boost::numeric::Vector >,class UblasSpace<double,class boost::numeric::Matrix,class boost::numeric::Vector >,class Reorderer<class UblasSpace<double,class boost::numeric::ublas::compressed_matrix<...>,class boost::numeric::Vector >,class UblasSpace<double,class boost::numeric::Matrix,class boost::numeric::Vector > > > >::Initialize```
philbucher commented 6 years ago

@KlausBSautter could you have a look please?

KlausBSautter commented 6 years ago

@jginternational I am not sure what is causing your error. I re-modelled your example, which runs without any problem: arroz_2.gid.zip

KlausBSautter commented 6 years ago

add: you cannot model a torsional hinge at the start and the end of a beam-segment. This will lead to a singular stiffness matrix

jginternational commented 6 years ago

It's in the master, you can try it and create new issues on this repo for bug reporting!