/* femelmer.h */
/* Routines for input, output and manipulation of Funcs and ElmerPost
   formats (programs created by Juha Ruokolainen at CSC). */ 
#define PARTMETIS 1

int LoadSolutionElmer(struct FemType *data,int results,char *prefix,int info);
int LoadElmerInput(struct FemType *data,struct BoundaryType *bound,
		   char *prefix,int info);
int FuseSolutionElmerPartitioned(char *prefix,char *outfile,int decimals,
				 int minstep, int maxstep, int dstep, int info);
int SaveSolutionElmer(struct FemType *data,struct BoundaryType *bound,
		      int nobound,char *prefix,int decimals,int info);
int SaveSolutionElmerTriangles(struct FemType *data,char *prefix,int info);
int SaveElmerInput(struct FemType *data,struct BoundaryType *bound,
		   char *prefix,int decimals, int info);
int SaveElmerInputFemBem(struct FemType *data,struct BoundaryType *bound,
			 char *prefix,int decimals, int info);
int ElmerToElmerMapQuick(struct FemType *data1,struct FemType *data2,
			 char *mapfile,int info);
int ElmerToElmerMap(struct FemType *data1,struct FemType *data2,int info);
int PartitionSimpleElements(struct FemType *data,int dimpart[],int dimper[],
			    int partorder, Real corder[],int info);
int PartitionSimpleNodes(struct FemType *data,int dimpart[],int dimper[],
			 int partorder, Real corder[],int info);
#if PARTMETIS
int PartitionMetisElements(struct FemType *data,int partitions,int dual,int info);
int PartitionMetisNodes(struct FemType *data,int partitions,int metisopt,int info);
int ReorderElementsMetis(struct FemType *data,int info);
#endif
int OptimizePartitioning(struct FemType *data,struct BoundaryType *bound,int noopt,int info);
int SaveElmerInputPartitioned(struct FemType *data,struct BoundaryType *bound,
			      char *prefix,int decimals,int halo,int indirect,
			      int info);

