/* $Id: problem3.h,v 1.1.1.1 1996/10/02 10:35:53 roitzsch Exp $ */

#ifndef PROBLEM3_H
#define PROBLEM3_H

#include "problemstat.h"
#include "problemtr.h"

class MESH;
class MESH3;

//-------------------------------------------------------------------------

Problem* createProblem3(char* inFile, int spaceDim);

//-------------------------------------------------------------------------


class StaticHeatConduction3 : public StaticHeatConduction
{
  protected:

    MESH3* mesh;
    StaticHeatConduction3();

  public:

    StaticHeatConduction3(char* fileName);
    virtual ~StaticHeatConduction3();

    virtual MESH* Mesh() const;

    virtual void newMesh();
    virtual void newInterface();
    virtual void newErrorEstimator();
};
//-------------------------------------------------------------------------


class QuadStaticHeatConduction3 : public StaticHeatConduction3
{
  public:

    QuadStaticHeatConduction3(char* fileName);

    virtual void newInterface();
    virtual void newErrorEstimator();
};
//-------------------------------------------------------------------------


class TransientHeatConduction3 : public TransientHeatConduction
{
  protected:

    MESH3* mesh, *prevMesh;

  public:

    TransientHeatConduction3(char* fileName);
    virtual ~TransientHeatConduction3();

    virtual MESH* Mesh() const;
    virtual MESH* PrevMesh() const;

    virtual void shiftMesh();

    virtual void newMesh();
    virtual void newInterface();
    virtual void newErrorEstimator();
};
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------


// --  	      test example for multi-component field (MC)


class MCStaticHeatConduction3 : public StaticHeatConduction3
{
  protected:

    MCStaticHeatConduction3() { }   

  public:

    MCStaticHeatConduction3(char* fileName);
    virtual ~MCStaticHeatConduction3() { }

    virtual void newInterface();
    virtual void newErrorEstimator();
};

#endif
