#ifndef PDE_H
#define PDE_H
#include "taux.h"

#include "ArrayND.h"
struct Range2D;
typedef Array2D<double> Vector2Dreal;
typedef int Int;
struct Config;
typedef FILE* File;
struct Env;

#include "pde_decl.h"

struct Config 
{
  int noloop;
  int size;
  int nopx, nopy, tlx, tly;
  double delt, delx, dely, D;
  int clk;
};

struct Env 
{
  PreEnv pre;

  Config cfg;
  File fout;

  PartRange2D cell, halo, halom, fullone;
  MPartRange2D boundary;
  SwapRange2D sw_chm, sw_ca;
};

enum { CK_UPD=CK_OFF, CK_BRD, CK_SUB, CK_LOOP, ECLK };
const int CK_USR_OFF = CK_LAST+1;
#define MAXMSGBUF 8000

void top(Env &env);

#endif // PDE_H

