XIAN-FEM-2026June/3D opticsfem-master/function/BF.h

47 lines
1.2 KiB
C++

#pragma once
#include"../common/define.h"
#include"../common/util.h"
#include"../Eigen/Dense"
#define BF_INPUT int order, int numBF, double u, double v, double w, Eigen::Vector3d& o
void BF_Line_Lagrange(BF_INPUT);
void BF_Line_Grad_Lagrange(BF_INPUT);
void BF_Line_Curl_Lagrange(BF_INPUT);
void BF_Triangle_Lagrange(BF_INPUT);
void BF_Triangle_Grad_Lagrange(BF_INPUT);
void BF_Triangle_Curl_Lagrange(BF_INPUT);
void BF_Triangle_Nedelec(BF_INPUT);
void BF_Triangle_Curl_Nedelec(BF_INPUT);
void BF_Quadrangle_Lagrange(BF_INPUT);
void BF_Quadrangle_Grad_Lagrange(BF_INPUT);
void BF_Quadrangle_Curl_Lagrange(BF_INPUT);
void BF_Quadrangle_Nedelec(BF_INPUT);
void BF_Quadrangle_Curl_Nedelec(BF_INPUT);
void BF_Tetrahedron_Nedelec(BF_INPUT);
void BF_Tetrahedron_Curl_Nedelec(BF_INPUT);
void BF_Prism_Nedelec(BF_INPUT);
void BF_Prism_Curl_Nedelec(BF_INPUT);
class BF
{
public:
int GetNbrBF(int dim, int type, int typeBF, int order);
int GetNbrBF();
void GetValueBF(int numBF, double u, double v, double w, Eigen::Vector3d& o);
private:
int _mNbrBF = 0; //number of basis function
int _mDim = 0; //geo dimension
int _mGeoType = 0; //line tri quad tetrahedron prism
int _mBFType = 0; //original grad curl
int _mOrder = 1; //order of basis function
};