FEMM/fkn/femmedoccore.h

93 lines
2.1 KiB
C++

// femmeDoc.h : interface of the CFemmeDoc class
//
/////////////////////////////////////////////////////////////////////////////
#define muo 1.2566370614359173e-6
#define Golden 0.3819660112501051517954131656
class CFemmeDocCore
{
// Attributes
public:
CFemmeDocCore();
~CFemmeDocCore();
// General problem attributes
double Frequency;
double Precision;
double Relax;
int LengthUnits;
int ACSolver;
BOOL ProblemType;
BOOL Coords;
CString PrevSoln;
int PrevType;
// Vector containing previous solution for incremental permeability analysis
double *Aprev;
// axisymmetric external region parameters
double extRo,extRi,extZo;
CFknDlg *TheView;
// CArrays containing the mesh information
int BandWidth;
CNode *meshnode;
CElement *meshele;
int NumNodes;
int NumEls;
// lists of properties
int NumBlockProps;
int NumPBCs;
int NumLineProps;
int NumPointProps;
int NumCircProps;
int NumBlockLabels;
int NumCircPropsOrig;
int NumAGEs;
CMaterialProp *blockproplist;
CBoundaryProp *lineproplist;
CPointProp *nodeproplist;
CCircuit *circproplist;
CBlockLabel *labellist;
CCommonPoint *pbclist;
CAirGapElement *agelist;
// stuff usually kept track of by CDocument
char *PathName;
// Operations
public:
BOOL LoadPrev();
BOOL LoadPrevA(CString myFile, double *V);
BOOL LoadMesh();
BOOL OnOpenDocument();
BOOL Cuthill();
BOOL SortElements();
BOOL Static2D(CBigLinProb &L);
BOOL WriteStatic2D(CBigLinProb &L);
BOOL Harmonic2D(CBigComplexLinProb &L);
BOOL WriteHarmonic2D(CBigComplexLinProb &L);
BOOL StaticAxisymmetric(CBigLinProb &L);
BOOL HarmonicAxisymmetric(CBigComplexLinProb &L);
void GetPrevAxiB(int k, double &B1p, double &B2p);
void GetPrev2DB(int k, double &B1p, double &B2p);
void GetFillFactor(int lbl);
double ElmArea(int i);
void CleanUp();
};
/////////////////////////////////////////////////////////////////////////////
double GetNewMu(double mu,int BHpoints, CComplex *BHdata,double muc,double B);
double Power(double x, int n);