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

#ifndef PROBLEM1_H
#define PROBLEM1_H

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

class MESH;
class MESH1;

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


class StaticHeatConduction1 : public StaticHeatConduction
{
  protected:

    MESH1* mesh;
    StaticHeatConduction1() : mesh(0) { }   

  public:

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

    virtual MESH* Mesh() const;

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


class QuadStaticHeatConduction1 : public StaticHeatConduction1
{
  public:

    QuadStaticHeatConduction1(char* fileName);

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


class TransientHeatConduction1 : public TransientHeatConduction
{
  protected:

    MESH1* mesh, *prevMesh;

    TransientHeatConduction1() : mesh(0), prevMesh(0)  { }

  public:

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

    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 MCStaticHeatConduction1 : public StaticHeatConduction1
{
  protected:

    MCStaticHeatConduction1() { }   

  public:

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

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


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

class MCTransientHeatConduction1 : public TransientHeatConduction1
{
  protected:

    MCTransientHeatConduction1() { }

  public:

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

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

#endif
