3 int main(
int argc,
char** argv) {
9 std::vector<double> traction_density(3,0);
10 traction_density[0] = 100.;
13 libMesh::LibMeshInit init(argc, argv);
16 const bool MASTER_bPerfLog_carl_libmesh =
true;
17 libMesh::PerfLog perf_log(
"Main program", MASTER_bPerfLog_carl_libmesh);
20 libMesh::Parallel::Communicator& WorldComm = init.comm();
23 int rank = WorldComm.rank();
24 int nodes = WorldComm.size();
29 GetPot command_line(argc, argv);
35 std::string input_filename;
36 if (command_line.search(2,
"--inputfile",
"-i")) {
37 input_filename = command_line.next(input_filename);
38 field_parser.parse_input_file(input_filename,
"#",
"\n",
" \t\n");
40 field_parser = command_line;
47 const unsigned int dim = 3;
49 libmesh_example_requires(dim == LIBMESH_DIM,
"3D support");
54 perf_log.push(
"Meshes - Parallel",
"Read files:");
55 libMesh::Mesh system_mesh(WorldComm, dim);
57 system_mesh.prepare_for_use();
59 libMesh::Mesh mesh_weight(WorldComm, dim);
60 mesh_weight.allow_renumbering(
false);
62 mesh_weight.prepare_for_use();
64 perf_log.pop(
"Meshes - Parallel",
"Read files:");
67 perf_log.push(
"System setup:");
70 libMesh::EquationSystems equation_systems(system_mesh);
73 libMesh::LinearImplicitSystem& elasticity_system
80 equation_systems.init();
89 perf_log.pop(
"System setup:");
98 #ifdef PRINT_MATLAB_DEBUG
99 elasticity_system.matrix->print_matlab(input_params.
output_base +
"_sys_mat.m");
100 elasticity_system.rhs->print_matlab(input_params.
output_base +
"_sys_rhs_vec.m");
104 libMesh::PetscMatrix<libMesh::Number> * temp_mat_ptr = libMesh::cast_ptr<libMesh::PetscMatrix<libMesh::Number> * >(elasticity_system.matrix);
105 libMesh::PetscVector<libMesh::Number> * temp_vec_ptr = libMesh::cast_ptr<libMesh::PetscVector<libMesh::Number> * >(elasticity_system.rhs);
113 MatNullSpace nullsp_sys;
116 MatNullSpaceDestroy(&nullsp_sys);
void set_homogeneous_physical_properties(libMesh::EquationSystems &es, std::string &physicalParamsFile)
Set the homogeneous physical properties from a file.
void write_rigid_body_vectors(MatNullSpace &nullsp_sys, const std::string output_base, int rank)
Export the rigid body mode vectors to a folder.
void get_input_params(GetPot &field_parser, feti_iterate_params &input_params)
Parser function for the coupled solver test programs.
void set_parameters(double alpha_eps, double alpha_coupling_BIG, int subdomain_idx_BIG, int subdomain_idx_micro, int subdomain_idx_both, int subdomain_idx_coupling)
void assemble_elasticity_with_weight_and_traction(libMesh::EquationSystems &es, const std::string &system_name, weight_parameter_function &weight_mask, WeightFunctionSystemType system_type, int traction_boundary_id, std::vector< double > traction_density)
Assemble homogeneous elasticity with domain weights and traction.
void write_PETSC_vector(libMesh::PetscVector< libMesh::Number > &input_vec, const std::string &filename, int dim=1)
void build_rigid_body_vectors(libMesh::ImplicitSystem &input_system, MatNullSpace &nullsp_sys)
Build the rigid body modes associated to a given system.
void set_clamped_border(libMesh::ImplicitSystem &elasticity_system, int boundary_id)
Set a clamped border.
libMesh::ImplicitSystem & add_elasticity(libMesh::EquationSystems &input_systems, libMesh::Order order=libMesh::FIRST, libMesh::FEFamily family=libMesh::LAGRANGE)
Add a linear elasticity libMesh::LinearImplicitSystem to the input libMesh::EquationSystems& input_sy...
boundary_id_cube
Small enumerate defining a cube's boundary ID's.
int main(int argc, char **argv)
void write_PETSC_matrix(Mat input_mat, const std::string &filename, int rank, MPI_Comm comm=PETSC_COMM_WORLD, int dim=1)