#ifndef __TRAJ_H__
#define __TRAJ_H__
#include "reaxc_types.h"
#define MAX_TRJ_LINE_LEN 120
#define MAX_TRJ_BUFFER_SIZE (MAX_TRJ_LINE_LEN * 100)
#define NUM_HEADER_LINES 37
#define HEADER_LINE_LEN 62
#define STR_LINE "%-37s%-24s\n"
#define INT_LINE "%-37s%-24d\n"
#define BIGINT_LINE "%-37s%-24ld\n"
#define INT2_LINE "%-36s%-12d,%-12d\n"
#define REAL_LINE "%-37s%-24.3f\n"
#define SCI_LINE "%-37s%-24g\n"
#define REAL3_LINE "%-32s%9.3f,%9.3f,%9.3f\n"
#if defined(LAMMPS_BIGBIG)
#define INIT_DESC "%9ld%3d%9s%10.3f\n"
#else
#define INIT_DESC "%9d%3d%9s%10.3f\n"
#endif
#define INIT_DESC_LEN 32
#define SIZE_INFO_LINE2 "%-10d%-10d\n"
#define SIZE_INFO_LEN2 21
#define SIZE_INFO_LINE3 "%-10d%-10d%-10d\n"
#define SIZE_INFO_LEN3 31
#if defined(LAMMPS_BIGBIG)
#define ATOM_BASIC "%9ld%10.3f%10.3f%10.3f%10.3f\n"
#define ATOM_wV "%9ld%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#define ATOM_wF "%9ld%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#define ATOM_FULL "%9ld%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#else
#define ATOM_BASIC "%9d%10.3f%10.3f%10.3f%10.3f\n"
#define ATOM_wV "%9d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#define ATOM_wF "%9d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#define ATOM_FULL "%9d%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#endif
#define ATOM_BASIC_LEN 50
#define ATOM_wV_LEN 80
#define ATOM_wF_LEN 80
#define ATOM_FULL_LEN 110
#if defined(LAMMPS_BIGBIG)
#define BOND_BASIC "%9ld%9ld%10.3f%10.3f\n"
#define BOND_FULL "%9ld%9ld%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#define ANGLE_BASIC "%9ld%9ld%9ld%10.3f\n"
#else
#define BOND_BASIC "%9d%9d%10.3f%10.3f\n"
#define BOND_FULL "%9d%9d%10.3f%10.3f%10.3f%10.3f%10.3f\n"
#define ANGLE_BASIC "%9d%9d%9d%10.3f\n"
#endif
#define BOND_BASIC_LEN 39
#define BOND_FULL_LEN 69
#define ANGLE_BASIC_LEN 38
enum ATOM_LINE_OPTS { OPT_NOATOM = 0, OPT_ATOM_BASIC = 4, OPT_ATOM_wF = 5, OPT_ATOM_wV = 6, OPT_ATOM_FULL = 7, NR_OPT_ATOM = 8 };
enum BOND_LINE_OPTS { OPT_NOBOND, OPT_BOND_BASIC, OPT_BOND_FULL, NR_OPT_BOND };
enum ANGLE_LINE_OPTS { OPT_NOANGLE, OPT_ANGLE_BASIC, NR_OPT_ANGLE };
int Init_Traj( reax_system*, control_params*, output_controls*,
mpi_datatypes*, char* );
int End_Traj( int, output_controls* );
int Append_Frame( reax_system*, control_params*, simulation_data*,
reax_list**, output_controls*, mpi_datatypes* );
#endif