本文整理汇总了C++中MeshReaderH2DXML::set_validation方法的典型用法代码示例。如果您正苦于以下问题:C++ MeshReaderH2DXML::set_validation方法的具体用法?C++ MeshReaderH2DXML::set_validation怎么用?C++ MeshReaderH2DXML::set_validation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MeshReaderH2DXML
的用法示例。
在下文中一共展示了MeshReaderH2DXML::set_validation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char* argv[])
{
// Load the mesh.
MeshSharedPtr mesh_whole_domain(new Mesh), mesh_bottom_left_corner(new Mesh), mesh_complement(new Mesh);
Hermes::vector<MeshSharedPtr> meshes (mesh_bottom_left_corner, mesh_whole_domain, mesh_complement);
MeshReaderH2DXML mloader;
mloader.set_validation(false);
mloader.load("subdomains.xml", meshes);
// Perform initial mesh refinements (optional).
for(int i = 0; i < INIT_REF_NUM; i++)
for(unsigned int meshes_i = 0; meshes_i < meshes.size(); meshes_i++)
meshes[meshes_i]->refine_all_elements();
mloader.save("subdomains2.xml", meshes);
mloader.load("subdomains2.xml", meshes);
// Initialize essential boundary conditions.
DefaultEssentialBCConst<double> bc_essential_whole_domain(Hermes::vector<std::string>("Bottom Left", "Bottom Right", "Top Left", "Top Right"), 0.0);
EssentialBCs<double> bcs_whole_domain(&bc_essential_whole_domain);
DefaultEssentialBCConst<double> bc_essential_bottom_left_corner(Hermes::vector<std::string>("Bottom Left", "Horizontal Left"), 0.0);
EssentialBCs<double> bcs_bottom_left_corner(&bc_essential_bottom_left_corner);
DefaultEssentialBCConst<double> bc_essential_complement(Hermes::vector<std::string>("Bottom Right", "Top Right", "Top Left", "Horizontal Left", "Vertical Bottom"), 0.0);
EssentialBCs<double> bcs_complement(&bc_essential_complement);
// Create H1 spaces with default shapeset.
SpaceSharedPtr<double> space_whole_domain(new H1Space<double>(mesh_whole_domain, &bcs_whole_domain, P_INIT));
int ndof_whole_domain = space_whole_domain->get_num_dofs();
SpaceSharedPtr<double> space_bottom_left_corner(new H1Space<double>(mesh_bottom_left_corner, &bcs_bottom_left_corner, P_INIT));
int ndof_bottom_left_corner = space_bottom_left_corner->get_num_dofs();
SpaceSharedPtr<double> space_complement(new H1Space<double>(mesh_complement, &bcs_complement, P_INIT));
int ndof_complement = space_complement->get_num_dofs();
if(ndof_whole_domain == 225 && ndof_bottom_left_corner == 56 && ndof_complement == 161)
{
return 0;
}
else
{
return -1;
}
return 0;
}
示例2: main
int main(int argc, char* argv[])
{
// Check number of command-line parameters.
if (argc < 2)
throw Hermes::Exceptions::Exception("Not enough parameters.");
// Load the mesh.
MeshSharedPtr mesh(new Mesh);
MeshReaderH2DXML mloader;
mloader.set_validation(false);
if (strcasecmp(argv[1], "1") == 0)
mloader.load(mesh_file_1, mesh);
if (strcasecmp(argv[1], "2") == 0)
mloader.load(mesh_file_2, mesh);
if (strcasecmp(argv[1], "3") == 0)
mloader.load(mesh_file_3, mesh);
// Perform initial mesh refinements (optional).
for (int i = 0; i < INIT_REF_NUM; i++) mesh->refine_all_elements();
// Initialize boundary conditions.
DefaultEssentialBCConst<double> bc_essential("Bdy", 0.0);
EssentialBCs<double> bcs(&bc_essential);
// Create an H1 space with default shapeset.
SpaceSharedPtr<double> space(new H1Space<double>(mesh, &bcs, P_INIT));
int ndof = Space<double>::get_num_dofs(space);
// Initialize the weak formulation.
WeakFormsH1::DefaultWeakFormPoisson<double> wf(HERMES_ANY, new Hermes1DFunction<double>(1.0), new Hermes2DFunction<double>(-const_f));
// Initialize the FE problem.
DiscreteProblem<double> dp(&wf, space);
// Set up the solver, matrix, and rhs according to the solver selection.
SparseMatrix<double>* matrix = create_matrix<double>();
Vector<double>* rhs = create_vector<double>();
LinearMatrixSolver<double>* solver = create_linear_solver<double>(matrix, rhs);
// Initial coefficient vector for the Newton's method.
double* coeff_vec = new double[ndof];
memset(coeff_vec, 0, ndof*sizeof(double));
// Perform Newton's iteration.
MeshFunctionSharedPtr<double> sln(new Solution<double>());
NewtonSolver<double> newton(&dp);
try{
newton.solve(coeff_vec);
}
catch (Hermes::Exceptions::Exception& e)
{
e.print_msg();
}
Solution<double>::vector_to_solution(newton.get_sln_vector(), space, sln);
// Clean up.
delete solver;
delete matrix;
delete rhs;
double coor_x[4] = { 0.3, 0.7, 1.3, 1.7 };
double coor_y = 0.5;
double value[4] = { 0.102569, 0.167907, 0.174203, 0.109630 };
if (strcasecmp(argv[1], "2") == 0)
{
value[0] = 0.062896;
value[1] = 0.096658;
value[2] = 0.114445;
value[3] = 0.081221;
}
if (strcasecmp(argv[1], "3") == 0)
{
value[0] = 0.048752;
value[1] = 0.028585;
value[2] = 0.028585;
value[3] = 0.048752;
}
bool success = true;
for (int i = 0; i < 4; i++)
success = Testing::test_value(sln->get_pt_value(coor_x[i], coor_y)->val[0], value[i], "value") && success;
if (success)
{
printf("Success!\n");
return 0;
}
else
{
printf("Failure!\n");
return -1;
}
}