u8 brand; /* brand id */
int tag; /* atom unique id (number of atom) */
u8 attr; /* attributes */
+ int pbc[3]; /* pb crossing in x, y and z direction */
} t_atom;
#define ATOM_ATTR_FP 0x01 /* fixed position (bulk material) */
double t_sum; /* sum over all t */
double t_avg; /* average value of t */
+ /* for sale! */
t_virial gvir; /* global virial (absolute coordinates) */
- double gv;
- double gv_sum;
- double gv_avg;
-
- double gp; /* pressure computed from global virial */
- double gp_sum; /* sum over all gp */
- double gp_avg; /* average value of gp */
+ //double gv;
+ //double gv_sum;
+ //double gv_avg;
+ double sale1;
+ double sale2;
+ double sale3;
+
+ // gp stuff exchanged by kinetic energies
+ //double gp; /* pressure computed from global virial */
+ //double gp_sum; /* sum over all gp */
+ //double gp_avg; /* average value of gp */
+ double ekinx;
+ double ekiny;
+ double ekinz;
t_virial vir; /* actual virial */
double virial;
int fd;
} t_vb;
+typedef struct s_part_params {
+ u8 type;
+ double r;
+ t_3dvec p;
+ t_3dvec d;
+} t_part_params;
+
+#define PART_INSIDE_R 1
+#define PART_OUTSIDE_R 2
+#define PART_INSIDE_D 3
+#define PART_OUTSIDE_D 4
+
+typedef struct s_defect_params {
+ u8 type;
+ u8 stype;
+ double od;
+ double dd;
+ int element;
+ u8 brand;
+ u8 attr;
+} t_defect_params;
+
+#define DEFECT_TYPE_0D 1
+#define DEFECT_TYPE_1D 2
+#define DEFECT_TYPE_2D 3
+#define DEFECT_TYPE_3D 4
+
+#define DEFECT_STYPE_DB_X 1
+#define DEFECT_STYPE_DB_Y 2
+#define DEFECT_STYPE_DB_Z 3
+#define DEFECT_STYPE_DB_R 4
+
+typedef struct s_offset_params {
+ t_3dvec o;
+ u8 use;
+} t_offset_params;
+
/*
*
* defines
int moldyn_set_log(t_moldyn *moldyn,u8 type,int timer);
int moldyn_log_shutdown(t_moldyn *moldyn);
-int create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,double mass,
- u8 attr,u8 brand,int a,int b,int c,t_3dvec *origin);
-int add_atom(t_moldyn *moldyn,int element,double mass,u8 brand,u8 attr,
+int create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,
+ u8 attr,u8 brand,int a,int b,int c,t_3dvec *origin,
+ t_part_params *p_params,t_defect_params *d_params,
+ t_offset_params *o_params);
+int add_atom(t_moldyn *moldyn,int element,u8 brand,u8 attr,
t_3dvec *r,t_3dvec *v);
int del_atom(t_moldyn *moldyn,int tag);
-int cubic_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin);
-int fcc_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin);
-int diamond_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin);
+int cubic_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin,
+ t_part_params *p_params,t_defect_params *d_params);
+int fcc_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin,
+ t_part_params *p_params,t_defect_params *d_params);
+int diamond_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin,
+ t_part_params *p_params,t_defect_params *d_params);
int destroy_atoms(t_moldyn *moldyn);
int thermal_init(t_moldyn *moldyn,u8 equi_init);
//inline int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d)
// __attribute__((always_inline));
int check_per_bound(t_moldyn *moldyn,t_3dvec *a);
+int check_per_bound_and_care_for_pbc(t_moldyn *moldyn,t_atom *a);
//inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a)
// __attribute__((always_inline));
int pair_correlation_init(t_moldyn *moldyn,double dr);
int calculate_diffusion_coefficient(t_moldyn *moldyn,double *dc);
+int calculate_msd(t_moldyn *moldyn,double *msd);
int calculate_pair_correlation_process(t_moldyn *moldyn,t_atom *itom,
t_atom *jtom,void *data,u8 bc);
int calculate_pair_correlation(t_moldyn *moldyn,double dr,void *ptr);