#define PI 3.141592653589793238462643383
#define eo 8.85418781762e-12
#define AXISYMMETRIC 1
#define PLANAR 0
#include "complex.h"
class CNode
{
	public:
		
		double x,y;
		int bc;
		int InConductor;

	private:

};

class CElement
{
	public:

		int p[3];		// nodes at the corners of the element
		int e[3];		// boundary condition applied to each edge of the element
		int blk;		// block property applied to the element
		int lbl;		// block label associated with the element

	private:
};

class CBlockLabel
{
	public:

		double x,y;
		double MaxArea;
		int BlockType,InGroup;
		BOOL IsExternal;
		BOOL IsDefault;

	private:

};

class CCommonPoint
{
	public:
		int x,y,t;

	private:
};

/////////////////////////////////////////////////////////////////////////////
// Classes that hold property data:  CMaterialProp, CBoundaryProp, CPointProp

class CMaterialProp
{
	public:

		double Kx,Ky;		// Thermal conductivity for linear (possibly anisotropic) problems
		double Kt;			// Volumetric Heat Capacity, MJ/(m^3*K)
		double qv;			// charge density, C/m^3
		int npts;
		CComplex Kn[128];	// Thermal conductivity as a function of temperature

		CComplex GetK(double T);		// evaluate the T-k curve

	private:
};

class CBoundaryProp
{
	public:
	
		int BdryFormat;			// type of boundary condition we are applying
								// 0 = fixed voltage
								// 1 = mixed BC
								// 2 = surface charge
								// 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:

		double V;			// fixed nodal voltage 
		double qp;		// point current density;

	private:
};

class CCircuit
{
	public:

		double V,q;
		int CircType;

	private:
};
