forked from rikigigi/analisi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lammps_struct.h
68 lines (55 loc) · 1.56 KB
/
lammps_struct.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/**
*
* (c) Riccardo Bertossa, 2019
*
* Use at your own risk.
*
* If you modified the code, I could be happy if you contribute on github!
*
**/
#ifndef LAMMPS_STRUCT_H
#define LAMMPS_STRUCT_H
typedef int tagint;
typedef int64_t bigint;
//poi basterà convertire il puntatore char a un puntatore Intestazione_timestep*
//pragma pack(1) dice al compilatore (dalla documentazione funziona con gcc e il compilatore microsoft) di non inserire byte di allineamento
#pragma pack(push,1)
struct Intestazione_timestep {
bigint timestep;
bigint natoms;
int triclinic;
int condizioni_al_contorno[3][2];
double scatola[6]; //xlo,xhi,ylo,yhi,zlo,zhi
int dimensioni_riga_output;
int nchunk;
};
// se si usa questo va sostituito ovunque al posto di Intestazione_timestep
struct Intestazione_timestep_triclinic {
bigint timestep;
bigint natoms;
int triclinic;
int condizioni_al_contorno[3][2];
double scatola[6];
double xy_xz_yz[3];
int dimensioni_riga_output;
int nchunk;
};
//dipende dal formato imposto alla simulazione LAMMPS!
//poi basterà convertire il puntatore char+ ad un puntatore Atomo*
//qui vanno messi in ordine i dati come li scrive LAMMPS
struct Atomo {
double id;
double tipo;
double posizione[3];
double velocita[3];
};
//questo va impostato al numero di dati per atomo
#define NDOUBLE_ATOMO 8
#pragma pack(pop)
//ce ne sono nchunk
//questa non basta traslarla
struct Chunk {
int n_atomi;
Atomo * atomi; // questa cella di memoria andrà impostata
};
#endif // LAMMPS_STRUCT_H