/[escript]/trunk/escript/src/Data.cpp
ViewVC logotype

Diff of /trunk/escript/src/Data.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2037 by jfenwick, Thu Nov 13 06:17:12 2008 UTC revision 2081 by caltinay, Fri Nov 21 01:28:31 2008 UTC
# Line 26  Line 26 
26  #include "EscriptParams.h"  #include "EscriptParams.h"
27    
28  extern "C" {  extern "C" {
29  #include "escript/blocktimer.h"  #include "esysUtils/blocktimer.h"
30  }  }
31    
32  #include <fstream>  #include <fstream>
# Line 1324  Data::tanh() const Line 1324  Data::tanh() const
1324  Data  Data
1325  Data::erf() const  Data::erf() const
1326  {  {
1327  #ifdef _WIN32  #if defined (_WIN32) && !defined(__INTEL_COMPILER)
1328    throw DataException("Error - Data:: erf function is not supported on _WIN32 platforms.");    throw DataException("Error - Data:: erf function is not supported on _WIN32 platforms.");
1329  #else  #else
1330    if (isLazy())    if (isLazy())
# Line 1344  Data::asinh() const Line 1344  Data::asinh() const
1344      DataLazy* c=new DataLazy(borrowDataPtr(),ASINH);      DataLazy* c=new DataLazy(borrowDataPtr(),ASINH);
1345      return Data(c);      return Data(c);
1346    }    }
1347  #ifdef _WIN32  #if defined (_WIN32) && !defined(__INTEL_COMPILER)
1348    return C_TensorUnaryOperation(*this, escript::asinh_substitute);    return C_TensorUnaryOperation(*this, escript::asinh_substitute);
1349  #else  #else
1350    return C_TensorUnaryOperation(*this, ::asinh);    return C_TensorUnaryOperation(*this, ::asinh);
# Line 1359  Data::acosh() const Line 1359  Data::acosh() const
1359      DataLazy* c=new DataLazy(borrowDataPtr(),ACOSH);      DataLazy* c=new DataLazy(borrowDataPtr(),ACOSH);
1360      return Data(c);      return Data(c);
1361    }    }
1362  #ifdef _WIN32  #if defined (_WIN32) && !defined(__INTEL_COMPILER)
1363    return C_TensorUnaryOperation(*this, escript::acosh_substitute);    return C_TensorUnaryOperation(*this, escript::acosh_substitute);
1364  #else  #else
1365    return C_TensorUnaryOperation(*this, ::acosh);    return C_TensorUnaryOperation(*this, ::acosh);
# Line 1374  Data::atanh() const Line 1374  Data::atanh() const
1374      DataLazy* c=new DataLazy(borrowDataPtr(),ATANH);      DataLazy* c=new DataLazy(borrowDataPtr(),ATANH);
1375      return Data(c);      return Data(c);
1376    }    }
1377  #ifdef _WIN32  #if defined (_WIN32) && !defined(__INTEL_COMPILER)
1378    return C_TensorUnaryOperation(*this, escript::atanh_substitute);    return C_TensorUnaryOperation(*this, escript::atanh_substitute);
1379  #else  #else
1380    return C_TensorUnaryOperation(*this, ::atanh);    return C_TensorUnaryOperation(*this, ::atanh);
# Line 1894  Data::calc_minGlobalDataPoint(int& ProcN Line 1894  Data::calc_minGlobalDataPoint(int& ProcN
1894    double next,local_min;    double next,local_min;
1895    int local_lowi=0,local_lowj=0;        int local_lowi=0,local_lowj=0;    
1896    
1897    #pragma omp parallel private(next,local_min,local_lowi,local_lowj)    #pragma omp parallel firstprivate(local_lowi,local_lowj) private(next,local_min)
1898    {    {
1899      local_min=min;      local_min=min;
1900      #pragma omp for private(i,j) schedule(static)      #pragma omp for private(i,j) schedule(static)
# Line 1921  Data::calc_minGlobalDataPoint(int& ProcN Line 1921  Data::calc_minGlobalDataPoint(int& ProcN
1921      next = temp.getDataPoint(lowi,lowj);      next = temp.getDataPoint(lowi,lowj);
1922      int lowProc = 0;      int lowProc = 0;
1923      double *globalMins = new double[get_MPISize()+1];      double *globalMins = new double[get_MPISize()+1];
1924      int error = MPI_Gather ( &next, 1, MPI_DOUBLE, globalMins, 1, MPI_DOUBLE, 0, get_MPIComm() );      int error;
1925        error = MPI_Gather ( &next, 1, MPI_DOUBLE, globalMins, 1, MPI_DOUBLE, 0, get_MPIComm() );
1926    
1927      if( get_MPIRank()==0 ){      if( get_MPIRank()==0 ){
1928          next = globalMins[lowProc];          next = globalMins[lowProc];
# Line 2512  escript::C_GeneralTensorProduct(Data& ar Line 2513  escript::C_GeneralTensorProduct(Data& ar
2513    // SM is the product of the last axis_offset entries in arg_0.getShape().    // SM is the product of the last axis_offset entries in arg_0.getShape().
2514    
2515    // deal with any lazy data    // deal with any lazy data
2516    if (arg_0.isLazy()) {arg_0.resolve();}  //   if (arg_0.isLazy()) {arg_0.resolve();}
2517    if (arg_1.isLazy()) {arg_1.resolve();}  //   if (arg_1.isLazy()) {arg_1.resolve();}
2518      if (arg_0.isLazy() || arg_1.isLazy())
2519      {
2520        DataLazy* c=new DataLazy(arg_0.borrowDataPtr(), arg_1.borrowDataPtr(), PROD, axis_offset,transpose);
2521        return Data(c);
2522      }
2523    
2524    // Interpolate if necessary and find an appropriate function space    // Interpolate if necessary and find an appropriate function space
2525    Data arg_0_Z, arg_1_Z;    Data arg_0_Z, arg_1_Z;
# Line 2923  Data::borrowReadyPtr() const Line 2929  Data::borrowReadyPtr() const
2929  std::string  std::string
2930  Data::toString() const  Data::toString() const
2931  {  {
2932      if (!m_data->isEmpty() &&      if (!m_data->isEmpty() &&
2933      getNumDataPoints()*getDataPointSize()>escriptParams.getInt("TOO_MANY_LINES"))      !m_data->isLazy() &&
2934        getLength()>escriptParams.getInt("TOO_MANY_LINES"))
2935      {      {
2936      stringstream temp;      stringstream temp;
2937      temp << "Summary: inf="<< inf_const() << " sup=" << sup_const() << " data points=" << getNumDataPoints();      temp << "Summary: inf="<< inf_const() << " sup=" << sup_const() << " data points=" << getNumDataPoints();

Legend:
Removed from v.2037  
changed lines
  Added in v.2081

  ViewVC Help
Powered by ViewVC 1.1.26