Changeset e359a8


Ignore:
Timestamp:
Nov 23, 2009, 6:51:50 PM (15 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
482373, c5f836
Parents:
717e0c
Message:

Fixing ticket #18.

  • each eLog() << Verbose(0) is now followed by performCriticalExit().
Location:
src
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • src/analysis_correlation.hpp

    r717e0c re359a8  
    7272  if (map == NULL) {
    7373    eLog() << Verbose(0) << "Nothing to min/max, map is NULL!" << endl;
     74    performCriticalExit();
    7475    return;
    7576  }
     
    107108  if (map == NULL) {
    108109    eLog() << Verbose(0) << "Nothing to bin, is NULL!" << endl;
     110    performCriticalExit();
    109111    return outmap;
    110112  }
  • src/boundary.cpp

    r717e0c re359a8  
    10061006    } else {
    10071007      //Log() << Verbose(1) << "Line " << *baseline->second << " has " << baseline->second->triangles.size() << " triangles adjacent" << endl;
    1008       if (baseline->second->triangles.size() != 2)
     1008      if (baseline->second->triangles.size() != 2) {
    10091009        eLog() << Verbose(0) << "TESSELATION FINISHED WITH INVALID TRIANGLE COUNT!" << endl;
     1010        performCriticalExit();
     1011      }
    10101012    }
    10111013
  • src/builder.cpp

    r717e0c re359a8  
    11701170  else {
    11711171    eLog() << Verbose(0) << "I don't have anything to test on ... ";
     1172    performCriticalExit();
    11721173    return;
    11731174  }
     
    14511452            if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    14521453              eLog() << Verbose(0) << "Not enough or invalid arguments for specifying element db: -e <db file>" << endl;
     1454              performCriticalExit();
    14531455            } else {
    14541456              Log() << Verbose(0) << "Using " << argv[argptr] << " as elements database." << endl;
     
    14601462            if ((argptr >= argc) || (argv[argptr][0] == '-')) {
    14611463              eLog() << Verbose(0) << "Not enough or invalid arguments for specifying bond length table: -g <table file>" << endl;
     1464              performCriticalExit();
    14621465            } else {
    14631466              BondGraphFileName = argv[argptr];
     
    15521555                ExitFlag = 255;
    15531556                eLog() << Verbose(0) << "Not enough arguments for parsing: -p <xyz file>" << endl;
     1557                performCriticalExit();
    15541558              } else {
    15551559                SaveFlag = true;
     
    15681572                ExitFlag = 255;
    15691573                eLog() << Verbose(0) << "Not enough or invalid arguments for adding atom: -a <element> <x> <y> <z>" << endl;
     1574                performCriticalExit();
    15701575              } else {
    15711576                SaveFlag = true;
     
    15961601                ExitFlag = 255;
    15971602                eLog() << Verbose(0) << "Not enough or invalid arguments given for setting MPQC basis: -B <basis name>" << endl;
     1603                performCriticalExit();
    15981604              } else {
    15991605                configuration.basis = argv[argptr];
     
    16401646                ExitFlag = 255;
    16411647                eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C <Z> <output> <bin output>" << endl;
     1648                performCriticalExit();
    16421649              } else {
    16431650                SaveFlag = false;
     
    16861693                ExitFlag = 255;
    16871694                eLog() << Verbose(0) << "Not enough or invalid arguments given for changing element: -E <atom nr.> <element>" << endl;
     1695                performCriticalExit();
    16881696              } else {
    16891697                SaveFlag = true;
     
    16991707                ExitFlag = 255;
    17001708                eLog() << Verbose(0) << "Not enough or invalid arguments given for filling box with water: -F <dist_x> <dist_y> <dist_z> <randatom> <randmol> <DoRotate>" << endl;
     1709                performCriticalExit();
    17011710              } else {
    17021711                SaveFlag = true;
     
    17371746                ExitFlag =255;
    17381747                eLog() << Verbose(0) << "Missing source file for bonds in molecule: -A <bond sourcefile>" << endl;
     1748                performCriticalExit();
    17391749              } else {
    17401750                Log() << Verbose(0) << "Parsing bonds from " << argv[argptr] << "." << endl;
     
    17501760                ExitFlag = 255;
    17511761                eLog() << Verbose(0) << "Not enough or invalid arguments given for non-convex envelope: -o <radius> <tecplot output file>" << endl;
     1762                performCriticalExit();
    17521763              } else {
    17531764                class Tesselation *T = NULL;
     
    17831794                ExitFlag = 255;
    17841795                eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -S <temperature file>" << endl;
     1796                performCriticalExit();
    17851797              } else {
    17861798                Log() << Verbose(1) << "Storing temperatures in " << argv[argptr] << "." << endl;
     
    18001812                ExitFlag = 255;
    18011813                eLog() << Verbose(0) << "Not enough or invalid arguments given for storing tempature: -L <step0> <step1> <prefix> <identity mapping?>" << endl;
     1814                performCriticalExit();
    18021815              } else {
    18031816                SaveFlag = true;
     
    18171830                ExitFlag = 255;
    18181831                eLog() << Verbose(0) << "Not enough or invalid arguments given for parsing and integrating forces: -P <forces file>" << endl;
     1832                performCriticalExit();
    18191833              } else {
    18201834                SaveFlag = true;
     
    18321846                ExitFlag = 255;
    18331847                eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -R <id> <distance>" << endl;
     1848                performCriticalExit();
    18341849              } else {
    18351850                SaveFlag = true;
     
    18571872                ExitFlag = 255;
    18581873                eLog() << Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z>" << endl;
     1874                performCriticalExit();
    18591875              } else {
    18601876                if (ExitFlag == 0) ExitFlag = 1;
     
    18721888                ExitFlag = 255;
    18731889                eLog() << Verbose(0) << "Not enough or invalid arguments given for periodic translation: -T <x> <y> <z>" << endl;
     1890                performCriticalExit();
    18741891              } else {
    18751892                if (ExitFlag == 0) ExitFlag = 1;
     
    18871904                ExitFlag = 255;
    18881905                eLog() << Verbose(0) << "Not enough or invalid arguments given for scaling: -s <factor_x> [factor_y] [factor_z]" << endl;
     1906                performCriticalExit();
    18891907              } else {
    18901908                SaveFlag = true;
     
    19101928                ExitFlag = 255;
    19111929                eLog() << Verbose(0) << "Not enough or invalid arguments given for centering in box: -b <xx> <xy> <xz> <yy> <yz> <zz>" << endl;
     1930                performCriticalExit();
    19121931              } else {
    19131932                SaveFlag = true;
     
    19271946                ExitFlag = 255;
    19281947                eLog() << Verbose(0) << "Not enough or invalid arguments given for bounding in box: -B <xx> <xy> <xz> <yy> <yz> <zz>" << endl;
     1948                performCriticalExit();
    19291949              } else {
    19301950                SaveFlag = true;
     
    19441964                ExitFlag = 255;
    19451965                eLog() << Verbose(0) << "Not enough or invalid arguments given for centering with boundary: -c <boundary_x> <boundary_y> <boundary_z>" << endl;
     1966                performCriticalExit();
    19461967              } else {
    19471968                SaveFlag = true;
     
    19771998                ExitFlag = 255;
    19781999                eLog() << Verbose(0) << "Not enough or invalid arguments given for removing atoms: -r <id>" << endl;
     2000                performCriticalExit();
    19792001              } else {
    19802002                SaveFlag = true;
     
    19902012                ExitFlag = 255;
    19912013                eLog() << Verbose(0) << "Not enough or invalid arguments for fragmentation: -f <max. bond distance> <bond order>" << endl;
     2014                performCriticalExit();
    19922015              } else {
    19932016                Log() << Verbose(0) << "Fragmenting molecule with bond distance " << argv[argptr] << " angstroem, order of " << argv[argptr+1] << "." << endl;
     
    20232046                ExitFlag = 255;
    20242047                eLog() << Verbose(0) << "Not enough or invalid arguments given for convex envelope: -o <convex output file> <non-convex output file>" << endl;
     2048                performCriticalExit();
    20252049              } else {
    20262050                class Tesselation *TesselStruct = NULL;
     
    20472071                ExitFlag = 255;
    20482072                eLog() << Verbose(0) << "Not enough or invalid arguments given for suspension with specified volume: -U <volume> <density>" << endl;
    2049                 volume = -1; // for case 'u': don't print error again
     2073                performCriticalExit();
    20502074              } else {
    20512075                volume = atof(argv[argptr++]);
     
    20582082                  ExitFlag = 255;
    20592083                  eLog() << Verbose(0) << "Not enough arguments given for suspension: -u <density>" << endl;
     2084                  performCriticalExit();
    20602085              } else {
    20612086                double density;
     
    20642089                density = atof(argv[argptr++]);
    20652090                if (density < 1.0) {
    2066                   eLog() << Verbose(0) << "Density must be greater than 1.0g/cm^3 !" << endl;
     2091                  eLog() << Verbose(1) << "Density must be greater than 1.0g/cm^3 !" << endl;
    20672092                  density = 1.3;
    20682093                }
     
    20812106                ExitFlag = 255;
    20822107                eLog() << Verbose(0) << "Not enough or invalid arguments given for repeating cells: -d <repeat_x> <repeat_y> <repeat_z>" << endl;
     2108                performCriticalExit();
    20832109              } else {
    20842110                SaveFlag = true;
  • src/config.cpp

    r717e0c re359a8  
    143143  if (LineMapping == NULL) {
    144144    eLog() << Verbose(0) << "map pointer is NULL: " << LineMapping << endl;
     145    performCriticalExit();
    145146    return;
    146147  }
     
    156157    if (CurrentLine+nr < NoLines)
    157158      LineMapping[CurrentLine+(nr++)] = runner->second;
    158     else
     159    else {
    159160      eLog() << Verbose(0) << "config::MapIonTypesInBuffer - NoAtoms is wrong: We are past the end of the file!" << endl;
     161      performCriticalExit();
     162    }
    160163  }
    161164}
     
    686689  if (MaxTypes == 0) {
    687690    eLog() << Verbose(0) << "There are no atoms according to MaxTypes in this config file." << endl;
     691    performCriticalExit();
    688692  } else {
    689693    // prescan number of ions per type
     
    704708    if (!ParseForParameter(verbose,FileBuffer, (const char*)name, 1, 1, 1, int_type, &value[0], 1, critical)) {
    705709      eLog() << Verbose(0) << "There are no atoms in the config file!" << endl;
     710      performCriticalExit();
    706711      return;
    707712    }
  • src/helpers.hpp

    r717e0c re359a8  
    111111  if (LookupTable == NULL) {
    112112    eLog() << Verbose(0) << "LookupTable memory allocation failed!" << endl;
     113    performCriticalExit();
    113114    status = false;
    114115  } else {
  • src/molecule.cpp

    r717e0c re359a8  
    445445    Walker->type = elemente->FindElement(shorthand);
    446446    if (Walker->type == NULL) {
    447       eLog() << Verbose(0) << "Could not parse the element at line: '" << line << "', setting to H.";
     447      eLog() << Verbose(1) << "Could not parse the element at line: '" << line << "', setting to H.";
    448448      Walker->type = elemente->FindElement(1);
    449449    }
  • src/molecule_dynamics.cpp

    r717e0c re359a8  
    307307    if (Params.DoubleList[i] > 1) {
    308308      eLog() << Verbose(0) << "Failed to create an injective PermutationMap!" << endl;
    309       exit(1);
     309      performCriticalExit();
    310310    }
    311311  Log() << Verbose(1) << "done." << endl;
     
    569569    if (!Force.ParseMatrix(file, 0,0,0)) {
    570570      eLog() << Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl;
     571      performCriticalExit();
    571572      return false;
    572573    }
    573574    if (Force.RowCounter[0] != AtomCount) {
    574575      eLog() << Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl;
     576      performCriticalExit();
    575577      return false;
    576578    }
  • src/molecule_fragmentation.cpp

    r717e0c re359a8  
    111111        if (!testGraphInsert.second) {
    112112          eLog() << Verbose(0) << "KeySet file must be corrupt as there are two equal key sets therein!" << endl;
     113          performCriticalExit();
    113114        }
    114115      }
     
    211212  } else {
    212213    eLog() << Verbose(0) << "Unable to open " << line << " for writing keysets!" << endl;
     214    performCriticalExit();
    213215    status = false;
    214216  }
     
    368370    } else {
    369371      eLog() << Verbose(0) << "Atom No. " << (*runner).second.first << " was not found in this molecule." << endl;
     372      performCriticalExit();
    370373    }
    371374  }
     
    449452    map<int, pair<double,int> > *AdaptiveCriteriaList = ScanAdaptiveFileIntoMap(path, *IndexKeySetList); // (Root No., (Value, Order)) !
    450453    if (AdaptiveCriteriaList->empty()) {
    451       eLog() << Verbose(0) << "Unable to parse file, incrementing all." << endl;
     454      eLog() << Verbose(2) << "Unable to parse file, incrementing all." << endl;
    452455      while (Walker->next != end) {
    453456        Walker = Walker->next;
     
    638641        MolecularWalker->Leaf->FragmentBOSSANOVA(FragmentList[FragmentCounter], RootStack[FragmentCounter], MinimumRingSize);
    639642      } else {
    640         eLog() << Verbose(0) << "Subgraph " << MolecularWalker << " has no atoms!" << endl;
     643        eLog() << Verbose(1) << "Subgraph " << MolecularWalker << " has no atoms!" << endl;
    641644      }
    642645      FragmentCounter++;  // next fragment list
  • src/molecule_graph.cpp

    r717e0c re359a8  
    926926        break; // breaking here will not cause error!
    927927    }
    928     if (i == vertex->ListOfBonds.size())
     928    if (i == vertex->ListOfBonds.size()) {
    929929      eLog() << Verbose(0) << "Error: All Component entries are already occupied!" << endl;
    930   } else
     930      performCriticalExit();
     931    }
     932  } else {
    931933    eLog() << Verbose(0) << "Error: Given vertex is NULL!" << endl;
     934    performCriticalExit();
     935  }
    932936}
    933937;
     
    11141118  if (ReferenceStack->IsEmpty()) {
    11151119    eLog() << Verbose(0) << "ReferenceStack is empty!" << endl;
     1120    performCriticalExit();
    11161121    return false;
    11171122  }
  • src/moleculelist.cpp

    r717e0c re359a8  
    402402  input.open(line.c_str());
    403403  if (input == NULL) {
    404     eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?"
    405         << endl;
     404    eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" << endl;
     405    performCriticalExit();
    406406    return false;
    407407  }
     
    442442    if (input == NULL) {
    443443      eLog() << Verbose(0) << endl << "Unable to open " << line << ", is the directory correct?" << endl;
     444      performCriticalExit();
    444445      return false;
    445446    }
     
    643644    if (path != NULL)
    644645      strcpy(PathBackup, path);
    645     else
     646    else {
    646647      eLog() << Verbose(0) << "OutputConfigForListOfFragments: NULL default path obtained from config!" << endl;
     648      performCriticalExit();
     649    }
    647650
    648651    // correct periodic
  • src/parser.cpp

    r717e0c re359a8  
    159159  if (input == NULL) {
    160160    eLog() << Verbose(0) << endl << "Unable to open " << name << ", is the directory correct?" << endl;
     161    performCriticalExit();
    161162    return false;
    162163  }
     
    179180  //Log() << Verbose(0) << line.str() << endl;
    180181  //Log() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << "." << endl;
    181   if (ColumnCounter[MatrixNr] == 0)
     182  if (ColumnCounter[MatrixNr] == 0) {
    182183    eLog() << Verbose(0) << "ColumnCounter[" << MatrixNr << "]: " << ColumnCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl;
     184    performCriticalExit();
     185  }
    183186 
    184187  // scan rest for number of rows/lines
     
    193196  }
    194197  //Log() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << "." << endl;
    195   if (RowCounter[MatrixNr] == 0)
     198  if (RowCounter[MatrixNr] == 0) {
    196199    eLog() << Verbose(0) << "RowCounter[" << MatrixNr << "]: " << RowCounter[MatrixNr] << " from file " << name << ", this is probably an error!" << endl;
     200    performCriticalExit();
     201  }
    197202
    198203  // allocate matrix if it's not zero dimension in one direction
     
    428433              if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) {
    429434                eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment]   << " current force index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl;
     435                performCriticalExit();
    430436                return false;
    431437              }
     
    471477    if (output == NULL) {
    472478      eLog() << Verbose(0) << "Unable to open output energy file " << line.str() << "!" << endl;
     479      performCriticalExit();
    473480      return false;
    474481    }
     
    500507  if (output == NULL) {
    501508    eLog() << Verbose(0) << "Unable to open output matrix file " << line.str() << "!" << endl;
     509    performCriticalExit();
    502510    return false;
    503511  }
     
    656664      if (j > RowCounter[MatrixCounter]) {
    657665        eLog() << Verbose(0) << "Current force index " << j << " is greater than " << RowCounter[MatrixCounter] << "!" << endl;
     666        performCriticalExit();
    658667        return false;
    659668      }
     
    793802      if (j > RowCounter[MatrixCounter]) {
    794803        eLog() << Verbose(0) << "Current hessian index " << j << " is greater than " << RowCounter[MatrixCounter] << ", where i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl;
     804        performCriticalExit();
    795805        return false;
    796806      }
     
    800810          if (k > ColumnCounter[MatrixCounter]) {
    801811            eLog() << Verbose(0) << "Current hessian index " << k << " is greater than " << ColumnCounter[MatrixCounter] << ", where m=" << m << ", j=" << j << ", i=" << i << ", Order=" << Order << ", l=" << l << " and FragmentNr=" << FragmentNr << "!" << endl;
     812            performCriticalExit();
    802813            return false;
    803814          }
     
    852863              if (m > RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) {
    853864                eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment]   << " current row index " << m << " is greater than " << RowCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl;
     865                performCriticalExit();
    854866                return false;
    855867              }
     
    869881                  if (n > ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ]) {
    870882                    eLog() << Verbose(0) << "In fragment No. " << KeySets.OrderSet[Order][CurrentFragment]   << " current column index " << n << " is greater than " << ColumnCounter[ KeySets.OrderSet[Order][CurrentFragment] ] << "!" << endl;
     883                    performCriticalExit();
    871884                    return false;
    872885                  }
  • src/tesselation.cpp

    r717e0c re359a8  
    333333  if (Counter < 3)
    334334    {
    335       eLog() << Verbose(0) << "ERROR! We have a triangle with only two distinct endpoints!"
    336           << endl;
    337       //exit(1);
     335      eLog() << Verbose(0) << "ERROR! We have a triangle with only two distinct endpoints!" << endl;
     336      performCriticalExit();
    338337    }
    339338  Log() << Verbose(0) << "." << endl;
  • src/tesselationhelpers.cpp

    r717e0c re359a8  
    187187  gamma = M_PI - SideA.Angle(&SideB);
    188188  //Log() << Verbose(3) << "INFO: alpha = " << alpha/M_PI*180. << ", beta = " << beta/M_PI*180. << ", gamma = " << gamma/M_PI*180. << "." << endl;
    189   if (fabs(M_PI - alpha - beta - gamma) > HULLEPSILON)
     189  if (fabs(M_PI - alpha - beta - gamma) > HULLEPSILON) {
    190190    eLog() << Verbose(0) << "GetCenterofCircumcircle: Sum of angles " << (alpha+beta+gamma)/M_PI*180. << " > 180 degrees by " << fabs(M_PI - alpha - beta - gamma)/M_PI*180. << "!" << endl;
     191    performCriticalExit();
     192  }
    191193
    192194  Center->Zero();
Note: See TracChangeset for help on using the changeset viewer.