This is an automated email from the git hooks/post-receive script. renard pushed a commit to branch master in repository getfem.
The following commit(s) were added to refs/heads/master by this push: new 3c37cc1a minor modification for clang compatibility 3c37cc1a is described below commit 3c37cc1a5019b7dce6d2f5eb6c0bc4e60a8d1ca3 Author: Renard Yves <yves.ren...@insa-lyon.fr> AuthorDate: Wed Dec 13 13:49:15 2023 +0100 minor modification for clang compatibility --- contrib/bimaterial_crack_test/crack.cc | 16 ++-- contrib/crack_plate/crack_bilaplacian_moment.cc | 14 +-- contrib/delaminated_crack/delaminated_crack.cc | 2 +- contrib/icare/icare.cc | 26 +++--- contrib/opt_assembly/opt_assembly.cc | 4 +- .../xfem_stab_unilat_contact.cc | 16 ++-- interface/src/gf_slice_get.cc | 2 +- src/getfem/dal_basic.h | 6 ++ src/getfem/dal_bit_vector.h | 8 ++ src/getfem/dal_tas.h | 8 +- src/getfem/getfem_generic_assembly.h | 4 +- src/getfem/getfem_mesh_fem.h | 6 +- src/getfem_contact_and_friction_large_sliding.cc | 12 +-- src/getfem_fem.cc | 4 +- src/getfem_mesh_level_set.cc | 4 +- src/getfem_mesher.cc | 2 +- src/gmm/gmm_conjugated.h | 10 ++- src/gmm/gmm_interface.h | 8 +- src/gmm/gmm_real_part.h | 4 + src/gmm/gmm_ref.h | 18 ++++ src/gmm/gmm_scaled.h | 14 ++- src/gmm/gmm_std.h | 6 +- src/gmm/gmm_sub_matrix.h | 8 +- src/gmm/gmm_sub_vector.h | 4 +- src/gmm/gmm_vector.h | 8 ++ src/gmm/gmm_vector_to_matrix.h | 8 +- tests/crack.cc | 16 ++-- tests/heat_equation.cc | 2 +- tests/integration.cc | 100 ++++++++++----------- tests/nonlinear_elastostatic.cc | 2 +- tests/poly.cc | 6 +- tests/schwarz_additive.cc | 2 +- tests/test_assembly.cc | 4 +- tests/test_continuation.cc | 10 +-- tests/test_interpolated_fem.cc | 32 +++---- tests/test_mat_elem.cc | 64 ++++++------- tests/wave_equation.cc | 2 +- 37 files changed, 274 insertions(+), 188 deletions(-) diff --git a/contrib/bimaterial_crack_test/crack.cc b/contrib/bimaterial_crack_test/crack.cc index 3dfa8903..01964c1c 100644 --- a/contrib/bimaterial_crack_test/crack.cc +++ b/contrib/bimaterial_crack_test/crack.cc @@ -148,31 +148,31 @@ struct crack_problem { std::string name_of_dof(getfem::pdof_description dof) { char s[200]; - sprintf(s, "UnknownDof[%p]", (void*)dof); + snprintf(s, 199, "UnknownDof[%p]", (void*)dof); for (dim_type d = 0; d < 4; ++d) { if (dof == getfem::lagrange_dof(d)) { - sprintf(s, "Lagrange[%d]", d); goto found; + snprintf(s, 199, "Lagrange[%d]", d); goto found; } if (dof == getfem::normal_derivative_dof(d)) { - sprintf(s, "D_n[%d]", d); goto found; + snprintf(s, 199, "D_n[%d]", d); goto found; } if (dof == getfem::global_dof(d)) { - sprintf(s, "GlobalDof[%d]", d); + snprintf(s, 199, "GlobalDof[%d]", d); } if (dof == getfem::mean_value_dof(d)) { - sprintf(s, "MeanValue[%d]", d); + snprintf(s, 199, "MeanValue[%d]", d); } if (getfem::dof_xfem_index(dof) != 0) { - sprintf(s, "Xfem[idx:%d]", int(dof_xfem_index(dof))); + snprintf(s, 199, "Xfem[idx:%d]", int(dof_xfem_index(dof))); } for (dim_type r = 0; r < d; ++r) { if (dof == getfem::derivative_dof(d, r)) { - sprintf(s, "D_%c[%d]", "xyzuvw"[r], d); goto found; + snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], d); goto found; } for (dim_type t = 0; t < d; ++t) { if (dof == getfem::second_derivative_dof(d, r, t)) { - sprintf(s, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); + snprintf(s, 199, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); goto found; } } diff --git a/contrib/crack_plate/crack_bilaplacian_moment.cc b/contrib/crack_plate/crack_bilaplacian_moment.cc index b542ad3e..405a04e2 100644 --- a/contrib/crack_plate/crack_bilaplacian_moment.cc +++ b/contrib/crack_plate/crack_bilaplacian_moment.cc @@ -79,9 +79,9 @@ size_type is_dx_dof_type(getfem::pdof_description dof){ size_type dx_dof = 0 ; for (unsigned r = 0; r < 2; ++r) { if (dof == getfem::derivative_dof(2,0)){ - sprintf(s, "D_%c[%d]", "xyzuvw"[r], 2); - dx_dof = 1 ; - } + snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], 2); + dx_dof = 1 ; + } } return dx_dof ; } @@ -91,10 +91,10 @@ size_type is_dy_dof_type(getfem::pdof_description dof){ size_type dy_dof = 0 ; for (unsigned r = 0; r < 2; ++r) { if (dof == getfem::derivative_dof(2,1)){ - sprintf(s, "D_%c[%d]", "xyzuvw"[r], 2); - dy_dof = 1 ; - cout << "passage dans is_dy_dof_type OK \n" ; - } + snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], 2); + dy_dof = 1 ; + cout << "passage dans is_dy_dof_type OK \n" ; + } } return dy_dof ; } diff --git a/contrib/delaminated_crack/delaminated_crack.cc b/contrib/delaminated_crack/delaminated_crack.cc index ec1a46e5..5f8154bd 100644 --- a/contrib/delaminated_crack/delaminated_crack.cc +++ b/contrib/delaminated_crack/delaminated_crack.cc @@ -428,7 +428,7 @@ void crack_problem::shape_derivative(const plain_vector &U, plain_vector &SD) { // derivative of elastic energy char s[500]; - sprintf(s, "u=data(#1);" + snprintf(s, 499, "u=data(#1);" // "t=comp(vGrad(#1).vGrad(#1).vGrad(#2))(k,:,: ,l,:,:,:,:,:) // ".u(k).u(l);" "t=comp(vGrad(#1)(k,:,:).vGrad(#1)(l,:,:).vGrad(#2).u(k).u(l));" diff --git a/contrib/icare/icare.cc b/contrib/icare/icare.cc index 70f3ced0..4848f117 100644 --- a/contrib/icare/icare.cc +++ b/contrib/icare/icare.cc @@ -1521,12 +1521,12 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p); } if (PARAM.int_value("VTK_EXPORT")) { static int cnta=0; - char sa[128]; sprintf(sa, "SolIcare/DivUstar%d.vtk", cnta++); + char sa[128]; snprintf(sa, 127, "SolIcare/DivUstar%d.vtk", cnta++); getfem::vtk_export tata(sa, PARAM.int_value("VTK_EXPORT")==1); tata.exporting(mf_rhs); tata.write_point_data(mf_rhs, DIV, "divergence"); - char sb[128]; sprintf(sb, "SolIcare/Ustar%d.vtk", cnta++); + char sb[128]; snprintf(sb, 127, "SolIcare/Ustar%d.vtk", cnta++); getfem::vtk_export tbtb(sb, PARAM.int_value("VTK_EXPORT")==1); tbtb.exporting(mf_u); tbtb.write_point_data(mf_u, USTAR, "Ustar"); @@ -1719,7 +1719,7 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p); } if (PARAM.int_value("VTK_EXPORT")) { static int cnta=0; - char sa[128]; sprintf(sa, "SolIcare/DivU%d.vtk", cnta++); + char sa[128]; snprintf(sa, 127, "SolIcare/DivU%d.vtk", cnta++); getfem::vtk_export tata(sa, PARAM.int_value("VTK_EXPORT")==1); tata.exporting(mf_rhs); tata.write_point_data(mf_rhs, DIV, "divergence"); @@ -1815,7 +1815,7 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p); t_export += dt_export; static int cnt = 0; - char s[128]; sprintf(s, "SolIcare/icare.U%d", cnt++); + char s[128]; snprintf(s, 127, "SolIcare/icare.U%d", cnt++); gmm::vecsave(s, Un0); exp->write_point_data(mf_u, Un0); exp->serie_add_object("velocity"); @@ -1825,12 +1825,12 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p); exp->serie_add_object("pressure"); static int cntp=0; - char sp[128]; sprintf(sp, "SolIcare/icare.P%d", cntp++); + char sp[128]; snprintf(sp, 127, "SolIcare/icare.P%d", cntp++); gmm::vecsave(sp, Pn0); if (PARAM.int_value("TIME_ORDER")==2){ static int cntm1 = 0; - char sm1[128]; sprintf(sm1, "SolIcare/icare.Um%d", cntm1++); + char sm1[128]; snprintf(sm1, 127, "SolIcare/icare.Um%d", cntm1++); gmm::vecsave(sm1, Unm1); exp->write_point_data(mf_u, Unm1); exp->serie_add_object("velocity"); @@ -1852,27 +1852,27 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p); if (PARAM.int_value("VTK_EXPORT")) { cout << "export to " << datafilename + "U.vtk" << "..\n"; static int cnta=0; - char sa[128]; sprintf(sa, "SolIcare/icareU%d.vtk", cnta++); + char sa[128]; snprintf(sa, 127, "SolIcare/icareU%d.vtk", cnta++); getfem::vtk_export tata( sa,PARAM.int_value("VTK_EXPORT")==1); tata.exporting(mf_u); tata.write_point_data(mf_u, Un0, "vitesse"); if (PARAM.int_value("TIME_ORDER")==2){ static int cntam1=0; - char sam1[128]; sprintf(sam1, "SolIcare/icareUm%d.vtk", cntam1++); + char sam1[128]; snprintf(sam1, 127, "SolIcare/icareUm%d.vtk", cntam1++); getfem::vtk_export tamtam( sam1,PARAM.int_value("VTK_EXPORT")==1); tamtam.exporting(mf_u); tamtam.write_point_data(mf_u, Unm1, "vitesse"); } static int cnte=0; - char se[128]; sprintf(se, "SolIcare/icareP%d.vtk", cnte++); + char se[128]; snprintf(se, 127, "SolIcare/icareP%d.vtk", cnte++); getfem::vtk_export tete( se,PARAM.int_value("VTK_EXPORT")==1); tete.exporting(mf_p); tete.write_point_data(mf_p, Pn0, "pression"); //static int cnti=0; - //char si[128]; sprintf(si, "SolIcare/icareRot%d.vtk", cnti++); + //char si[128]; snprintf(si, 127, "SolIcare/icareRot%d.vtk", cnti++); //getfem::vtk_export titi( si, PARAM.int_value("VTK_EXPORT")==1); //titi.exporting(mf_rhs); //titi.write_point_data(mf_rhs, Rot, "rotationnel"); @@ -1890,17 +1890,17 @@ gmm :: sub_interval SUB_CT_P(0,nbdof_p); // RotZ[i] = DU[i*N*N + 3] - DU[i*N*N + 1]; // //static int cntt=0; - //char st[128]; sprintf(st, "SolIcare/icareRotX%d.vtk", cntt++); + //char st[128]; snprintf(st, 127, "SolIcare/icareRotX%d.vtk", cntt++); //getfem::vtk_export titi( st, PARAM.int_value("VTK_EXPORT")==1); //titi.exporting(mf_rhs); //titi.write_point_data(mf_rhs, RotX, "rotationnelX"); //static int cntu=0; - //char su[128]; sprintf(su, "SolIcare/icareRotY%d.vtk", cntu++); + //char su[128]; snprintf(su, 127, "SolIcare/icareRotY%d.vtk", cntu++); //getfem::vtk_export tete( su, PARAM.int_value("VTK_EXPORT")==1); //tete.exporting(mf_rhs); //tete.write_point_data(mf_rhs, RotY, "rotationnelY"); //static int cntv=0; - //char sv[128]; sprintf(sv, "SolIcare/icareRotZ%d.vtk", cntv++); + //char sv[128]; snprintf(sv, 127, "SolIcare/icareRotZ%d.vtk", cntv++); //getfem::vtk_export tyty( sv, PARAM.int_value("VTK_EXPORT")==1); //tyty.exporting(mf_rhs); //tyty.write_point_data(mf_rhs, RotZ, "rotationnelZ"); diff --git a/contrib/opt_assembly/opt_assembly.cc b/contrib/opt_assembly/opt_assembly.cc index 534b9d71..41a3f6ae 100644 --- a/contrib/opt_assembly/opt_assembly.cc +++ b/contrib/opt_assembly/opt_assembly.cc @@ -389,8 +389,8 @@ static void test_new_assembly(int N, int NX, int pK) { getfem::mesh m; - char Ns[5]; sprintf(Ns, "%d", N); - char Ks[5]; sprintf(Ks, "%d", pK); + char Ns[5]; snprintf(Ns, 5, "%d", N); + char Ks[5]; snprintf(Ks, 5, "%d", pK); bgeot::pgeometric_trans pgt = bgeot::geometric_trans_descriptor ((std::string("GT_PK(") + Ns + ",1)").c_str()); diff --git a/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc b/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc index 57917015..446be071 100644 --- a/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc +++ b/contrib/xfem_stab_unilat_contact/xfem_stab_unilat_contact.cc @@ -687,31 +687,31 @@ struct unilateral_contact_problem { std::string name_of_dof(getfem::pdof_description dof) { char s[200]; - sprintf(s, "UnknownDof[%p]", (void*)dof); + snprintf(s, 199, "UnknownDof[%p]", (void*)dof); for (dim_type d = 0; d < 4; ++d) { if (dof == getfem::lagrange_dof(d)) { - sprintf(s, "Lagrange[%d]", d); goto found; + snprintf(s, 199, "Lagrange[%d]", d); goto found; } if (dof == getfem::normal_derivative_dof(d)) { - sprintf(s, "D_n[%d]", d); goto found; + snprintf(s, 199, "D_n[%d]", d); goto found; } if (dof == getfem::global_dof(d)) { - sprintf(s, "GlobalDof[%d]", d); + snprintf(s, 199, "GlobalDof[%d]", d); } if (dof == getfem::mean_value_dof(d)) { - sprintf(s, "MeanValue[%d]", d); + snprintf(s, 199, "MeanValue[%d]", d); } if (getfem::dof_xfem_index(dof) != 0) { - sprintf(s, "Xfem[idx:%d]", int(dof_xfem_index(dof))); + snprintf(s, 199, "Xfem[idx:%d]", int(dof_xfem_index(dof))); } for (dim_type r = 0; r < d; ++r) { if (dof == getfem::derivative_dof(d, r)) { - sprintf(s, "D_%c[%d]", "xyzuvw"[r], d); goto found; + snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], d); goto found; } for (dim_type t = 0; t < d; ++t) { if (dof == getfem::second_derivative_dof(d, r, t)) { - sprintf(s, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); + snprintf(s, 199, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); goto found; } } diff --git a/interface/src/gf_slice_get.cc b/interface/src/gf_slice_get.cc index 9a47f097..cc22b486 100644 --- a/interface/src/gf_slice_get.cc +++ b/interface/src/gf_slice_get.cc @@ -29,7 +29,7 @@ using namespace getfemint; static void fmt_pt_povray(std::ofstream &f, const getfem::base_node &pt) { char s[100]; if (pt.size() == 0) GMM_THROW(getfemint_error, "empty point"); - sprintf(s, "<%g,%g,%g>",pt[0],pt.size() > 1 ? pt[1] : 0., pt.size() > 2 ? pt[2] : 0.); + snprintf(s, 99, "<%g,%g,%g>",pt[0],pt.size() > 1 ? pt[1] : 0., pt.size() > 2 ? pt[2] : 0.); f << s; } diff --git a/src/getfem/dal_basic.h b/src/getfem/dal_basic.h index e0c2e3e3..1c9694b2 100644 --- a/src/getfem/dal_basic.h +++ b/src/getfem/dal_basic.h @@ -104,6 +104,8 @@ namespace dal bool operator ==(const dna_iterator &i) const { return (i.in==in);} bool operator !=(const dna_iterator &i) const { return (i.in!=in);} bool operator < (const dna_iterator &i) const { return ( in<i.in);} + bool operator >=(const dna_iterator &i) const { return ( in>=i.in);} + bool operator > (const dna_iterator &i) const { return ( in>i.in);} }; /// Constant iterator class for dynamic array. @@ -160,6 +162,10 @@ namespace dal { return (i.in != in); } bool operator < (const dna_const_iterator &i) const { return (in < i.in); } + bool operator >=(const dna_const_iterator &i) const + { return (i.in >= in); } + bool operator > (const dna_const_iterator &i) const + { return (in > i.in); } }; /** Dynamic Array. Defines the basic container of the library which is diff --git a/src/getfem/dal_bit_vector.h b/src/getfem/dal_bit_vector.h index c7dc4aa8..1fe86b4b 100644 --- a/src/getfem/dal_bit_vector.h +++ b/src/getfem/dal_bit_vector.h @@ -82,6 +82,10 @@ namespace dal { { return bool(*this) == bool(x); } bool operator<(const bit_reference& x) const { return bool(*this) < bool(x); } + bool operator>(const bit_reference& x) const + { return bool(*this) > bool(x); } + bool operator>=(const bit_reference& x) const + { return bool(*this) >= bool(x); } void flip(void) { if (bool(*this)) *this = false; else *this = true; } }; @@ -126,6 +130,8 @@ namespace dal { bool operator==(const bit_iterator& x) const { return ind == x.ind; } bool operator!=(const bit_iterator& x) const { return ind != x.ind; } bool operator<(bit_iterator x) const { return ind < x.ind; } + bool operator>(bit_iterator x) const { return ind > x.ind; } + bool operator>=(bit_iterator x) const { return ind >= x.ind; } }; struct APIDECL bit_const_iterator { @@ -170,6 +176,8 @@ namespace dal { bool operator==(const bit_const_iterator& x) const { return ind == x.ind; } bool operator!=(const bit_const_iterator& x) const { return ind != x.ind; } bool operator<(bit_const_iterator x) const { return ind < x.ind; } + bool operator>(bit_const_iterator x) const { return ind > x.ind; } + bool operator>=(bit_const_iterator x) const { return ind >= x.ind; } }; ///Dynamic bit container. diff --git a/src/getfem/dal_tas.h b/src/getfem/dal_tas.h index 788052ed..e857c109 100644 --- a/src/getfem/dal_tas.h +++ b/src/getfem/dal_tas.h @@ -81,7 +81,9 @@ namespace dal bool operator ==(const dnt_iterator &i) const { return i.id==id;} bool operator !=(const dnt_iterator &i) const { return i.id!=id;} - bool operator < (const dnt_iterator &i) const { return id <i.id;} + bool operator < (const dnt_iterator &i) const { return id < i.id;} + bool operator > (const dnt_iterator &i) const { return id > i.id;} + bool operator >=(const dnt_iterator &i) const { return id >= i.id;} }; template<class T, unsigned char pks> dnt_iterator<T, pks> & @@ -129,6 +131,10 @@ namespace dal { return i.id != id;} bool operator < (const dnt_const_iterator &i) const { return id < i.id;} + bool operator > (const dnt_const_iterator &i) const + { return id > i.id;} + bool operator >=(const dnt_const_iterator &i) const + { return id >= i.id;} }; template<class T, unsigned char pks> class dynamic_tas diff --git a/src/getfem/getfem_generic_assembly.h b/src/getfem/getfem_generic_assembly.h index 1eb582eb..61f010bc 100644 --- a/src/getfem/getfem_generic_assembly.h +++ b/src/getfem/getfem_generic_assembly.h @@ -271,7 +271,7 @@ namespace getfem { struct var_description { - const bool is_variable; + bool is_variable; const mesh_fem *mf; const im_data *imd; gmm::sub_interval I; @@ -279,7 +279,7 @@ namespace getfem { bgeot::multi_index qdims; // For data having a qdim different than the // qdim of the fem or im_data (dim per dof for // dof data) and for constant variables. - const bool is_internal; + bool is_internal; size_type qdim() const { size_type q = 1; diff --git a/src/getfem/getfem_mesh_fem.h b/src/getfem/getfem_mesh_fem.h index 52a824e6..38df5461 100644 --- a/src/getfem/getfem_mesh_fem.h +++ b/src/getfem/getfem_mesh_fem.h @@ -86,7 +86,11 @@ namespace getfem { { return (it == i.it) && (ii == i.ii); } bool operator !=(const iterator &i) const { return !(i == *this); } bool operator < (const iterator &i) const - { return (it < i.it) && (ii < i.ii); } + { return (it < i.it) || ((it == i.it) && (ii < i.ii)); } + bool operator > (const iterator &i) const + { return (it > i.it) || ((it == i.it) && (ii > i.ii)); } + bool operator >= (const iterator &i) const + { return (it > i.it) || ((it == i.it) && (ii >= i.ii)); } tab_scal_to_vect_iterator() {} tab_scal_to_vect_iterator(const ITER &iter, dim_type n, dim_type i) diff --git a/src/getfem_contact_and_friction_large_sliding.cc b/src/getfem_contact_and_friction_large_sliding.cc index ab45a51f..a59ea124 100644 --- a/src/getfem_contact_and_friction_large_sliding.cc +++ b/src/getfem_contact_and_friction_large_sliding.cc @@ -2598,7 +2598,7 @@ namespace getfem { char ugroupname[50], wgroupname[50], transname[50]; for (int i = 0; i < 10000; ++i) { - sprintf(ugroupname, "disp__group_raytracing_%d", i); + snprintf(ugroupname, 49, "disp__group_raytracing_%d", i); if (!(md.variable_group_exists(ugroupname)) && !(md.variable_exists(ugroupname))) break; @@ -2606,7 +2606,7 @@ namespace getfem { md.define_variable_group(ugroupname, std::vector<std::string>()); for (int i = 0; i < 10000; ++i) { - sprintf(wgroupname, "w__group_raytracing_%d", i); + snprintf(wgroupname, 49, "w__group_raytracing_%d", i); if (!(md.variable_group_exists(wgroupname)) && !(md.variable_exists(wgroupname))) break; @@ -2614,7 +2614,7 @@ namespace getfem { md.define_variable_group(wgroupname, std::vector<std::string>()); for (int i = 0; i < 10000; ++i) { - sprintf(transname, "trans__raytracing_%d", i); + snprintf(transname, 49, "trans__raytracing_%d", i); if (!(md.interpolate_transformation_exists(transname))) break; } @@ -2935,7 +2935,7 @@ namespace getfem { char ugroupname[50], wgroupname[50], transname[50]; for (int i = 0; i < 10000; ++i) { - sprintf(ugroupname, "disp__group_raytracing_%d", i); + snprintf(ugroupname, 49, "disp__group_raytracing_%d", i); if (!(md.variable_group_exists(ugroupname)) && !(md.variable_exists(ugroupname))) break; @@ -2943,7 +2943,7 @@ namespace getfem { md.define_variable_group(ugroupname, std::vector<std::string>()); for (int i = 0; i < 10000; ++i) { - sprintf(wgroupname, "w__group_raytracing_%d", i); + snprintf(wgroupname, 49, "w__group_raytracing_%d", i); if (!(md.variable_group_exists(wgroupname)) && !(md.variable_exists(wgroupname))) break; @@ -2951,7 +2951,7 @@ namespace getfem { md.define_variable_group(wgroupname, std::vector<std::string>()); for (int i = 0; i < 10000; ++i) { - sprintf(transname, "trans__raytracing_%d", i); + snprintf(transname, 49, "trans__raytracing_%d", i); if (!(md.interpolate_transformation_exists(transname))) break; } diff --git a/src/getfem_fem.cc b/src/getfem_fem.cc index 8ce7803a..1dd4698c 100644 --- a/src/getfem_fem.cc +++ b/src/getfem_fem.cc @@ -1023,7 +1023,7 @@ namespace getfem { if (discontinuous && params.size() == 3) { scalar_type v = params[2].num(); GMM_ASSERT1(v >= 0 && v <= 1, "Bad value for alpha: " << v); - sprintf(alpha, ",%g", v); + snprintf(alpha, 127, ",%g", v); } GMM_ASSERT1(n > 0 && n < 100 && k >= 0 && k <= 150 && double(n) == params[0].num() && double(k) == params[1].num(), @@ -1087,7 +1087,7 @@ namespace getfem { if (params.size() == 3) { scalar_type v = params[2].num(); GMM_ASSERT1(v >= 0 && v <= 1, "Bad value for alpha: " << v); - sprintf(alpha, ",%g", v); + snprintf(alpha, 127, ",%g", v); } GMM_ASSERT1(n > 1 && n < 100 && k >= 0 && k <= 150 && double(n) == params[0].num() && double(k) == params[1].num(), diff --git a/src/getfem_mesh_level_set.cc b/src/getfem_mesh_level_set.cc index a720e58c..c1f04980 100644 --- a/src/getfem_mesh_level_set.cc +++ b/src/getfem_mesh_level_set.cc @@ -645,7 +645,7 @@ struct Chrono { if (noisy) { getfem::stored_mesh_slice sl; sl.build(msh, getfem::slicer_none(), 1); - char s[512]; sprintf(s, "totobefore%d.dx", int(cv)); + char s[512]; snprintf(s, 511, "totobefore%d.dx", int(cv)); getfem::dx_export exp(s); exp.exporting(sl); exp.exporting_mesh_edges(); @@ -705,7 +705,7 @@ struct Chrono { if (noisy) { getfem::stored_mesh_slice sl; sl.build(msh, getfem::slicer_none(), 12); - char s[512]; sprintf(s, "toto%d.dx", int(cv)); + char s[512]; snprintf(s, 511, "toto%d.dx", int(cv)); getfem::dx_export exp(s); exp.exporting(sl); exp.exporting_mesh_edges(); diff --git a/src/getfem_mesher.cc b/src/getfem_mesher.cc index 01349224..8eae26f3 100644 --- a/src/getfem_mesher.cc +++ b/src/getfem_mesher.cc @@ -1291,7 +1291,7 @@ namespace getfem { // for (size_type i=0; i < t.size()/(N+1); ++i) // m.add_convex_by_points(bgeot::simplex_geotrans(N,1), // dal::index_ref_iterator(pts.begin(), &t[i*(N+1)])); - // char s[50]; sprintf(s, "toto%02d.mesh", count); + // char s[50]; snprintf(s, 49, "toto%02d.mesh", count); // m.write_to_file(s); if ( (count > 40 && sqrt(maxdp)*deltat < ptol * h0) diff --git a/src/gmm/gmm_conjugated.h b/src/gmm/gmm_conjugated.h index 2ff8ad19..f7684204 100644 --- a/src/gmm/gmm_conjugated.h +++ b/src/gmm/gmm_conjugated.h @@ -86,6 +86,10 @@ namespace gmm { { return (i.it != it); } bool operator < (const conjugated_const_iterator &i) const { return (it < i.it); } + bool operator > (const conjugated_const_iterator &i) const + { return (it > i.it); } + bool operator >= (const conjugated_const_iterator &i) const + { return (it >= i.it); } }; template <typename V> struct conjugated_vector_const_ref { @@ -170,6 +174,8 @@ namespace gmm { bool operator ==(const iterator &i) const { return (it == i.it); } bool operator !=(const iterator &i) const { return !(i == *this); } bool operator < (const iterator &i) const { return (it < i.it); } + bool operator > (const iterator &i) const { return (it > i.it); } + bool operator >=(const iterator &i) const { return (it >= i.it); } conjugated_row_const_iterator(void) {} conjugated_row_const_iterator(const ITER &i) : it(i) { } @@ -227,7 +233,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return (it == i.it); } bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return (it < i.it); } + bool operator < (const iterator &i) const { return (it < i.it); } + bool operator > (const iterator &i) const { return (it > i.it); } + bool operator >=(const iterator &i) const { return (it >= i.it); } conjugated_col_const_iterator(void) {} conjugated_col_const_iterator(const ITER &i) : it(i) { } diff --git a/src/gmm/gmm_interface.h b/src/gmm/gmm_interface.h index 6635a25b..fb3cc0e5 100644 --- a/src/gmm/gmm_interface.h +++ b/src/gmm/gmm_interface.h @@ -475,6 +475,10 @@ namespace gmm { bool operator !=(const iterator &ii) const { return !(ii == *this); } bool operator < (const iterator &ii) const { return (*this - ii) < difference_type(0); } + bool operator > (const iterator &ii) const + { return (*this - ii) > difference_type(0); } + bool operator >=(const iterator &ii) const + { return (*this - ii) >= difference_type(0); } dense_compressed_iterator(void) {} dense_compressed_iterator(const dense_compressed_iterator<MIT,MIT,MPT> &ii) @@ -613,7 +617,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return (jc == i.jc); } bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return (jc < i.jc); } + bool operator < (const iterator &i) const { return (jc < i.jc); } + bool operator > (const iterator &i) const { return (jc > i.jc); } + bool operator >=(const iterator &i) const { return (jc >= i.jc); } sparse_compressed_iterator(void) {} sparse_compressed_iterator(PT1 p1, PT2 p2, PT3 p3, size_type nn, diff --git a/src/gmm/gmm_real_part.h b/src/gmm/gmm_real_part.h index 0ea6d4dd..6a24debb 100644 --- a/src/gmm/gmm_real_part.h +++ b/src/gmm/gmm_real_part.h @@ -170,6 +170,10 @@ namespace gmm { { return (i.it != it); } bool operator < (const part_vector_iterator &i) const { return (it < i.it); } + bool operator > (const part_vector_iterator &i) const + { return (it > i.it); } + bool operator >=(const part_vector_iterator &i) const + { return (it >= i.it); } }; diff --git a/src/gmm/gmm_ref.h b/src/gmm/gmm_ref.h index b41fbdd5..7c629542 100644 --- a/src/gmm/gmm_ref.h +++ b/src/gmm/gmm_ref.h @@ -156,6 +156,16 @@ namespace gmm { // return ((piter) == ((i.piter)) // && *((dnas_iterator_ *)(this)) < *((*((dnas_iterator_ *)(this))))); // } +// bool operator > (const iterator &i) const +// { +// return ((piter) == ((i.piter)) +// && *((dnas_iterator_ *)(this)) > *((*((dnas_iterator_ *)(this))))); +// } +// bool operator >= (const iterator &i) const +// { +// return ((piter) == ((i.piter)) +// && *((dnas_iterator_ *)(this)) >= *((*((dnas_iterator_ *)(this))))); +// } // tab_ref_index_iterator_(void) {} // tab_ref_index_iterator_(const ITER &iter, const dnas_iterator_ &dnas_iter) @@ -264,6 +274,10 @@ namespace gmm { bool operator !=(const iterator &i) const { return !(i == *this); } bool operator < (const iterator &i) const { return ((piter) == ((i.piter)) && iter_index < i.iter_index); } + bool operator > (const iterator &i) const + { return ((piter) == ((i.piter)) && iter_index > i.iter_index); } + bool operator >=(const iterator &i) const + { return ((piter) == ((i.piter)) && iter_index >= i.iter_index); } tab_ref_index_ref_iterator_(void) {} tab_ref_index_ref_iterator_(const ITER &iter, @@ -385,6 +399,10 @@ namespace gmm { { return (*this - ii) != difference_type(0); } bool operator < (const iterator &ii) const { return (*this - ii) < difference_type(0); } + bool operator >=(const iterator &ii) const + { return (*this - ii) >= difference_type(0); } + bool operator > (const iterator &ii) const + { return (*this - ii) > difference_type(0); } tab_ref_reg_spaced_iterator_(void) {} tab_ref_reg_spaced_iterator_(const ITER &iter, size_type n, size_type ii) diff --git a/src/gmm/gmm_scaled.h b/src/gmm/gmm_scaled.h index 0d7d563c..9f1518f4 100644 --- a/src/gmm/gmm_scaled.h +++ b/src/gmm/gmm_scaled.h @@ -87,7 +87,11 @@ namespace gmm { inline bool operator !=(const scaled_const_iterator &i) const { return (i.it != it); } inline bool operator < (const scaled_const_iterator &i) const - { return (it < i.it); } + { return (it < i.it); } + inline bool operator > (const scaled_const_iterator &i) const + { return (it > i.it); } + inline bool operator >=(const scaled_const_iterator &i) const + { return (it >= i.it); } }; template <typename V, typename S> struct scaled_vector_const_ref { @@ -146,7 +150,9 @@ namespace gmm { inline bool operator ==(const iterator &i) const { return (it == i.it); } inline bool operator !=(const iterator &i) const { return !(i == *this); } - inline bool operator < (const iterator &i) const { return (it < i.it); } + inline bool operator < (const iterator &i) const { return (it < i.it); } + inline bool operator >=(const iterator &i) const { return (it >= i.it); } + inline bool operator > (const iterator &i) const { return (it > i.it); } scaled_row_const_iterator(void) {} scaled_row_const_iterator(const ITER &i, S rr) @@ -207,7 +213,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return (it == i.it); } bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return (it < i.it); } + bool operator < (const iterator &i) const { return (it < i.it); } + bool operator > (const iterator &i) const { return (it > i.it); } + bool operator >=(const iterator &i) const { return (it >= i.it); } scaled_col_const_iterator(void) {} scaled_col_const_iterator(const ITER &i, S rr) diff --git a/src/gmm/gmm_std.h b/src/gmm/gmm_std.h index 413df776..6ed41a32 100644 --- a/src/gmm/gmm_std.h +++ b/src/gmm/gmm_std.h @@ -68,9 +68,9 @@ # define SECURE_NONCHAR_FSCANF fscanf # define SECURE_STRNCPY(a, la, b, lb) strncpy(a, b, lb) # define SECURE_FOPEN(F, filename, mode) ((*(F)) = fopen(filename, mode)) -# define SECURE_SPRINTF1(S, l, st, p1) sprintf(S, st, p1) -# define SECURE_SPRINTF2(S, l, st, p1, p2) sprintf(S, st, p1, p2) -# define SECURE_SPRINTF4(S, l, st, p1, p2, p3, p4) sprintf(S, st, p1, p2, p3, p4) +# define SECURE_SPRINTF1(S, l, st, p1) snprintf(S, l, st, p1) +# define SECURE_SPRINTF2(S, l, st, p1, p2) snprintf(S, l, st, p1, p2) +# define SECURE_SPRINTF4(S, l, st, p1, p2, p3, p4) snprintf(S, l, st, p1, p2, p3, p4) # define SECURE_STRDUP(s) strdup(s) #endif diff --git a/src/gmm/gmm_sub_matrix.h b/src/gmm/gmm_sub_matrix.h index 998a7662..f89d626e 100644 --- a/src/gmm/gmm_sub_matrix.h +++ b/src/gmm/gmm_sub_matrix.h @@ -115,7 +115,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return (ii == i.ii); } bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return (ii < i.ii); } + bool operator < (const iterator &i) const { return (ii < i.ii); } + bool operator > (const iterator &i) const { return (ii > i.ii); } + bool operator >=(const iterator &i) const { return (ii >= i.ii); } gen_sub_row_matrix_iterator(void) {} gen_sub_row_matrix_iterator(const @@ -263,7 +265,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return (ii == i.ii); } bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return (ii < i.ii); } + bool operator < (const iterator &i) const { return (ii < i.ii); } + bool operator > (const iterator &i) const { return (ii > i.ii); } + bool operator >=(const iterator &i) const { return (ii >= i.ii); } gen_sub_col_matrix_iterator(void) {} gen_sub_col_matrix_iterator(const diff --git a/src/gmm/gmm_sub_vector.h b/src/gmm/gmm_sub_vector.h index 8e99eb80..c75c8a7b 100644 --- a/src/gmm/gmm_sub_vector.h +++ b/src/gmm/gmm_sub_vector.h @@ -309,7 +309,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return index() == i.index();} bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return index() < i.index();} + bool operator < (const iterator &i) const { return index() < i.index();} + bool operator > (const iterator &i) const { return index() > i.index();} + bool operator >=(const iterator &i) const { return index() >= i.index();} skyline_sub_vector_iterator() {} skyline_sub_vector_iterator(const IT &it, const SUBI &s) diff --git a/src/gmm/gmm_vector.h b/src/gmm/gmm_vector.h index 2e4919bf..7e6e5dcc 100644 --- a/src/gmm/gmm_vector.h +++ b/src/gmm/gmm_vector.h @@ -1367,6 +1367,10 @@ namespace gmm { { return !(i == *this); } bool operator < (const iterator &i) const { return it < i.it; } + bool operator > (const iterator &i) const + { return it > i.it; } + bool operator >=(const iterator &i) const + { return it >= i.it; } size_type index() const { return shift; } slvector_iterator() {} @@ -1418,6 +1422,10 @@ namespace gmm { { return !(i == *this); } bool operator < (const iterator &i) const { return it < i.it; } + bool operator > (const iterator &i) const + { return it > i.it; } + bool operator >=(const iterator &i) const + { return it >= i.it; } size_type index() const { return shift; } slvector_const_iterator() {} diff --git a/src/gmm/gmm_vector_to_matrix.h b/src/gmm/gmm_vector_to_matrix.h index 95b0bea1..66d691e4 100644 --- a/src/gmm/gmm_vector_to_matrix.h +++ b/src/gmm/gmm_vector_to_matrix.h @@ -101,7 +101,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return (isend == i.isend); } bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return (*this - i < 0); } + bool operator < (const iterator &i) const { return (*this - i < 0); } + bool operator > (const iterator &i) const { return (*this - i > 0); } + bool operator >=(const iterator &i) const { return (*this - i >= 0); } gen_row_vector_iterator(void) {} gen_row_vector_iterator(const gen_row_vector_iterator<MPT> &itm) @@ -225,7 +227,9 @@ namespace gmm { bool operator ==(const iterator &i) const { return (isend == i.isend); } bool operator !=(const iterator &i) const { return !(i == *this); } - bool operator < (const iterator &i) const { return (*this - i < 0); } + bool operator < (const iterator &i) const { return (*this - i < 0); } + bool operator > (const iterator &i) const { return (*this - i > 0); } + bool operator >=(const iterator &i) const { return (*this - i >= 0); } gen_col_vector_iterator(void) {} gen_col_vector_iterator(const gen_col_vector_iterator<MPT> &itm) diff --git a/tests/crack.cc b/tests/crack.cc index 52350dde..f5aff767 100644 --- a/tests/crack.cc +++ b/tests/crack.cc @@ -376,31 +376,31 @@ struct crack_problem { std::string name_of_dof(getfem::pdof_description dof) { char s[200]; - sprintf(s, "UnknownDof[%p]", (void*)dof); + snprintf(s, 199, "UnknownDof[%p]", (void*)dof); for (dim_type d = 0; d < 4; ++d) { if (dof == getfem::lagrange_dof(d)) { - sprintf(s, "Lagrange[%d]", d); goto found; + snprintf(s, 199, "Lagrange[%d]", d); goto found; } if (dof == getfem::normal_derivative_dof(d)) { - sprintf(s, "D_n[%d]", d); goto found; + snprintf(s, 199, "D_n[%d]", d); goto found; } if (dof == getfem::global_dof(d)) { - sprintf(s, "GlobalDof[%d]", d); + snprintf(s, 199, "GlobalDof[%d]", d); } if (dof == getfem::mean_value_dof(d)) { - sprintf(s, "MeanValue[%d]", d); + snprintf(s, 199, "MeanValue[%d]", d); } if (getfem::dof_xfem_index(dof) != 0) { - sprintf(s, "Xfem[idx:%d]", int(dof_xfem_index(dof))); + snprintf(s, 199, "Xfem[idx:%d]", int(dof_xfem_index(dof))); } for (dim_type r = 0; r < d; ++r) { if (dof == getfem::derivative_dof(d, r)) { - sprintf(s, "D_%c[%d]", "xyzuvw"[r], d); goto found; + snprintf(s, 199, "D_%c[%d]", "xyzuvw"[r], d); goto found; } for (dim_type t = 0; t < d; ++t) { if (dof == getfem::second_derivative_dof(d, r, t)) { - sprintf(s, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); + snprintf(s, 199, "D2%c%c[%d]", "xyzuvw"[r], "xyzuvw"[t], d); goto found; } } diff --git a/tests/heat_equation.cc b/tests/heat_equation.cc index 25e0fec2..c12a0258 100644 --- a/tests/heat_equation.cc +++ b/tests/heat_equation.cc @@ -300,7 +300,7 @@ bool heat_equation_problem::solve(void) { // cout << "t = " << model.get_time() << endl; gmm::copy(model.real_variable("u"), U); if (PARAM.int_value("EXPORT_SOLUTION") != 0) { - char s[100]; sprintf(s, "step%d", int(t/dt)+1); + char s[100]; snprintf(s, 100, "step%d", int(t/dt)+1); gmm::vecsave(datafilename + s + ".U", U); } diff --git a/tests/integration.cc b/tests/integration.cc index 4f83d107..2d5a0ba7 100644 --- a/tests/integration.cc +++ b/tests/integration.cc @@ -204,29 +204,29 @@ const std::vector<size_type>& CUBE4D_D() { static void check_orders() { char s[512]; for (int k=1; k < 20; k+=6) { - sprintf(s,"IM_GAUSS1D(%d)",k); check_im_order(s); - sprintf(s,"IM_GAUSSLOBATTO1D(%d)",k); check_im_order(s); + snprintf(s, 511, "IM_GAUSS1D(%d)",k); check_im_order(s); + snprintf(s, 511, "IM_GAUSSLOBATTO1D(%d)",k); check_im_order(s); } for (std::vector<size_type>::const_iterator it = TRIANGLE_D().begin(); it != TRIANGLE_D().end(); ++it) { - sprintf(s,"IM_TRIANGLE(%d)",int(*it)); check_im_order(s); + snprintf(s,511, "IM_TRIANGLE(%d)",int(*it)); check_im_order(s); } for (std::vector<size_type>::const_iterator it = TETRA_D().begin(); it != TETRA_D().end(); ++it) { - sprintf(s,"IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s); + snprintf(s,511, "IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s); } for (std::vector<size_type>::const_iterator it = QUAD_D().begin(); it != QUAD_D().end(); ++it) { - sprintf(s,"IM_QUAD(%d)",int(*it)); check_im_order(s); + snprintf(s,511, "IM_QUAD(%d)",int(*it)); check_im_order(s); } for (std::vector<size_type>::const_iterator it = TETRA_D().begin(); it != TETRA_D().end(); ++it) { - sprintf(s,"IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s); + snprintf(s,511, "IM_TETRAHEDRON(%d)",int(*it)); check_im_order(s); } for (std::vector<size_type>::const_iterator it = SIMPLEX4_D().begin(); it != SIMPLEX4_D().end(); ++it) { - sprintf(s,"IM_SIMPLEX4D(%d)",int(*it)); check_im_order(s); + snprintf(s,511, "IM_SIMPLEX4D(%d)",int(*it)); check_im_order(s); } for (std::vector<size_type>::const_iterator it = HEXA_D().begin(); it != HEXA_D().end(); ++it) { - sprintf(s,"IM_HEXAHEDRON(%d)",int(*it)); check_im_order(s); + snprintf(s,511, "IM_HEXAHEDRON(%d)",int(*it)); check_im_order(s); } for (std::vector<size_type>::const_iterator it = CUBE4D_D().begin(); it != CUBE4D_D().end(); ++it) { - sprintf(s,"IM_CUBE4D(%d)",int(*it)); check_im_order(s); + snprintf(s,511, "IM_CUBE4D(%d)",int(*it)); check_im_order(s); } } @@ -234,11 +234,11 @@ static void check_methods() { char s[512]; getfem::pintegration_method ppi; for (size_type k=0; k < 15; ++k) { - sprintf(s,"IM_GAUSS1D(%d)",int(k)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_GAUSS1D(%d)",int(k)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::simplex_geotrans(1,1)); - sprintf(s,"IM_NC(1,%d)",int(k)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_NC(1,%d)",int(k)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::simplex_geotrans(1,1)); - sprintf(s,"IM_EXACT_SIMPLEX(1)"); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_EXACT_SIMPLEX(1)"); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::simplex_geotrans(1,1)); } @@ -246,13 +246,13 @@ static void check_methods() { for (size_type d=2; d < 5; ++d) { for (size_type k=0; k < 7-d; ++k) { - sprintf(s,"IM_EXACT_SIMPLEX(%d)",int(d)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_EXACT_SIMPLEX(%d)",int(d)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::simplex_geotrans(d,1)); } } for (std::vector<size_type>::const_iterator it = TRIANGLE_D().begin(); it != TRIANGLE_D().end(); ++it) { - sprintf(s,"IM_TRIANGLE(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_TRIANGLE(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); for (size_type k=1; k <= *it; ++k) { check_method(s,ppi,k,bgeot::simplex_geotrans(2,1)); } @@ -261,19 +261,19 @@ static void check_methods() { for (size_type d=2; d < 5; ++d) { for (size_type i=1; i < 8; ++i) { for (size_type k=0; k < std::min(i,5-d); ++k) { - sprintf(s,"IM_NC(%d,%d)",int(d),int(i)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_NC(%d,%d)",int(d),int(i)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::simplex_geotrans(d,1)); } } } for (std::vector<size_type>::const_iterator it = TETRA_D().begin(); it != TETRA_D().end(); ++it) { - sprintf(s,"IM_TETRAHEDRON(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_TETRAHEDRON(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); for (size_type k=1; k <= *it; ++k) { check_method(s,ppi,k,bgeot::simplex_geotrans(3,1)); } } for (std::vector<size_type>::const_iterator it = SIMPLEX4_D().begin(); it != SIMPLEX4_D().end(); ++it) { - sprintf(s,"IM_SIMPLEX4D(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_SIMPLEX4D(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); for (size_type k=1; k <= *it; ++k) { check_method(s,ppi,k,bgeot::simplex_geotrans(4,1)); } @@ -288,48 +288,48 @@ static void check_methods() { default: kmax = 3; break; } for (size_type k=0; k < kmax; ++k) { - sprintf(s,"IM_EXACT_PARALLELEPIPED(%d)",int(d)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_EXACT_PARALLELEPIPED(%d)",int(d)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d)); - sprintf(s,"IM_GAUSS_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_GAUSS_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d)); - sprintf(s,"IM_NC_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_NC_PARALLELEPIPED(%d,%d)",int(d),int(k)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d)); if (d>1) { - sprintf(s,"IM_PRODUCT(IM_GAUSS_PARALLELEPIPED(%d,%d),IM_NC(1,%d))",int(d-1),int(k),int(k)); + snprintf(s,511,"IM_PRODUCT(IM_GAUSS_PARALLELEPIPED(%d,%d),IM_NC(1,%d))",int(d-1),int(k),int(k)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(d)); } } } for (std::vector<size_type>::const_iterator it = QUAD_D().begin(); it != QUAD_D().end(); ++it) { - sprintf(s,"IM_QUAD(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_QUAD(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); for (size_type k=1; k <= size_type(sqrt(scalar_type(*it))); k++) { check_method(s,ppi,k,bgeot::parallelepiped_linear_geotrans(2)); } } for (std::vector<size_type>::const_iterator it = HEXA_D().begin(); it != HEXA_D().end(); ++it) { - sprintf(s,"IM_HEXAHEDRON(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_HEXAHEDRON(%d)",int(*it)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,size_type(::pow(scalar_type(*it),1./3.)), bgeot::parallelepiped_linear_geotrans(3)); } for (std::vector<size_type>::const_iterator it = CUBE4D_D().begin(); it != CUBE4D_D().end(); ++it) { - sprintf(s,"IM_CUBE4D(%d)", int(*it)); ppi = getfem::int_method_descriptor(s); + snprintf(s,511,"IM_CUBE4D(%d)", int(*it)); ppi = getfem::int_method_descriptor(s); check_method(s,ppi,1,bgeot::parallelepiped_linear_geotrans(4)); } for (size_type d=2; d < 5; ++d) { for (size_type k=0; k < 7-d; ++k) { - sprintf(s,"IM_EXACT_PRISM(%d)",int(d)); + snprintf(s,511,"IM_EXACT_PRISM(%d)",int(d)); ppi = getfem::int_method_descriptor(s); check_method(s, getfem::int_method_descriptor(s), k, bgeot::prism_linear_geotrans(d)); - sprintf(s,"IM_NC_PRISM(%d,%d)", int(d),int(k)); + snprintf(s,511,"IM_NC_PRISM(%d,%d)", int(d),int(k)); ppi = getfem::int_method_descriptor(s); check_method(s, getfem::int_method_descriptor(s), k, bgeot::prism_geotrans(d, short_type(std::max(k, size_type(1))))); if (d == 3) { - sprintf(s,"IM_PRODUCT(IM_TRIANGLE(6),IM_GAUSS1D(6))"); + snprintf(s,511,"IM_PRODUCT(IM_TRIANGLE(6),IM_GAUSS1D(6))"); ppi = getfem::int_method_descriptor(s); check_method(s, getfem::int_method_descriptor(s), k, bgeot::prism_geotrans(d,short_type(std::max<size_type>(k,1)))); @@ -340,32 +340,32 @@ static void check_methods() { { - sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(3),4)"); + snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(3),4)"); check_method(s, getfem::int_method_descriptor(s), 3, bgeot::simplex_geotrans(1,1)); - sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(3),4)"); + snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(3),4)"); check_method(s, getfem::int_method_descriptor(s), 3,bgeot::simplex_geotrans(2,1)); - sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_TETRAHEDRON(5),3)"); + snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_TETRAHEDRON(5),3)"); check_method(s, getfem::int_method_descriptor(s), 5,bgeot::simplex_geotrans(3,1)); /* // not implemented ... - sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC(4,2),3)"); + snprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC(4,2),3)"); check_method(s, getfem::int_method_descriptor(s), 2,bgeot::simplex_geotrans(4,1)); */ - sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_QUAD(5),10)"); // QUAD(5) can't integrate Q5 polynomials, but it is sufficiently refined... + snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_QUAD(5),10)"); // QUAD(5) can't integrate Q5 polynomials, but it is sufficiently refined... check_method(s, getfem::int_method_descriptor(s), 5, bgeot::parallelepiped_linear_geotrans(2)); - sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)"); + snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)"); check_method(s, getfem::int_method_descriptor(s), 2, bgeot::parallelepiped_linear_geotrans(3)); - sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(4,2),2)"); + snprintf(s,511,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(4,2),2)"); check_method(s, getfem::int_method_descriptor(s), 2, bgeot::parallelepiped_linear_geotrans(4)); cerr << "FIXME: structured_mesh not implemented for prisms\n"; - /*sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC_PRISM(3,3),2)"); + /*snprintf(s,"IM_STRUCTURED_COMPOSITE(IM_NC_PRISM(3,3),2)"); check_method(s, getfem::int_method_descriptor(s), 2, bgeot::prism_geotrans(3,1));*/ - sprintf(s, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2,8), 2)"); + snprintf(s,511, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2,8), 2)"); check_method(s, getfem::int_method_descriptor(s), 2, bgeot::simplex_geotrans(2,1)); - sprintf(s, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 2, 3)"); + snprintf(s,511, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 2, 3)"); check_method(s, getfem::int_method_descriptor(s), 1, bgeot::simplex_geotrans(3,1)); - sprintf(s, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 1)"); + snprintf(s,511, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 1)"); check_method(s, getfem::int_method_descriptor(s), 1, bgeot::simplex_geotrans(3,1)); - sprintf(s, "IM_QUASI_POLAR(IM_TETRAHEDRON(8), 2)"); + snprintf(s,511, "IM_QUASI_POLAR(IM_TETRAHEDRON(8), 2)"); check_method(s, getfem::int_method_descriptor(s), 2, bgeot::simplex_geotrans(3,1)); } } @@ -412,34 +412,34 @@ static void print_some_methods() { cout.precision(8); for (size_type i = 1; i < 15; ++i) { - sprintf(meth, "IM_GAUSS1D(%d)", int(2*(i - 1))); + snprintf(meth,499, "IM_GAUSS1D(%d)", int(2*(i - 1))); print_method(getfem::int_method_descriptor(meth)); } - /*sprintf(meth, "IM_PRODUCT(IM_GAUSS1D(2),IM_GAUSS1D(2))"); + /*snprintf(meth, "IM_PRODUCT(IM_GAUSS1D(2),IM_GAUSS1D(2))"); print_method(getfem::int_method_descriptor(meth)); for (size_type n = 1; n < 6; n++) { for (size_type i = 0; i < 3; ++i) { - sprintf(meth, "IM_NC(%d,%d)", int(n), int(i)); + snprintf(meth,499, "IM_NC(%d,%d)", int(n), int(i)); print_method(getfem::int_method_descriptor(meth)); } } - sprintf(meth, "IM_NC(2, 2)"); + snprintf(meth, "IM_NC(2, 2)"); print_method(getfem::int_method_descriptor(meth)); - sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_NC(2, 2), 1)"); + snprintf(meth,499, "IM_STRUCTURED_COMPOSITE(IM_NC(2, 2), 1)"); print_method(getfem::int_method_descriptor(meth)); - sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_QUAD(2),3)"); + snprintf(meth,499, "IM_STRUCTURED_COMPOSITE(IM_QUAD(2),3)"); print_method(getfem::int_method_descriptor(meth)); */ - //sprintf(meth, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2, 5),2)"); - //sprintf(meth, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 2, 3)"); - //sprintf(meth, "IM_QUASI_POLAR(IM_TETRAHEDRON(3), 2)"); - sprintf(meth, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 1)"); + //snprintf(meth,499, "IM_QUASI_POLAR(IM_GAUSS_PARALLELEPIPED(2, 5),2)"); + //snprintf(meth,499, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 2, 3)"); + //snprintf(meth,499, "IM_QUASI_POLAR(IM_TETRAHEDRON(3), 2)"); + snprintf(meth,499, "IM_QUASI_POLAR(IM_PRODUCT(IM_TRIANGLE(4), IM_GAUSS1D(4)), 1)"); print_method(getfem::int_method_descriptor(meth)); print_method(getfem::classical_approx_im(bgeot::simplex_geotrans(3,2), 3)); @@ -451,7 +451,7 @@ int main(/* int argc, char **argv */) { FE_ENABLE_EXCEPT; // Enable floating point exception for Nan. try { - /*char s[600]; sprintf(s,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)"); + /*char s[600]; snprintf(s,499,"IM_STRUCTURED_COMPOSITE(IM_GAUSS_PARALLELEPIPED(3,2),2)"); //check_method(s, getfem::int_method_descriptor(s), 2, bgeot::parallelepiped_linear_geotrans(3)); getfem::pfem pf = getfem::QK_fem(2,1); //getfem::classical_fem(bgeot::parallelepiped_linear_geotrans(2),1); return 100;*/ diff --git a/tests/nonlinear_elastostatic.cc b/tests/nonlinear_elastostatic.cc index 2b6a2051..63ff7d3a 100644 --- a/tests/nonlinear_elastostatic.cc +++ b/tests/nonlinear_elastostatic.cc @@ -298,7 +298,7 @@ bool elastostatic_problem::solve(plain_vector &U) { getfem::standard_solve(model, iter); gmm::copy(model.real_variable("u"), U); - //char s[100]; sprintf(s, "step%d", step+1); + //char s[100]; snprintf(s, 100, "step%d", step+1); /* append the new displacement to the exported opendx file */ exp.write_point_data(mf_u, U); //, s); diff --git a/tests/poly.cc b/tests/poly.cc index cacce253..aafc6e4c 100644 --- a/tests/poly.cc +++ b/tests/poly.cc @@ -29,7 +29,7 @@ std::string horner_print(bgeot::short_type degree, bgeot::power_index &mi, char s[1024]; const char *xyz = "xyzabcdefghijklmnop"; if (k == 0) { - sprintf(s, "P[%d]", int(mi.global_index())); + snprintf(s, 1023, "P[%d]", int(mi.global_index())); return s; } else { std::string str; @@ -38,11 +38,11 @@ std::string horner_print(bgeot::short_type degree, bgeot::power_index &mi, mi[k-1] != bgeot::short_type(-1); (mi[k-1])--) { //res = horner(mi, k-1, de + mi[k-1], it) + v * res; if (str.size()) - sprintf(s, "%s + %c*(%s)", + snprintf(s, 1023, "%s + %c*(%s)", horner_print(degree, mi,bgeot::short_type(k-1),bgeot::short_type(de+mi[k-1])).c_str(), xyz[k-1], str.c_str()); else - sprintf(s, "%s", horner_print(degree, mi,bgeot::short_type(k-1),bgeot::short_type(de+mi[k-1])).c_str()); + snprintf(s, 1023, "%s", horner_print(degree, mi,bgeot::short_type(k-1),bgeot::short_type(de+mi[k-1])).c_str()); str = s; } mi[k-1] = 0; diff --git a/tests/schwarz_additive.cc b/tests/schwarz_additive.cc index 9b58bd4e..2df0dac8 100644 --- a/tests/schwarz_additive.cc +++ b/tests/schwarz_additive.cc @@ -167,7 +167,7 @@ void pb_data::init(bgeot::md_param ¶ms) { dal::bit_vector nn = mesh.convex_index(dim_type(N)); char method[500]; - sprintf(method, "FEM_PK(%d, %d)", N, K); + snprintf(method, 499, "FEM_PK(%d, %d)", N, K); mim.set_integration_method(nn, bgeot::dim_type(2*K)); mef.set_finite_element(nn, getfem::fem_descriptor(method)); mef_coarse.set_finite_element(mesh_coarse.convex_index(dim_type(N)), diff --git a/tests/test_assembly.cc b/tests/test_assembly.cc index 1f7381c5..53f278c2 100644 --- a/tests/test_assembly.cc +++ b/tests/test_assembly.cc @@ -573,8 +573,8 @@ static void test_new_assembly(int N, int NX, int pK) { getfem::mesh m; - char Ns[5]; sprintf(Ns, "%d", N); - char Ks[5]; sprintf(Ks, "%d", pK); + char Ns[5]; snprintf(Ns, 5, "%d", N); + char Ks[5]; snprintf(Ks, 5, "%d", pK); bgeot::pgeometric_trans pgt = bgeot::geometric_trans_descriptor ((std::string("GT_PK(") + Ns + ",1)").c_str()); diff --git a/tests/test_continuation.cc b/tests/test_continuation.cc index bb6f41d0..48c3315a 100644 --- a/tests/test_continuation.cc +++ b/tests/test_continuation.cc @@ -144,7 +144,7 @@ bool state_problem::cont(plain_vector &U) { gmm::copy(gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof)), U); lambda = Y[nb_dof]; char s[100]; - sprintf(s, ".T_Y%d", (int) PARAM.int_value("IND_BRANCH", "Branch")); + snprintf(s, 99, ".T_Y%d", (int) PARAM.int_value("IND_BRANCH", "Branch")); gmm::vecload(datapath + bp_rootfilename + s, Y); gmm::copy(gmm::scaled(gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof)), direction), T_U); @@ -183,21 +183,21 @@ bool state_problem::cont(plain_vector &U) { sing_label = S.get_sing_label(); if (sing_label.size() > 0) { if (sing_label == "limit point") - sprintf(s1, "Step %lu: %s", step + 1, sing_label.c_str()); + snprintf(s1, 99, "Step %lu: %s", step + 1, sing_label.c_str()); else if (sing_label == "smooth bifurcation point") { gmm::copy(S.get_x_sing(), gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof))); Y[nb_dof] = S.get_gamma_sing(); - sprintf(s1, "continuation_step_%lu", step + 1); + snprintf(s1, 99, "continuation_step_%lu", step + 1); gmm::vecsave(datapath + s1 + "_bp.Y", Y); for (size_type i = 0; i < S.nb_tangent_sing(); i++) { gmm::copy(S.get_tx_sing(i), gmm::sub_vector(Y, gmm::sub_interval(0, nb_dof))); Y[nb_dof] = S.get_tgamma_sing(i); - sprintf(s2, "_bp.T_Y%lu", i + 1); + snprintf(s2, 99, "_bp.T_Y%lu", i + 1); gmm::vecsave(datapath + s1 + s2, Y); } - sprintf(s1, "Step %lu: %s, %u branch(es) located", step + 1, + snprintf(s1, 99, "Step %lu: %s, %u branch(es) located", step + 1, sing_label.c_str(), (unsigned int) S.nb_tangent_sing()); } sing_out.push_back(s1); diff --git a/tests/test_interpolated_fem.cc b/tests/test_interpolated_fem.cc index 54fdbdd6..b8498cdf 100644 --- a/tests/test_interpolated_fem.cc +++ b/tests/test_interpolated_fem.cc @@ -113,27 +113,27 @@ void lap_pb::init(void) { char meth[500]; getfem::pintegration_method ppi; switch (integration) { - case 0 : sprintf(meth, "IM_EXACT_SIMPLEX(%d)", int(N)); break; - case 1 : sprintf(meth, "IM_NC(%d, %d)", int(N), int(KI)); break; - case 2 : sprintf(meth, "IM_GAUSS1D(%d)", int(KI)); break; - case 3 : sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)", + case 0 : snprintf(meth, 499, "IM_EXACT_SIMPLEX(%d)", int(N)); break; + case 1 : snprintf(meth, 499, "IM_NC(%d, %d)", int(N), int(KI)); break; + case 2 : snprintf(meth, 499, "IM_GAUSS1D(%d)", int(KI)); break; + case 3 : snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)", int(N), int(2*K), int(KI)); break; - case 11 : sprintf(meth, "IM_TRIANGLE(1)"); break; - case 12 : sprintf(meth, "IM_TRIANGLE(2)"); break; - case 13 : sprintf(meth, "IM_TRIANGLE(3)"); break; - case 14 : sprintf(meth, "IM_TRIANGLE(4)"); break; - case 15 : sprintf(meth, "IM_TRIANGLE(5)"); break; - case 16 : sprintf(meth, "IM_TRIANGLE(6)"); break; - case 17 : sprintf(meth, "IM_TRIANGLE(7)"); break; - case 21 : sprintf(meth, "IM_TETRAHEDRON(1)"); break; - case 22 : sprintf(meth, "IM_TETRAHEDRON(2)"); break; - case 23 : sprintf(meth, "IM_TETRAHEDRON(3)"); break; - case 25 : sprintf(meth, "IM_TETRAHEDRON(5)"); break; + case 11 : snprintf(meth, 499, "IM_TRIANGLE(1)"); break; + case 12 : snprintf(meth, 499, "IM_TRIANGLE(2)"); break; + case 13 : snprintf(meth, 499, "IM_TRIANGLE(3)"); break; + case 14 : snprintf(meth, 499, "IM_TRIANGLE(4)"); break; + case 15 : snprintf(meth, 499, "IM_TRIANGLE(5)"); break; + case 16 : snprintf(meth, 499, "IM_TRIANGLE(6)"); break; + case 17 : snprintf(meth, 499, "IM_TRIANGLE(7)"); break; + case 21 : snprintf(meth, 499, "IM_TETRAHEDRON(1)"); break; + case 22 : snprintf(meth, 499, "IM_TETRAHEDRON(2)"); break; + case 23 : snprintf(meth, 499, "IM_TETRAHEDRON(3)"); break; + case 25 : snprintf(meth, 499, "IM_TETRAHEDRON(5)"); break; default : GMM_ASSERT1(false, "Undefined integration method"); } ppi = getfem::int_method_descriptor(meth); - sprintf(meth, "FEM_PK(%d,%d)", int(N), int(K)); + snprintf(meth, 499, "FEM_PK(%d,%d)", int(N), int(K)); nn = mesh1.convex_index(dim_type(N)); mim1.set_integration_method(nn, ppi); mef1.set_finite_element(nn, getfem::fem_descriptor(meth)); diff --git a/tests/test_mat_elem.cc b/tests/test_mat_elem.cc index f57c07a3..94847c6a 100644 --- a/tests/test_mat_elem.cc +++ b/tests/test_mat_elem.cc @@ -142,8 +142,8 @@ void lap_pb::init(void) switch (integration) { case 0 : switch (mesh_type) { - case 0 : sprintf(meth, "IM_EXACT_SIMPLEX(%d)", int(N)); break; - case 1 : sprintf(meth, "IM_EXACT_PARALLELEPIPED(%d)", int(N)); break; + case 0 : snprintf(meth, 499, "IM_EXACT_SIMPLEX(%d)", int(N)); break; + case 1 : snprintf(meth, 499, "IM_EXACT_PARALLELEPIPED(%d)", int(N)); break; default : GMM_ASSERT1(false, "Exact integration not allowed in this context"); } @@ -151,80 +151,80 @@ void lap_pb::init(void) case 1 : switch (mesh_type) { case 0 : - sprintf(meth, "IM_NC(%d,%d)", int(N), int(2*K)); + snprintf(meth, 499, "IM_NC(%d,%d)", int(N), int(2*K)); break; case 1 : - sprintf(meth, "IM_NC_PARALLELEPIPED(%d,%d)", int(N), int(2*K)); + snprintf(meth, 499, "IM_NC_PARALLELEPIPED(%d,%d)", int(N), int(2*K)); break; case 2 : - sprintf(meth, "IM_NC_PRISM(%d,%d)", int(N), int(2*K)); + snprintf(meth, 499, "IM_NC_PRISM(%d,%d)", int(N), int(2*K)); break; } break; case 2 : if (mesh_type == 1) - sprintf(meth, "IM_GAUSS_PARALLELEPIPED(%d,%d)", int(N), int(KI)); + snprintf(meth, 499, "IM_GAUSS_PARALLELEPIPED(%d,%d)", int(N), int(KI)); else GMM_ASSERT1(false, "Product of 1D Gauss only for parallelepipeds"); break; case 3 : if (mesh_type == 0) { if (N == 1) - sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(%d), %d)",2,int(KI)); + snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_GAUSS1D(%d), %d)",2,int(KI)); else if (N == 2) - sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(%d), %d)", + snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_TRIANGLE(%d), %d)", 2,int(KI)); else - sprintf(meth, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)", + snprintf(meth, 499, "IM_STRUCTURED_COMPOSITE(IM_NC(%d, %d), %d)", int(N), int(2*K), int(KI)); } else GMM_ASSERT1(false, "Composite integration only for simplexes"); break; - case 11 : sprintf(meth, "IM_TRIANGLE(1)"); break; - case 12 : sprintf(meth, "IM_TRIANGLE(2)"); break; - case 13 : sprintf(meth, "IM_TRIANGLE(3)"); break; - case 14 : sprintf(meth, "IM_TRIANGLE(4)"); break; - case 15 : sprintf(meth, "IM_TRIANGLE(5)"); break; - case 16 : sprintf(meth, "IM_TRIANGLE(6)"); break; - case 17 : sprintf(meth, "IM_TRIANGLE(7)"); break; - case 21 : sprintf(meth, "IM_TETRAHEDRON(1)"); break; - case 22 : sprintf(meth, "IM_TETRAHEDRON(2)"); break; - case 23 : sprintf(meth, "IM_TETRAHEDRON(3)"); break; - case 25 : sprintf(meth, "IM_TETRAHEDRON(5)"); break; - case 32 : sprintf(meth, "IM_QUAD(2)"); break; - case 33 : sprintf(meth, "IM_QUAD(3)"); break; - case 35 : sprintf(meth, "IM_QUAD(5)"); break; + case 11 : snprintf(meth, 499, "IM_TRIANGLE(1)"); break; + case 12 : snprintf(meth, 499, "IM_TRIANGLE(2)"); break; + case 13 : snprintf(meth, 499, "IM_TRIANGLE(3)"); break; + case 14 : snprintf(meth, 499, "IM_TRIANGLE(4)"); break; + case 15 : snprintf(meth, 499, "IM_TRIANGLE(5)"); break; + case 16 : snprintf(meth, 499, "IM_TRIANGLE(6)"); break; + case 17 : snprintf(meth, 499, "IM_TRIANGLE(7)"); break; + case 21 : snprintf(meth, 499, "IM_TETRAHEDRON(1)"); break; + case 22 : snprintf(meth, 499, "IM_TETRAHEDRON(2)"); break; + case 23 : snprintf(meth, 499, "IM_TETRAHEDRON(3)"); break; + case 25 : snprintf(meth, 499, "IM_TETRAHEDRON(5)"); break; + case 32 : snprintf(meth, 499, "IM_QUAD(2)"); break; + case 33 : snprintf(meth, 499, "IM_QUAD(3)"); break; + case 35 : snprintf(meth, 499, "IM_QUAD(5)"); break; default : GMM_ASSERT1(false, "Undefined integration method"); } ppi = getfem::int_method_descriptor(meth); getfem::pfem pfprinc = 0; switch (mesh_type) { case 0 : - sprintf(meth, "FEM_PK(%d,%d)", int(N), int(K)); + snprintf(meth, 499, "FEM_PK(%d,%d)", int(N), int(K)); pfprinc = getfem::fem_descriptor(meth); mim.set_integration_method(nn, ppi); mef.set_finite_element(nn, getfem::fem_descriptor(meth)); mef_data.set_finite_element(nn, getfem::fem_descriptor(meth)); - sprintf(meth, "FEM_PK(%d,%d)", int(N), 0); + snprintf(meth, 499, "FEM_PK(%d,%d)", int(N), 0); break; case 1 : - sprintf(meth, "FEM_QK(%d,%d)", int(N), K); + snprintf(meth, 499, "FEM_QK(%d,%d)", int(N), K); pfprinc = getfem::fem_descriptor(meth); mim.set_integration_method(nn, ppi); mef.set_finite_element(nn, getfem::fem_descriptor(meth)); mef_data.set_finite_element(nn, getfem::fem_descriptor(meth)); - sprintf(meth, "FEM_QK(%d,%d)", int(N), 0); + snprintf(meth, 499, "FEM_QK(%d,%d)", int(N), 0); break; case 2 : - sprintf(meth, "FEM_PK_PRISM(%d,%d)", int(N), K); + snprintf(meth, 499, "FEM_PK_PRISM(%d,%d)", int(N), K); pfprinc = getfem::fem_descriptor(meth); mim.set_integration_method(nn, ppi); mef.set_finite_element(nn, getfem::fem_descriptor(meth)); mef_data.set_finite_element(nn, getfem::fem_descriptor(meth)); - sprintf(meth, "FEM_PK_PRISM(%d,%d)", int(N), 0); + snprintf(meth, 499, "FEM_PK_PRISM(%d,%d)", int(N), 0); break; } @@ -234,19 +234,19 @@ void lap_pb::init(void) case 0 : break; case 1 : - sprintf(meth, "FEM_HERMITE(1)"); + snprintf(meth, 499, "FEM_HERMITE(1)"); pfprinc = getfem::fem_descriptor(meth); mef.set_finite_element(nn, getfem::fem_descriptor(meth)); break; case 2 : - sprintf(meth, "FEM_PK_HIERARCHICAL(%d, %d)", int(N), int(K)); + snprintf(meth, 499, "FEM_PK_HIERARCHICAL(%d, %d)", int(N), int(K)); pfprinc = getfem::fem_descriptor(meth); mef.set_finite_element(nn, getfem::fem_descriptor(meth)); break; case 3 : - sprintf(meth, "FEM_PK_HIERARCHICAL_COMPOSITE(%d,%d,%d)", int(N), 1, int(K)); + snprintf(meth, 499, "FEM_PK_HIERARCHICAL_COMPOSITE(%d,%d,%d)", int(N), 1, int(K)); pfprinc = getfem::fem_descriptor(meth); mef.set_finite_element(nn, getfem::fem_descriptor(meth)); break; diff --git a/tests/wave_equation.cc b/tests/wave_equation.cc index 3d5f656a..45b16457 100644 --- a/tests/wave_equation.cc +++ b/tests/wave_equation.cc @@ -332,7 +332,7 @@ bool wave_equation_problem::solve(void) { gmm::copy(model.real_variable("u"), U); if (PARAM.int_value("EXPORT_SOLUTION") != 0) { - char s[100]; sprintf(s, "step%d", int(t/dt)+1); + char s[100]; snprintf(s, 99, "step%d", int(t/dt)+1); gmm::vecsave(datafilename + s + ".U", U); }