193 lines
3.4 KiB
C++
193 lines
3.4 KiB
C++
namespace hdrawdata
|
|
{
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNode -- structure that holds information about each control point.
|
|
|
|
class CNode
|
|
{
|
|
public:
|
|
CNode();
|
|
|
|
double x,y;
|
|
int xs,ys;
|
|
BOOL IsSelected;
|
|
CString BoundaryMarker;
|
|
CString InConductor;
|
|
int InGroup;
|
|
|
|
double GetDistance(double xo, double yo);
|
|
CComplex CC();
|
|
void ToggleSelect();
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSegment -- structure that holds information about lines joining control pts
|
|
|
|
class CSegment
|
|
{
|
|
public:
|
|
CSegment();
|
|
|
|
int n0,n1;
|
|
BOOL IsSelected;
|
|
BOOL Hidden;
|
|
double MaxSideLength;
|
|
CString BoundaryMarker;
|
|
CString InConductor;
|
|
int InGroup;
|
|
|
|
void ToggleSelect();
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
class CArcSegment
|
|
{
|
|
public:
|
|
CArcSegment();
|
|
|
|
int n0,n1;
|
|
BOOL NormalDirection;
|
|
BOOL IsSelected;
|
|
BOOL Hidden;
|
|
double MaxSideLength,ArcLength,mySideLength;
|
|
CString BoundaryMarker;
|
|
CString InConductor;
|
|
int InGroup;
|
|
|
|
void ToggleSelect();
|
|
|
|
private:
|
|
|
|
};
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CBlockLabel -- structure that holds block label information
|
|
|
|
class CBlockLabel
|
|
{
|
|
public:
|
|
CBlockLabel();
|
|
|
|
double x,y;
|
|
double MaxArea;
|
|
BOOL IsSelected;
|
|
CString BlockType;
|
|
int InGroup;
|
|
BOOL IsExternal;
|
|
BOOL IsDefault;
|
|
|
|
void ToggleSelect();
|
|
double GetDistance(double xo, double yo);
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
class CMaterialProp
|
|
{
|
|
public:
|
|
|
|
CMaterialProp();
|
|
~CMaterialProp();
|
|
|
|
CString BlockName;
|
|
double Kx,Ky; // thermal conductivity for linear (possibly anisotropic) regions
|
|
double Kt; // volumetric heat capacity
|
|
double qv; // and volume heat generation
|
|
|
|
// properties for nonlinear conductivity
|
|
int npts; // number of points in the nonlinear conductivity curve
|
|
CComplex Kn[128]; // here, I'm being _very_ lazy by defining a fixed-length buffer for the
|
|
// thermal conductivity data points.
|
|
|
|
private:
|
|
};
|
|
|
|
class CBoundaryProp
|
|
{
|
|
public:
|
|
|
|
CBoundaryProp();
|
|
|
|
CString BdryName;
|
|
int BdryFormat; // type of boundary condition we are applying
|
|
// 0 = Fixed Voltage
|
|
// 1 = Mixed BC
|
|
// 2 = Surface Charge Density
|
|
// 3 = Periodic
|
|
// 4 = Antiperiodic
|
|
|
|
double Tset; // Fixed value of temperature for BdryFormat=0;
|
|
double Tinf; // External temperature for convection or radiation
|
|
double qs; // Heat flux;
|
|
double beta; // radiosity coefficient
|
|
double h; // Heat transfer coefficient
|
|
|
|
private:
|
|
};
|
|
|
|
class CPointProp
|
|
{
|
|
public:
|
|
|
|
CPointProp();
|
|
|
|
CString PointName;
|
|
double T; // prescribed nodal temperature
|
|
double qp; // point heat generation
|
|
|
|
private:
|
|
};
|
|
|
|
class CCircuit
|
|
{
|
|
public:
|
|
|
|
CCircuit();
|
|
|
|
CString CircName;
|
|
double T;
|
|
double q;
|
|
int CircType;
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
class CPeriodicBoundary
|
|
{
|
|
public:
|
|
|
|
CPeriodicBoundary();
|
|
|
|
CString BdryName;
|
|
int BdryFormat; // 0 = Periodic
|
|
// 1 = Antiperiodic
|
|
int nseg; // number of segs with this bc
|
|
int narc; // number of arcs with this bc
|
|
int seg[2]; // (arc)segments to which is applied
|
|
|
|
private:
|
|
};
|
|
|
|
class CCommonPoint
|
|
{
|
|
public:
|
|
|
|
CCommonPoint();
|
|
void Order();
|
|
|
|
int x,y,t;
|
|
|
|
private:
|
|
};
|
|
|
|
}
|
|
|
|
using namespace hdrawdata;
|