@@ -61,6 +61,45 @@ def __init__(self, index, basename, kind, ics, tasks, units,master=None, slaves=
6161 self .slaves = slaves
6262 self .diag_term_indexes = diag_term_indexes
6363
64+ def __getstate__ (self ):
65+ state = {
66+ 'index' : self .index ,
67+ 'basename' : self .basename ,
68+ 'kind' : self .kind ,
69+ 'ics' : [(ic .kind , ic .index_pairs ) for ic in self .ics ],
70+ 'tasks' : self .tasks ,
71+ 'units' : self .units ,
72+ 'master' : self .master ,
73+ 'slaves' : self .slaves ,
74+ 'diag_term_indexes' : self .diag_term_indexes ,
75+ }
76+ return state
77+
78+ def __setstate__ (self , state ):
79+ self .index = state ['index' ]
80+ self .basename = state ['basename' ]
81+ self .kind = state ['kind' ]
82+ self .ics = []
83+ for (kind , index_pairs ) in state ['ics' ]:
84+ if kind == 0 :
85+ ic = Bond (* index_pairs [0 ])
86+ elif kind == 1 :
87+ ic = BendCos (index_pairs [0 ][1 ],index_pairs [1 ][0 ],index_pairs [1 ][1 ])
88+ elif kind == 2 :
89+ ic = BendAngle (index_pairs [0 ][1 ],index_pairs [1 ][0 ],index_pairs [1 ][1 ])
90+ elif kind == 10 :
91+ ic = OopDist (index_pairs [0 ][0 ],index_pairs [1 ][0 ],index_pairs [2 ][0 ],index_pairs [2 ][1 ])
92+ elif kind == 11 :
93+ ic = SqOopDist (index_pairs [0 ][0 ],index_pairs [1 ][0 ],index_pairs [2 ][0 ],index_pairs [2 ][1 ])
94+ else :
95+ raise NotImplementedError ('Internal coordinate of kind %i not implemented yet in __setstate__ routine of Term class.' % kind )
96+ self .ics .append (ic )
97+ self .tasks = state ['tasks' ]
98+ self .units = state ['units' ]
99+ self .master = state ['master' ]
100+ self .slaves = state ['slaves' ]
101+ self .diag_term_indexes = state ['diag_term_indexes' ]
102+
64103 def is_master (self ):
65104 return self .master == self .index
66105
0 commit comments