#ifndef pdemr_DECL_H
#define pdemr_DECL_H

#define MAXSWAPBUF 1

// --- TYPES --- //

#include "dpcm.h"

// rangetype : RangeOne

// rangetype : RangeNP

// rangetype : Range2D

// datatype : Int

// datatype : Config

// datatype : File

// datatype : Vector2Dreal

typedef Partition<RangeOne> PartOne;

typedef Partition<RangeNP> PartNP;

typedef Swap<RangeOne> SwapOne;

typedef Swap<RangeNP> SwapNP;

typedef Partition<Range2D> PartRange2D;

typedef MPartition<Range2D> MPartRange2D;

typedef Swap<Range2D> SwapRange2D;


// --- FUNCTIONS --- //

void ftcs_step (Config &cfg, Vector2Dreal &A, Range2D &halo, Range2D &cell, 
                Vector2Dreal &B);

void matrix_read (Config &cfg, Range2D &cell, Range2D &halo, 
                  Vector2Dreal &A, Vector2Dreal &B);

void check_sym (Vector2Dreal &A, Range2D &ra);

void econd (Config &cfg, Int &idx, 
            Int &cond);

void foo (
          Env &env);


#endif // pdemr_DECL_H

