NAMD
imd.h
Go to the documentation of this file.
1 
2 #ifndef IMD_H__
3 #define IMD_H__
4 
5 #include <limits.h>
6 #include <vector>
7 #include "common.h"
8 
9 #if ( INT_MAX == 2147483647 )
10 typedef int int32;
11 #else
12 typedef short int32;
13 #endif
14 
15 enum IMDType {
17  IMD_ENERGIES, // = 1
18  IMD_FCOORDS, // = 2
19  IMD_GO, // = 3
20  IMD_HANDSHAKE, // = 4
21  IMD_KILL, // = 5
22  IMD_MDCOMM, // = 6
23  IMD_PAUSE, // = 7
24  IMD_TRATE, // = 8
25  IMD_IOERROR, // = 9
26  // New in IMD v3
27  IMD_SESSIONINFO, // = 10
28  IMD_RESUME, // = 11
29  IMD_TIME, // = 12
30  IMD_BOX, // = 13
31  IMD_VELOCITIES, // = 14
32  IMD_FORCES, // = 15
33  IMD_WAIT, // = 16
34 };
35 
36 typedef struct {
38  float T;
39  float Etot;
40  float Epot;
41  float Evdw;
42  float Eelec;
43  float Ebond;
44  float Eangle;
45  float Edihe;
46  float Eimpr;
47 } IMDEnergies;
48 
49 typedef struct {
52  long int tstep;
53 } IMDTime;
54 
55 typedef struct {
56  float ax, ay, az;
57  float bx, by, bz;
58  float cx, cy, cz;
59 } IMDBox;
60 
61 typedef struct {
70 
71 // Send simple messages - these consist of a header with no subsequent data
72 extern int imd_disconnect(void *);
73 extern int imd_pause(void *);
74 extern int imd_kill(void *);
75 extern int imd_handshake(void *, const int);
76 extern int imd_trate(void *, int32);
77 extern int imd_sessioninfo(void *, const IMDSessionInfo *);
78 
79 // Send data
80 extern int imd_send_mdcomm(void *, int32, const int32 *, const float *);
81 extern int imd_send_energies(void *, const IMDEnergies *);
82 extern int imd_send_fcoords(void *, int32, const float *);
83 extern int imd_send_velocities(void *, int32, const float *);
84 extern int imd_send_forces(void *, int32, const float *);
85 extern int imd_send_box(void *, const IMDBox *);
86 extern int imd_send_time(void *, const IMDTime *);
87 
89 
90 // recv_handshake returns 0 if server and client have the same relative
91 // endianism; returns 1 if they have opposite endianism, and -1 if there
92 // was an error in the handshake process.
93 extern int imd_recv_handshake(void *);
94 
95 extern IMDType imd_recv_header(void *, int32 *);
96 extern int imd_recv_mdcomm(void *, int32, int32 *, float *);
97 extern int imd_recv_energies(void *, IMDEnergies *);
98 extern int imd_recv_fcoords(void *, int32, float *);
99 extern int imd_recv_velocities(void *, int32, float *);
100 extern int imd_recv_forces(void *, int32, float *);
101 extern int imd_recv_box(void *, IMDBox *);
102 extern int imd_recv_time(void *, IMDTime *);
103 
104 #endif
105 
Definition: imd.h:33
int imd_recv_handshake(void *)
Receive header and data.
Definition: imd.C:253
float az
Definition: imd.h:56
int32_t int32
Definition: common.h:38
float Eelec
Definition: imd.h:42
float cz
Definition: imd.h:58
Definition: imd.h:19
int wrap_switch
Definition: imd.h:66
Definition: imd.h:22
short int32
Definition: imd.h:12
IMDType imd_recv_header(void *, int32 *)
Definition: imd.C:276
int imd_send_box(void *, const IMDBox *)
Definition: imd.C:222
IMDType
Definition: imd.h:15
int imd_trate(void *, int32)
Definition: imd.C:139
BigReal dt
Definition: imd.h:50
float bz
Definition: imd.h:57
float Eimpr
Definition: imd.h:46
float Etot
Definition: imd.h:39
long int tstep
Definition: imd.h:52
int imd_recv_energies(void *, IMDEnergies *)
Definition: imd.C:293
int imd_handshake(void *, const int)
Definition: imd.C:132
Definition: imd.h:32
float Edihe
Definition: imd.h:45
Definition: imd.h:55
int imd_disconnect(void *)
Definition: imd.C:107
float Eangle
Definition: imd.h:44
BigReal time
Definition: imd.h:51
int imd_send_energies(void *, const IMDEnergies *)
Definition: imd.C:182
int time_switch
Definition: imd.h:62
float T
Definition: imd.h:38
int imd_send_fcoords(void *, int32, const float *)
Definition: imd.C:192
Definition: imd.h:24
int32 tstep
Definition: imd.h:37
int box_switch
Definition: imd.h:64
Definition: imd.h:49
float Epot
Definition: imd.h:40
int imd_send_velocities(void *, int32, const float *)
Definition: imd.C:202
float Evdw
Definition: imd.h:41
int imd_send_mdcomm(void *, int32, const int32 *, const float *)
Definition: imd.C:171
Definition: imd.h:30
float Ebond
Definition: imd.h:43
int imd_recv_velocities(void *, int32, float *)
Definition: imd.C:302
int imd_pause(void *)
Definition: imd.C:113
int imd_recv_box(void *, IMDBox *)
Definition: imd.C:310
int imd_send_forces(void *, int32, const float *)
Definition: imd.C:212
int fcoords_switch
Definition: imd.h:65
int velocities_switch
Definition: imd.h:67
int imd_recv_time(void *, IMDTime *)
Definition: imd.C:314
int forces_switch
Definition: imd.h:68
int imd_recv_forces(void *, int32, float *)
Definition: imd.C:306
Definition: imd.h:23
Definition: imd.h:29
int imd_recv_mdcomm(void *, int32, int32 *, float *)
Definition: imd.C:287
int imd_recv_fcoords(void *, int32, float *)
Definition: imd.C:298
Definition: imd.h:28
int imd_kill(void *)
Definition: imd.C:119
Definition: imd.h:21
int imd_sessioninfo(void *, const IMDSessionInfo *)
Definition: imd.C:160
int energies_switch
Definition: imd.h:63
double BigReal
Definition: common.h:123
int imd_send_time(void *, const IMDTime *)
Definition: imd.C:232