42 #ifdef LIBMESH_USE_COMPLEX_NUMBERS
145 std::vector<Number> & soln,
146 std::vector<std::string> & var_names)
const
148 libmesh_deprecated();
150 #ifdef LIBMESH_USE_COMPLEX_NUMBERS
153 std::vector<Real> real_soln;
154 std::vector<Real> imag_soln;
176 std::vector<Number> & soln,
177 std::vector<std::string> & var_names)
const
179 libmesh_deprecated();
181 #ifdef LIBMESH_USE_COMPLEX_NUMBERS
184 std::vector<Real> real_soln;
185 std::vector<Real> imag_soln;
221 #ifndef LIBMESH_HAVE_XDR
226 libMesh::err <<
"WARNING: Compiled without XDR binary support.\n"
227 <<
"Will try ASCII instead" << std::endl << std::endl;
255 #ifndef LIBMESH_HAVE_XDR
258 libMesh::err <<
"WARNING: Compiled without XDR binary support.\n"
259 <<
"Will try ASCII instead" << std::endl << std::endl;
313 unsigned int n_blocks = 0;
320 std::vector<ElemType> etypes;
321 std::vector<unsigned int> neeb;
342 etypes.resize(n_blocks);
351 std::vector<int> conn;
377 conn.resize(totalWeight);
378 m.
Icon(&conn[0], 1, totalWeight);
383 conn.resize(totalWeight+(2*numElem));
384 m.
Icon(&conn[0], 1, totalWeight+(2*numElem));
389 conn.resize(totalWeight);
390 m.
Icon(&conn[0], 1, totalWeight);
396 libmesh_error_msg(
"Unrecognized flag " << m.
get_orig_flag());
401 std::vector<Real> coords(numNodes*3);
402 m.
coord(&coords[0], 3, numNodes);
411 for (
int innd=0; innd<numNodes; ++innd)
415 coords[2+innd*3]), innd);
449 std::map<unsigned int, Elem *> parents;
452 unsigned int lastConnIndex = 0;
453 unsigned int lastFaceIndex = 0;
456 unsigned int next_elem_id = 0;
458 for (
unsigned int level=0; level<=
n_levels; level++)
460 for (
unsigned int idx=0;
idx<n_blocks;
idx++)
462 for (
unsigned int e=lastFaceIndex; e<lastFaceIndex+neeb[level*n_blocks+
idx]; e++)
474 unsigned int self_ID = conn[lastConnIndex + temp_elem->n_nodes()];
476 #ifdef LIBMESH_ENABLE_AMR
477 unsigned int parent_ID = conn[lastConnIndex + temp_elem->n_nodes()+1];
485 START_LOG(
"log(n) search for parent",
"LegacyXdrIO::read_mesh");
486 std::map<unsigned int, Elem *>::iterator it = parents.find(parent_ID);
487 STOP_LOG(
"log(n) search for parent",
"LegacyXdrIO::read_mesh");
490 if (it == parents.end())
491 libmesh_error_msg(
"Parent element with ID " << parent_ID <<
" not found.");
494 my_parent = (*it).second;
500 elem =
Elem::build(etypes[idx],my_parent).release();
509 libmesh_assert_equal_to (my_parent->
type(), elem->
type());
514 #endif // #ifdef LIBMESH_ENABLE_AMR
524 START_LOG(
"insert elem into map",
"LegacyXdrIO::read_mesh");
525 parents[self_ID] = elem;
526 STOP_LOG(
"insert elem into map",
"LegacyXdrIO::read_mesh");
533 elem->
set_id(next_elem_id++);
550 for (
unsigned int innd=0; innd < elem->
n_nodes(); innd++)
557 lastFaceIndex += neeb[
idx];
566 unsigned int next_elem_id = 0;
567 for (std::map<unsigned int, Elem *>::iterator i =
569 i != parents.end(); ++i)
571 Elem * elem = i->second;
574 elem->
set_id(next_elem_id++);
582 libmesh_error_msg(
"Unexpected NULL elem encountered while reading libmesh XDR file.");
595 libmesh_error_msg(
"ERROR: MeshData not implemented for MGF-style mesh.");
598 for (
int ielm=0; ielm < numElem; ++ielm)
600 Elem * elem =
new Hex27;
607 for (
int innd=0; innd < 27; ++innd)
613 for (
unsigned char i=0; i!=4; ++i)
619 libmesh_error_msg(
"Cannot open dimension " \
621 <<
" mesh file when configured without " \
646 std::vector<int> bcs(numBCs*3);
649 m.
BC(&bcs[0], numBCs);
652 for (
int ibc=0; ibc < numBCs; ibc++)
654 (cast_int<dof_id_type>(bcs[0+ibc*3]),
655 cast_int<unsigned short>(bcs[1+ibc*3]),
656 cast_int<boundary_id_type>(bcs[2+ibc*3]));
700 std::vector<unsigned int> neeb;
701 std::vector<ElemType> etypes;
704 int n_non_subactive = 0;
705 int non_subactive_weight = 0;
710 std::map<dof_id_type, dof_id_type> node_map;
717 std::set<dof_id_type> not_subactive_node_ids;
720 for( ; el != end_el; ++el)
722 const Elem * elem = (*el);
726 non_subactive_weight += elem->
n_nodes();
728 for (
unsigned int n=0; n<elem->
n_nodes(); ++n)
729 not_subactive_node_ids.insert(elem->
node(n));
735 std::set<dof_id_type>::iterator it = not_subactive_node_ids.begin();
736 const std::set<dof_id_type>::iterator
end = not_subactive_node_ids.end();
738 for (; it!=
end; ++it)
739 node_map[*it] = cnt++;
743 const int numElem = n_non_subactive;
751 neeb.resize((n_levels+1)*etypes.size());
754 const unsigned int n_el_types =
755 cast_int<unsigned int>(etypes.size());
763 for(
unsigned int level=0; level<=
n_levels; level++)
764 for (
unsigned int el_type=0; el_type<n_el_types; el_type++)
765 neeb[level*n_el_types + el_type] =
785 libmesh_assert_equal_to (etypes.size(), 1);
801 totalWeight = non_subactive_weight+2*numElem;
804 libmesh_error_msg(
"Unrecognized flag " << m.
get_orig_flag());
810 mh.
setId(
"Id String");
820 std::vector<int> conn;
824 conn.resize(totalWeight);
826 unsigned int lastConnIndex = 0;
830 for (
unsigned int level=0; level<=
n_levels; level++)
831 for (
unsigned int idx=0;
idx<etypes.size();
idx++)
833 nn = lastConnIndex = 0;
835 for (
unsigned int e=0; e<mesh.
n_elem(); e++)
849 conn[lastConnIndex + 0] = 27;
850 conn[lastConnIndex + 1] = 0;
857 libmesh_error_msg(
"Unrecognized orig_type = " << orig_type);
860 START_LOG(
"set connectivity",
"LegacyXdrIO::write_mesh");
862 for (
unsigned int n=nstart; n<loopmax; n++)
864 unsigned int connectivity_value=0;
868 connectivity_value = mesh.
elem(e)->
node(n-nstart);
874 std::map<dof_id_type, dof_id_type>::iterator pos =
875 node_map.find(mesh.
elem(e)->
node(n-nstart));
879 connectivity_value = (*pos).second;
881 conn[lastConnIndex + n] = connectivity_value;
883 STOP_LOG(
"set connectivity",
"LegacyXdrIO::write_mesh");
888 int self_ID = mesh.
elem(e)->
id();
895 conn[lastConnIndex+nn-2] = self_ID;
896 conn[lastConnIndex+nn-1] = parent_ID;
905 m.
Icon(&conn[0], nn, lastConnIndex/nn);
912 std::vector<Real> coords;
914 coords.resize(3*node_map.size());
917 std::map<dof_id_type,dof_id_type>::iterator it = node_map.begin();
918 const std::map<dof_id_type,dof_id_type>::iterator
end = node_map.end();
919 for (; it !=
end; ++it)
921 const Point & p = mesh.
node((*it).first);
923 coords[lastIndex+0] = p(0);
924 coords[lastIndex+1] = p(1);
925 coords[lastIndex+2] = p(2);
930 m.
coord(&coords[0], 3, cast_int<int>(node_map.size()));
940 std::vector<int> bcs(numBCs*3);
945 std::vector<dof_id_type> elem_list;
946 std::vector<unsigned short int> side_list;
947 std::vector<boundary_id_type> elem_id_list;
951 for (
int ibc=0; ibc<numBCs; ibc++)
953 bcs[0+ibc*3] = elem_list[ibc];
954 bcs[1+ibc*3] = side_list[ibc];
955 bcs[2+ibc*3] = elem_id_list[ibc];
959 m.
BC(&bcs[0], numBCs);
966 std::vector<Real> & soln,
967 std::vector<std::string> & var_names)
const
991 const char * varNames;
1007 var_names.resize(numVar);
1009 const char * p = varNames;
1011 for (
int i=0; i<numVar; i++)
1014 p += std::strlen(p) + 1;
1019 soln.resize(numVar*numNodes);
1021 s.
values(&soln[0], numNodes);
1027 std::vector<Real> & soln,
1028 std::vector<std::string> & var_names)
const
1049 sh.
setWrtVar(cast_int<int>(var_names.size()));
1050 sh.
setNumVar(cast_int<int>(var_names.size()));
1057 sh.
setId(
"Id String");
1063 std::string var_title;
1065 for (
unsigned int var=0; var<var_names.size(); var++)
1067 for (
unsigned int c=0; c<var_names[var].size(); c++)
1068 var_title += var_names[var][c];
1073 sh.
setVarTitle(var_title.c_str(), cast_int<int>(var_title.size()));
1080 libmesh_assert_equal_to (soln.size(), var_names.size()*mesh.
n_nodes());
int Icon(int *array, int numvar, int num)
unsigned int get_num_levels()
std::string name(const ElemQuality q)
const BoundaryInfo & get_boundary_info() const
virtual void reserve_nodes(const dof_id_type nn)=0
void get_num_elem_each_block(std::vector< unsigned int > &neeb) const
virtual Node *& set_node(const unsigned int i)
void setNumVar(int numvar)
virtual bool is_serial() const
void setNumNodes(int numNodes)
static UniquePtr< Elem > build(const ElemType type, Elem *p=libmesh_nullptr)
void read_binary(const std::string &, const LegacyXdrIO::FileFormat=LegacyXdrIO::LIBM)
const char * getVarTitle() const
libmesh_assert(remote_elem)
STOP_LOG("std::sqrt()","ExactErrorEstimator")
void set_orig_flag(LegacyXdrIO::FileFormat in_orig_flag)
void set_num_elem_each_block(const std::vector< unsigned int > &neeb)
void write_mgf(const std::string &)
std::string complex_filename(const std::string &basename, unsigned int r_o_c=0)
void init(XdrIO_TYPE type, const char *fn, int icnt)
void write_ascii(const std::string &, const LegacyXdrIO::FileFormat=LegacyXdrIO::LIBM)
void get_block_elt_types(std::vector< ElemType > &bet) const
virtual const Node & node(const dof_id_type i) const =0
void setSumWghts(int sumWghts)
const Elem * parent() const
LegacyXdrIO(MeshBase &, const bool=false)
void add_child(Elem *elem)
const class libmesh_nullptr_t libmesh_nullptr
void set_refinement_flag(const RefinementState rflag)
std::size_t n_boundary_conds() const
void set_n_blocks(const unsigned int nb)
void add_foreign_node_id(const Node *node, const unsigned int foreign_node_id)
void build_side_list(std::vector< dof_id_type > &element_id_list, std::vector< unsigned short int > &side_list, std::vector< boundary_id_type > &bc_id_list) const
unsigned int get_n_blocks() const
virtual Node * add_point(const Point &p, const dof_id_type id=DofObject::invalid_id, const processor_id_type proc_id=DofObject::invalid_processor_id)=0
void setUserTitle(const char *title)
std::unique_ptr< T > UniquePtr
void write_binary(const std::string &, const LegacyXdrIO::FileFormat=LegacyXdrIO::LIBM)
virtual element_iterator elements_begin()=0
virtual unsigned int dim() const =0
virtual unsigned int n_nodes() const =0
virtual void write(const std::string &) libmesh_override
virtual Elem * add_elem(Elem *e)=0
virtual element_iterator elements_end()=0
void setStrSize(int strSize)
virtual const Elem * elem(const dof_id_type i) const =0
virtual void read(const std::string &) libmesh_override
void set_block_elt_types(const std::vector< ElemType > &bet)
void prepare_complex_data(const std::vector< Complex > &source, std::vector< Real > &real_part, std::vector< Real > &imag_part)
OStreamProxy err(std::cerr)
void set_mesh_dimension(unsigned char d)
void read_ascii(const std::string &, const LegacyXdrIO::FileFormat=LegacyXdrIO::LIBM)
dof_id_type node(const unsigned int i) const
void setId(const char *id)
libmesh_parallel_only(this->comm())
void read_soln(const std::string &, std::vector< Real > &, std::vector< std::string > &) const
void init(XdrIO_TYPE type, const char *fn, int icnt, int dim=3)
void write_mesh(const std::string &, const LegacyXdrIO::FileFormat=LegacyXdrIO::LIBM)
void setNumBCs(int numBCs)
void read_mesh(const std::string &, const LegacyXdrIO::FileFormat=LegacyXdrIO::LIBM, MeshData *=libmesh_nullptr)
const Parallel::Communicator & comm() const
unsigned int mesh_dimension() const
void add_side(const dof_id_type elem, const unsigned short int side, const boundary_id_type id)
void setMeshCnt(int meshCnt)
void close_foreign_id_maps()
unsigned int level() const
void read_mgf(const std::string &)
int BC(int *array, int size)
void add_foreign_elem_id(const Elem *elem, const unsigned int foreign_elem_id)
void write_mgf_soln(const std::string &name, std::vector< Number > &soln, std::vector< std::string > &var_names) const
void setWrtVar(int wrtVar)
void setTitle(const char *title)
void setVarTitle(const char *titles, int len)
void set_num_levels(unsigned int num_levels)
virtual dof_id_type n_elem() const =0
virtual const Node * node_ptr(const dof_id_type i) const =0
LegacyXdrIO::FileFormat get_orig_flag() const
virtual ElemType type() const =0
processor_id_type processor_id()
virtual void reserve_elem(const dof_id_type ne)=0
void read_mgf_soln(const std::string &name, std::vector< Number > &soln, std::vector< std::string > &var_names) const
virtual dof_id_type n_nodes() const =0
int values(Real *array, int size)
int coord(Real *array, int dim, int size)
START_LOG("std::sqrt()","ExactErrorEstimator")
void write_soln(const std::string &name, std::vector< Real > &soln, std::vector< std::string > &) const