Hi everyone,
I tried to create a modal assembly from a very simple model consisting of 
only one hex8-element. The idea is to condense 4 nodes and keep 4 nodes as 
boundary. Unfortunately I get the following error:



*LU factorization reported a problem, zero diagonal for instanceSolver 
SetupCurrent() failedAssertion failed: m_factorizationIsOk && "The matrix 
should be factorized first", file Eigen\src/SparseLU/SparseLU.h, line 318<*

I attached the code. I would be very thankful for advice on how to solve 
the problem

Christian


// Create System 
---------------------------------------------------------------------------------------------------
ChSystemSMC sys;

// Create one hex8 element and nodes 
-------------------------------------------------------------------------------
auto n1 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(0., 0., 0.));
auto n2 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(1., 0., 0.));
auto n3 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(1., 1., 0.));
auto n4 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(0., 1., 0.));
auto n5 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(0., 0., 1.));
auto n6 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(1., 0., 1.));
auto n7 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(1., 1., 1.));
auto n8 = chrono_types::make_shared<ChNodeFEAxyz>(ChVector3d(0., 1., 1.));
auto mat = chrono_types::make_shared<ChContinuumElastic>();
mat->SetYoungModulus(2.1e11);
mat->SetPoissonRatio(0.3);
mat->SetDensity(9850);
auto hex8_corot = chrono_types::make_shared<ChElementHexaCorot_8>();
hex8_corot->SetNodes(n1, n2, n3, n4, n5, n6, n7, n8);
hex8_corot->SetMaterial(mat);

// Create meshes 
-----------------------------------------------------------------------------------------------
auto mesh_internal = chrono_types::make_shared<ChMesh>();
mesh_internal->AddNode(n1);
mesh_internal->AddNode(n2);
mesh_internal->AddNode(n3);
mesh_internal->AddNode(n4);
auto mesh_boundary = chrono_types::make_shared<ChMesh>();
mesh_boundary->AddNode(n5);
mesh_boundary->AddNode(n6);
mesh_boundary->AddNode(n7);
mesh_boundary->AddNode(n8);

// Create modal assembly 
-------------------------------------------------------------------------------------------
auto mod_assem = chrono_types::make_shared<ChModalAssembly>();
sys.Add(mod_assem);
mod_assem->AddInternalMesh(mesh_internal);
mod_assem->AddMesh(mesh_boundary);
mod_assem->SetReductionType(chrono::modal::ChModalAssembly::ReductionType::
CRAIG_BAMPTON);
auto eigen_solver = chrono_types::make_shared<
ChUnsymGenEigenvalueSolverKrylovSchur>();
ChModalSolverUndamped<ChUnsymGenEigenvalueSolverKrylovSchur> modal_solver(12, 
1e-4, false, true, eigen_solver);
auto damping_model = ChModalDampingRayleigh(0.05, 0.05);
mod_assem->DoModalReduction(modal_solver, damping_model);
std::cout << "Modal reduction successful:\n";

-- 
You received this message because you are subscribed to the Google Groups 
"ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/projectchrono/370e8eb5-c682-4dce-acba-cb0bdddd5ed4n%40googlegroups.com.

Reply via email to