From abb8e828017c6b6632c57dc2b895927fdee43925 Mon Sep 17 00:00:00 2001 From: David L Parkhurst Date: Fri, 20 Jul 2012 00:20:16 +0000 Subject: [PATCH] Checking in OpenMP pragmas in IPhreeqcLib.cpp. Working on Reaction_module, IPhreeqcPhast, and IPhreeqc interactions. Runs through initial phreeqc calculation. git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@6800 1feff8c3-07ed-0310-ac33-dd36852eb9cd --- IPhreeqcLib.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/IPhreeqcLib.cpp b/IPhreeqcLib.cpp index d6cacc7f..395ed9aa 100644 --- a/IPhreeqcLib.cpp +++ b/IPhreeqcLib.cpp @@ -899,9 +899,13 @@ int IPhreeqcLib::CreateIPhreeqc(void) { int n = IPQ_OUTOFMEMORY; + IPhreeqc* IPhreeqcPtr; try { - IPhreeqc* IPhreeqcPtr = new IPhreeqc; + #pragma omp critical(IPhreeqcLib) + { + IPhreeqcPtr = new IPhreeqc; + } n = IPhreeqcPtr->Index; } catch(...) @@ -919,8 +923,11 @@ IPhreeqcLib::DestroyIPhreeqc(int id) { if (IPhreeqc *ptr = IPhreeqcLib::GetInstance(id)) { - delete ptr; - retval = IPQ_OK; + #pragma omp critical(IPhreeqcLib) + { + delete ptr; + } + retval = IPQ_OK; } } return retval; @@ -929,8 +936,14 @@ IPhreeqcLib::DestroyIPhreeqc(int id) IPhreeqc* IPhreeqcLib::GetInstance(int id) { - std::map::iterator it = IPhreeqc::Instances.find(size_t(id)); - if (it != IPhreeqc::Instances.end()) + std::map::iterator it; + bool found=false; + #pragma omp critical(IPhreeqcLib) + { + it = IPhreeqc::Instances.find(size_t(id)); + found = (it != IPhreeqc::Instances.end()); + } + if (found) { return (*it).second; }