Program Listing for File basis3D.hpp

Return to documentation for file (src_qcm/basis3D.hpp)

#ifndef basis3D_h
#define basis3D_h

#include <iostream>

#include "vector3D.hpp"


struct basis3D
{
    vector<vector3D<double>> e;
    matrix<double> M;
    double vol;

    basis3D(){e.reserve(3);}
  basis3D(vector<double> _e);

    void trivial(){
        e.push_back(vector3D<double>(1.0,0.0,0.0));
        e.push_back(vector3D<double>(0.0,1.0,0.0));
        e.push_back(vector3D<double>(0.0,0.0,1.0));
        init();
    }
    void init();
    void inverse();
    vector3D<double> to(const vector3D<double>& v);
    vector3D<double> from(const vector3D<double>& v);
    void dual(basis3D &D);


    friend std::istream & operator>>(std::istream &flux, basis3D &x);
    friend std::ostream & operator<<(std::ostream &flux, basis3D &x);
};

#endif