/////////////////////////////////////////////////////////////////////////////
// Class of nodes
class CNode:public CObject
{
public:
	CNode (float x,float y);
	
protected:
	CNode();
  	DECLARE_SERIAL (CNode);
	
public:
  	BOOL operator ==(const CNode& other) const;
  	void Coord (float& x,float& y);
public:
	float xb,yb;
public:
	virtual void Serialize (CArchive& ar);  	
};
////////////////////////////////////////////////////////////////////////////
//  Class of elements
class CElement:public CObject
{
public:
	CElement (int u1,int u2);
protected:
	CElement();
  	DECLARE_SERIAL (CElement);
public:						
  	BOOL operator ==(const CElement& other) const;
public:
	int nod1,nod2,type;
	float pot,der,tim,level,kf0,dist;    
public:
	virtual void Serialize (CArchive& ar);  	
};	    

///////////////////////////////////////////////////////////	  	
// Class of wells
class CWell:public CObject
{
public:
  CWell (CString s,float x,float y,float *gc,float dis,float d);

protected:
  	CWell ();
  	DECLARE_SERIAL (CWell);
  
public:
  	int xi,yi;
  	float xz,yz,yield,diam,drwdown;
  	CString name;
  	BOOL operator ==(const CWell& other) const;
public:
	virtual void Serialize (CArchive& ar);  	
};
	  	    
///////////////////////////////////////////////////////////	  	
// Class of internal points
class CIntPoint:public CObject
{
public:
  CIntPoint (float x,float y,float *gc);

protected:
  	CIntPoint ();
  	DECLARE_SERIAL (CIntPoint);
  
public:
  	int xi,yi;
  	float xz,yz,drwdown,vx,vy;
  	BOOL operator ==(const CIntPoint& other) const;
public:
	virtual void Serialize (CArchive& ar);  	
};
	  	    
///////////////////////////////////////////////////////////	  	
// Class of internal elements
class CIntElem:public CObject
{
public:
  CIntElem (float *x,float *y,float prec);

protected:
  	CIntElem ();
  	DECLARE_SERIAL (CIntElem);
  
public:                     
	float xp[3],yp[3],precip;
	int nodes[3];
public:
	virtual void Serialize (CArchive& ar);  	
};
