ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/io/interface.c
Revision: 2263
Committed: Wed Jul 13 15:54:00 2005 UTC (18 years, 11 months ago) by tim
Content type: text/plain
File size: 9491 byte(s)
Log Message:
replace c++ style comment in c files

File Contents

# User Rev Content
1 gezelter 2204 /*
2 gezelter 1930 * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3     *
4     * The University of Notre Dame grants you ("Licensee") a
5     * non-exclusive, royalty free, license to use, modify and
6     * redistribute this software in source and binary code form, provided
7     * that the following conditions are met:
8     *
9     * 1. Acknowledgement of the program authors must be made in any
10     * publication of scientific results based in part on use of the
11     * program. An acceptable form of acknowledgement is citation of
12     * the article in which the program was described (Matthew
13     * A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14     * J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15     * Parallel Simulation Engine for Molecular Dynamics,"
16     * J. Comput. Chem. 26, pp. 252-271 (2005))
17     *
18     * 2. Redistributions of source code must retain the above copyright
19     * notice, this list of conditions and the following disclaimer.
20     *
21     * 3. Redistributions in binary form must reproduce the above copyright
22     * notice, this list of conditions and the following disclaimer in the
23     * documentation and/or other materials provided with the
24     * distribution.
25     *
26     * This software is provided "AS IS," without a warranty of any
27     * kind. All express or implied conditions, representations and
28     * warranties, including any implied warranty of merchantability,
29     * fitness for a particular purpose or non-infringement, are hereby
30     * excluded. The University of Notre Dame and its licensors shall not
31     * be liable for any damages suffered by licensee as a result of
32     * using, modifying or distributing the software or its
33     * derivatives. In no event will the University of Notre Dame or its
34     * licensors be liable for any lost revenue, profit or data, or for
35     * direct, indirect, special, consequential, incidental or punitive
36     * damages, however caused and regardless of the theory of liability,
37     * arising out of the use of or inability to use software, even if the
38     * University of Notre Dame has been advised of the possibility of
39     * such damages.
40     */
41    
42 gezelter 1490 #include <stdio.h>
43     #include <stdlib.h>
44     #include <string.h>
45    
46 tim 1492 #include "io/parse_interface.h"
47     #include "io/BASS_interface.h"
48     #include "utils/simError.h"
49 gezelter 1490 #ifdef IS_MPI
50 tim 1492 #include "io/mpiBASS.h"
51 gezelter 1490 #endif
52    
53     void interface_error( event* the_event );
54    
55     void init_component( int comp_index ){
56     event* the_event;
57    
58     the_event = (event* )malloc( sizeof( event ) );
59    
60     the_event->event_type = COMPONENT;
61     the_event->err_msg = NULL;
62     the_event->evt.blk_index = comp_index;
63    
64     if( !event_handler( the_event ) ) interface_error( the_event );
65     #ifdef IS_MPI
66     throwMPIEvent(the_event);
67     #endif
68    
69     free( the_event );
70     }
71    
72     void init_molecule( int mol_index ){
73     event* the_event;
74    
75     the_event = (event* )malloc( sizeof( event ) );
76    
77     the_event->event_type = MOLECULE;
78     the_event->err_msg = NULL;
79     the_event->evt.blk_index = mol_index;
80    
81     if( !event_handler( the_event ) ) interface_error( the_event );
82     #ifdef IS_MPI
83     throwMPIEvent(the_event);
84     #endif
85    
86     free( the_event );
87     }
88    
89     void init_rigidbody( int rigidbody_index ){
90     event* the_event;
91    
92     the_event = (event* )malloc( sizeof( event ) );
93    
94     the_event->event_type = RIGIDBODY;
95     the_event->err_msg = NULL;
96     the_event->evt.blk_index = rigidbody_index;
97    
98     if( !event_handler( the_event ) ) interface_error( the_event );
99     #ifdef IS_MPI
100     throwMPIEvent(the_event);
101     #endif
102    
103     free( the_event );
104     }
105    
106     void init_cutoffgroup( int cutoffgroup_index ){
107     event* the_event;
108    
109     the_event = (event* )malloc( sizeof( event ) );
110    
111     the_event->event_type = CUTOFFGROUP;
112     the_event->err_msg = NULL;
113     the_event->evt.blk_index = cutoffgroup_index;
114    
115     if( !event_handler( the_event ) ) interface_error( the_event );
116     #ifdef IS_MPI
117     throwMPIEvent(the_event);
118     #endif
119    
120     free( the_event );
121     }
122    
123     void init_atom( int atom_index ){
124     event* the_event;
125    
126     the_event = (event* )malloc( sizeof( event ) );
127    
128     the_event->event_type = ATOM;
129     the_event->err_msg = NULL;
130     the_event->evt.blk_index = atom_index;
131    
132     if( !event_handler( the_event ) ) interface_error( the_event );
133     #ifdef IS_MPI
134     throwMPIEvent(the_event);
135     #endif
136    
137     free( the_event );
138     }
139    
140     void init_bond( int bond_index ){
141     event* the_event;
142    
143     the_event = (event* )malloc( sizeof( event ) );
144    
145     the_event->event_type = BOND;
146     the_event->err_msg = NULL;
147     the_event->evt.blk_index = bond_index;
148    
149     if( !event_handler( the_event ) ) interface_error( the_event );
150     #ifdef IS_MPI
151     throwMPIEvent(the_event);
152     #endif
153    
154     free( the_event );
155     }
156    
157     void init_bend( int bend_index ){
158     event* the_event;
159    
160     the_event = (event* )malloc( sizeof( event ) );
161    
162     the_event->event_type = BEND;
163     the_event->err_msg = NULL;
164     the_event->evt.blk_index = bend_index;
165    
166     if( !event_handler( the_event ) ) interface_error( the_event );
167     #ifdef IS_MPI
168     throwMPIEvent(the_event);
169     #endif
170    
171     free( the_event );
172     }
173    
174     void init_torsion( int torsion_index ){
175     event* the_event;
176    
177     the_event = (event* )malloc( sizeof( event ) );
178    
179     the_event->event_type = TORSION;
180     the_event->err_msg = NULL;
181     the_event->evt.blk_index = torsion_index;
182    
183     if( !event_handler( the_event ) ) interface_error( the_event );
184     #ifdef IS_MPI
185     throwMPIEvent(the_event);
186     #endif
187    
188     free( the_event );
189     }
190    
191     void init_zconstraint( int zconstraint_index ){
192     event* the_event;
193    
194     the_event = (event* )malloc( sizeof( event ) );
195    
196     the_event->event_type = ZCONSTRAINT;
197     the_event->err_msg = NULL;
198     the_event->evt.blk_index = zconstraint_index;
199    
200     if( !event_handler( the_event ) ) interface_error( the_event );
201     #ifdef IS_MPI
202     throwMPIEvent(the_event);
203     #endif
204    
205     free( the_event );
206     }
207    
208    
209     /*
210     * the next few deal with the statement initializations
211     */
212    
213     void init_members( struct node_tag* the_node,
214     struct namespc the_namespc ){
215     event* the_event;
216     int i;
217    
218     the_event = (event* )malloc( sizeof( event ) );
219    
220     the_event->event_type = MEMBERS;
221     the_event->err_msg = NULL;
222    
223     the_event->evt.mbrs.nMembers = the_node->the_data.mbrs.nMembers;
224    
225     the_event->evt.mbrs.memberList = (int *) calloc(the_node->the_data.mbrs.nMembers,
226     sizeof(int));
227    
228     for (i = 0; i < the_node->the_data.mbrs.nMembers; i++) {
229     the_event->evt.mbrs.memberList[i] = the_node->the_data.mbrs.memberList[i];
230     }
231    
232     if( !event_handler( the_event ) ) interface_error( the_event );
233     #ifdef IS_MPI
234     throwMPIEvent(the_event);
235     #endif
236    
237     free( the_event->evt.mbrs.memberList );
238     free( the_event );
239     }
240    
241     void init_constraint( struct node_tag* the_node,
242     struct namespc the_namespc ){
243     event* the_event;
244    
245     the_event = (event* )malloc( sizeof( event ) );
246    
247     the_event->event_type = CONSTRAINT;
248     the_event->err_msg = NULL;
249     the_event->evt.cnstr = the_node->the_data.cnstr.constraint_val;
250    
251     if( !event_handler( the_event ) ) interface_error( the_event );
252     #ifdef IS_MPI
253     throwMPIEvent(the_event);
254     #endif
255    
256     free( the_event );
257     }
258    
259     void init_assignment( struct node_tag* the_node,
260     struct namespc the_namespc ){
261     event* the_event;
262    
263     the_event = (event* )malloc( sizeof( event ) );
264    
265     the_event->event_type = ASSIGNMENT;
266     the_event->err_msg = NULL;
267    
268     strcpy( the_event->evt.asmt.lhs, the_node->the_data.asmt.identifier );
269     switch( the_node->the_data.asmt.type ){
270    
271     case STR_ASSN:
272     the_event->evt.asmt.asmt_type = STRING;
273     strcpy( the_event->evt.asmt.rhs.sval,
274     the_node->the_data.asmt.rhs.str_ptr );
275     break;
276    
277     case INT_ASSN:
278     the_event->evt.asmt.asmt_type = INT;
279     the_event->evt.asmt.rhs.ival = the_node->the_data.asmt.rhs.i_val;
280     break;
281    
282     case DOUBLE_ASSN:
283     the_event->evt.asmt.asmt_type = DOUBLE;
284     the_event->evt.asmt.rhs.dval = the_node->the_data.asmt.rhs.d_val;
285     break;
286     }
287    
288     if( !event_handler( the_event ) ) interface_error( the_event );
289     #ifdef IS_MPI
290     throwMPIEvent(the_event);
291     #endif
292    
293     free( the_event );
294     }
295    
296     void init_position( struct node_tag* the_node,
297     struct namespc the_namespc ){
298     event* the_event;
299    
300     the_event = (event* )malloc( sizeof( event ) );
301    
302     the_event->event_type = POSITION;
303     the_event->err_msg = NULL;
304     the_event->evt.pos.x = the_node->the_data.pos.x;
305     the_event->evt.pos.y = the_node->the_data.pos.y;
306     the_event->evt.pos.z = the_node->the_data.pos.z;
307    
308     if( !event_handler( the_event ) ) interface_error( the_event );
309     #ifdef IS_MPI
310     throwMPIEvent(the_event);
311     #endif
312    
313     free( the_event );
314     }
315    
316     void init_orientation( struct node_tag* the_node,
317     struct namespc the_namespc ){
318     event* the_event;
319    
320     the_event = (event* )malloc( sizeof( event ) );
321    
322     the_event->event_type = ORIENTATION;
323     the_event->err_msg = NULL;
324     the_event->evt.ornt.phi = the_node->the_data.ort.phi;
325     the_event->evt.ornt.theta = the_node->the_data.ort.theta;
326     the_event->evt.ornt.psi = the_node->the_data.ort.psi;
327    
328     if( !event_handler( the_event ) ) interface_error( the_event );
329     #ifdef IS_MPI
330     throwMPIEvent(the_event);
331     #endif
332    
333     free( the_event );
334     }
335    
336    
337     void end_of_block( void ){
338     event* the_event;
339    
340     the_event = (event* )malloc( sizeof( event ) );
341    
342     the_event->event_type = BLOCK_END;
343     the_event->err_msg = NULL;
344    
345     if( !event_handler( the_event ) ) interface_error( the_event );
346     #ifdef IS_MPI
347     throwMPIEvent(the_event);
348     #endif
349    
350     free( the_event );
351     }
352    
353     void interface_error( event* the_event ){
354    
355     sprintf( painCave.errMsg,
356     "Error in parsing meta-data file!\n"
357     "\t%s\n",
358     the_event->err_msg );
359     painCave.severity = OOPSE_ERROR;
360     painCave.isFatal = 1;
361     simError();
362     #ifdef IS_MPI
363     mpiInterfaceExit();
364 tim 2263 #endif /*IS_MPI*/
365 gezelter 1490 }