#include <stdio.h>
#include "mesh_struct.h"
#include "mesh_func.h"
#include "mesh_utils.h"


int main(int argc, char **argv) 
{
	char filename[128] = "./pre_breast.msh";
	char fileMesh[128] = "./pre_mesh.txt";
	//char fileMesh[128] = "../mesh_suture.txt";
	char filePosition[128] = "./pre_pos.txt";
	char fileDOF[128] = "./pre_dof.txt";
	char fileVol[128] = "./pre_volume.txt";

	Mesh *breastMesh = loadFile_msh(filename);
	Position *breastPos = (Position*)malloc(sizeof(Position));
	DOF *breastDOF = (DOF*)malloc(sizeof(DOF));
	initMesh(breastMesh);
	initPosition(breastMesh, breastPos);
	initDOF(breastMesh, breastDOF);
	initEnergy(breastMesh);
	SParams *breastParams = initParams();
	AuxArch *breastAux = initAuxiliarStructs(breastDOF);

	//evaluate breast volume - no gravity
	int ncells = breastMesh->cells->size;
	double total_volume = 0.0;
	for(int i = 0; i < ncells; i++)
	{
		total_volume += breastMesh->cells->volume[i];
	}
	printf("\nBreast Volume: %f\n", total_volume*1000000.0);

	std::ofstream _of(fileVol);
	_of << std::fixed;
	if (_of.is_open())
	{
		_of << total_volume*1000000.0;
	}
	else
	{
		printf("\nError opening dof file txt\n");
	}
	_of.close();

	printf("Writing txt files\n");
	writeMesh_txt(fileMesh, breastMesh);
	writePosition_txt(filePosition, breastPos);
	writeDOF_txt(fileDOF, breastDOF);

	printf("Writing finished\n");
	cleanAll(breastMesh, breastPos, breastDOF, breastParams, breastAux);
	return 0;
}
