// function used to combine the contributions from solution components to the total error double error_total( double (*efn)(MeshFunction*, MeshFunction*, RefMap*, RefMap*), double (*nfn)(MeshFunction*, RefMap*), Hermes::vector<Solution*>& slns1, Hermes::vector<Solution*>& slns2 ) { double error = 0.0, norm = 0.0; std::vector<Solution*>::iterator it1, it2; for (it1=slns1.begin(), it2=slns2.begin(); it1 < slns1.end(); it1++, it2++) { assert(it2 < slns2.end()); error += sqr(calc_abs_error(efn, *it1, *it2)); if (nfn) norm += sqr(calc_norm(nfn, *it2)); } /* Alternatively, without iterators: double error = 0.0, norm = 0.0; for (int i=0; i < slns1.size(); i++) { error += sqr(calc_abs_error(efn, slns1[i], slns2[i])); if (nfn) norm += sqr(calc_norm(nfn, slns2[i])); } */ return (nfn ? sqrt(error/norm) : sqrt(error)); }
void EssentialBCs::add_boundary_conditions(Hermes::vector<EssentialBoundaryCondition *> boundary_conditions) { for(Hermes::vector<EssentialBoundaryCondition *>::iterator it = boundary_conditions.begin(); it != boundary_conditions.end(); it++) all.push_back(*it); markers.clear(); create_marker_cache(); };
void NeighborSearch<Scalar>::Transformations::apply_on(const Hermes::vector<Transformable*>& tr) const { for(Hermes::vector<Transformable*>::const_iterator it = tr.begin(); it != tr.end(); ++it) for(unsigned int i = 0; i < num_levels; i++) (*it)->push_transform(transf[i]); }
void NeighborSearch<Scalar>::Transformations::copy_from(const Hermes::vector<unsigned int>& t) { num_levels = std::min<unsigned int>(t.size(), max_level); std::copy( t.begin(), t.begin() + num_levels, transf); }