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.
