| 1 | 
  | 
#include <stdlib.h> | 
| 2 | 
  | 
#include <stdio.h> | 
| 3 | 
  | 
 | 
| 4 | 
< | 
#include <parse_tree.h> | 
| 5 | 
< | 
#include <simError.h> | 
| 4 | 
> | 
#include "parse_tree.h" | 
| 5 | 
> | 
#include "simError.h" | 
| 6 | 
  | 
 | 
| 7 | 
  | 
#ifdef IS_MPI | 
| 8 | 
  | 
#define __is_lex__ | 
| 9 | 
< | 
#include <mpiBASS.h> | 
| 9 | 
> | 
#include "mpiBASS.h" | 
| 10 | 
  | 
#endif | 
| 11 | 
  | 
 | 
| 12 | 
  | 
void walk_down( struct node_tag* the_node, struct namespc the_namespc ); | 
| 98 | 
  | 
        break; | 
| 99 | 
  | 
 | 
| 100 | 
  | 
      case ATOM_HEAD: | 
| 101 | 
+ | 
        if( the_namespc.type != MOLECULE_HEAD && the_namespc.type != RIGIDBODY_HEAD ){ | 
| 102 | 
+ | 
             print_tree_error( the_node, | 
| 103 | 
+ | 
                            "The atom block is not in a molecule or rigidBody namespace" ); | 
| 104 | 
+ | 
        } | 
| 105 | 
+ | 
        else{ | 
| 106 | 
+ | 
          init_atom( the_node->index ); | 
| 107 | 
+ | 
          current_namespc.index = the_node->index; | 
| 108 | 
+ | 
          current_namespc.type = the_node->type; | 
| 109 | 
+ | 
          walk_down( the_node->stmt_list, current_namespc ); | 
| 110 | 
+ | 
        } | 
| 111 | 
+ | 
        break; | 
| 112 | 
+ | 
 | 
| 113 | 
+ | 
      case RIGIDBODY_HEAD: | 
| 114 | 
  | 
        if( the_namespc.type != MOLECULE_HEAD ){ | 
| 115 | 
  | 
          print_tree_error( the_node, | 
| 116 | 
< | 
                            "The atom block is not in a molecule namespace" ); | 
| 116 | 
> | 
                            "The rigid body block is not in a molecule namespace" ); | 
| 117 | 
  | 
        } | 
| 118 | 
  | 
        else{ | 
| 119 | 
< | 
          init_atom( the_node->index ); | 
| 119 | 
> | 
          init_rigidbody( the_node->index ); | 
| 120 | 
  | 
          current_namespc.index = the_node->index; | 
| 121 | 
  | 
          current_namespc.type = the_node->type; | 
| 122 | 
  | 
          walk_down( the_node->stmt_list, current_namespc ); | 
| 225 | 
  | 
        break; | 
| 226 | 
  | 
 | 
| 227 | 
  | 
      case POSITION_STMT: | 
| 228 | 
< | 
        if( the_namespc.type != ATOM_HEAD ){ | 
| 228 | 
> | 
        if( the_namespc.type != ATOM_HEAD && the_namespc.type != RIGIDBODY_HEAD){ | 
| 229 | 
  | 
          print_tree_error( the_node, | 
| 230 | 
  | 
                            "position statement is not located in an " | 
| 231 | 
< | 
                            "atom block" ); | 
| 231 | 
> | 
                            "atom or rigidBody block" ); | 
| 232 | 
  | 
        } | 
| 233 | 
  | 
         | 
| 234 | 
  | 
        init_position( the_node, the_namespc ); | 
| 235 | 
  | 
        break; | 
| 236 | 
  | 
 | 
| 237 | 
  | 
      case ORIENTATION_STMT: | 
| 238 | 
< | 
        if( the_namespc.type != ATOM_HEAD ){ | 
| 238 | 
> | 
        if( the_namespc.type != ATOM_HEAD && the_namespc.type != RIGIDBODY_HEAD){ | 
| 239 | 
  | 
          print_tree_error( the_node, | 
| 240 | 
  | 
                            "orientation statement is not located in an " | 
| 241 | 
< | 
                            "atom block" ); | 
| 241 | 
> | 
                            "atom or rigidBody block" ); | 
| 242 | 
  | 
        } | 
| 243 | 
  | 
         | 
| 244 | 
  | 
        init_orientation( the_node, the_namespc ); | 
| 290 | 
  | 
             err_msg ); | 
| 291 | 
  | 
    break; | 
| 292 | 
  | 
 | 
| 293 | 
+ | 
  case RIGIDBODY_HEAD: | 
| 294 | 
+ | 
    sprintf( painCave.errMsg, | 
| 295 | 
+ | 
             "Parse tree error: rigidBody head node error -> %s\n", | 
| 296 | 
+ | 
             err_msg ); | 
| 297 | 
+ | 
    break; | 
| 298 | 
+ | 
 | 
| 299 | 
  | 
  case ATOM_HEAD: | 
| 300 | 
  | 
    sprintf( painCave.errMsg, | 
| 301 | 
  | 
             "Parse tree error: atom head node error [%d] -> %s\n", |