00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef POSTPROCESSVTKEXPORT_H
00013 #define POSTPROCESSVTKEXPORT_H
00014
00015 #include <math.h>
00016 #include <vector>
00017 #include "vtkexport.h"
00018 #include "tetmesh/point.h"
00019 #include "tetmesh/tetmesh.h"
00020 #include "tetmesh/tet.h"
00021 #include "tetmesh/vector3.h"
00022 #include "Epetra_Operator.h"
00023 #include "Epetra_MultiVector.h"
00024 #include "Epetra_SerialDenseVector.h"
00025 #include "Epetra_Vector.h"
00026 #include "nedelecmesh.h"
00027
00028
00029 namespace postprocess {
00030
00035 class VtkExport {
00036
00037 public:
00043 VtkExport(const NedelecMesh& nedelec_mesh,
00044 const Epetra_SerialDenseVector& lambda,
00045 const Epetra_MultiVector& Q);
00046
00048 void export_mesh(string file);
00049
00053 void export_eigenfields(std::string file);
00059 void export_eigenfields2(std::string file, int nof_cells);
00060
00062 void export_a_to_b(std::string file, mesh::Vector3 a, mesh::Vector3 b, int nof_intervals);
00063
00065 void integrate_a_to_b(int mode_id, mesh::Vector3 a, mesh::Vector3 b, double& int_e);
00066
00068 int get_nof_vectors() const
00069 { return Q_.NumVectors(); }
00070
00072 int get_nof_dofs() const
00073 { return Q_.GlobalLength(); }
00074
00078 void get_eigenpair(int k, double* lambda, colarray::Vector<double>* q);
00079
00080 private:
00081
00089 void getdimensions(int N, mesh::Vector3& box_len, int dim[3]);
00090
00092 const NedelecMesh& nedelec_mesh_;
00094 const Epetra_SerialDenseVector lambda_;
00097 const Epetra_MultiVector Q_;
00099 const Epetra_Comm& comm_;
00101 int precision_;
00102 };
00103
00104 };
00105
00106 #endif