X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Distribution.cxx;h=f2e591f342928e4b2cb4d414d94a0a1f88956e8c;hp=6cfb7559784da6f7d36561980c09c3a634ecea29;hb=127d2277c6a516d0e9fadd77b4ef0b0c6286cf17;hpb=9d11375af40826e967ab2c3bcb77d1f9d439c90c diff --git a/src/StdMeshers/StdMeshers_Distribution.cxx b/src/StdMeshers/StdMeshers_Distribution.cxx index 6cfb75597..f2e591f34 100644 --- a/src/StdMeshers/StdMeshers_Distribution.cxx +++ b/src/StdMeshers/StdMeshers_Distribution.cxx @@ -1,31 +1,30 @@ -// SMESH StdMeshers : implementaion of point distribution algorithm +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// SMESH StdMeshers : implementaion of point distribution algorithm // File : StdMeshers_Distribution.cxx // Author : Alexandre SOLOVYOV // Module : SMESH // $Header$ - +// #include "StdMeshers_Distribution.hxx" #include @@ -39,10 +38,10 @@ #ifdef NO_CAS_CATCH #include -#else -#include "CASCatch.hxx" #endif +using namespace std; + Function::Function( const int conv ) : myConv( conv ) { @@ -56,18 +55,12 @@ bool Function::value( const double, double& f ) const { bool ok = true; if (myConv == 0) { -#ifdef NO_CAS_CATCH try { +#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#else - CASCatch_TRY { #endif f = pow( 10., f ); -#ifdef NO_CAS_CATCH } catch(Standard_Failure) { -#else - } CASCatch_CATCH(Standard_Failure) { -#endif Handle(Standard_Failure) aFail = Standard_Failure::Caught(); f = 0.0; ok = false; @@ -117,6 +110,12 @@ bool FunctionTable::value( const double t, double& f ) const if( !findBounds( t, i1, i2 ) ) return false; + if( i1==i2 ) { + f = myData[ 2*i1+1 ]; + Function::value( t, f ); + return true; + } + double x1 = myData[2*i1], y1 = myData[2*i1+1], x2 = myData[2*i2], y2 = myData[2*i2+1]; @@ -140,8 +139,10 @@ double FunctionTable::integral( const int i, const double d ) const { double f1,f2, res = 0.0; if( value( myData[2*i]+d, f1 ) ) - if(!value(myData[2*i], f2)) + if(!value(myData[2*i], f2)) { f2 = myData[2*i+1]; + Function::value( 1, f2 ); + } res = (f2+f1) * d / 2.0; return res; } @@ -169,7 +170,7 @@ bool FunctionTable::findBounds( const double x, int& x_ind_1, int& x_ind_2 ) con } for( int i=0; iProcess( ( Standard_CString )str ); -#ifdef NO_CAS_CATCH } catch(Standard_Failure) { -#else - } CASCatch_CATCH(Standard_Failure) { -#endif Handle(Standard_Failure) aFail = Standard_Failure::Caught(); ok = false; } @@ -228,18 +223,12 @@ bool FunctionExpr::value( const double t, double& f ) const ( ( TColStd_Array1OfReal& )myValues ).ChangeValue( 1 ) = t; bool ok = true; -#ifdef NO_CAS_CATCH try { +#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#else - CASCatch_TRY { #endif f = myExpr->Expression()->Evaluate( myVars, myValues ); -#ifdef NO_CAS_CATCH } catch(Standard_Failure) { -#else - } CASCatch_CATCH(Standard_Failure) { -#endif Handle(Standard_Failure) aFail = Standard_Failure::Caught(); f = 0.0; ok = false; @@ -252,21 +241,15 @@ bool FunctionExpr::value( const double t, double& f ) const double FunctionExpr::integral( const double a, const double b ) const { double res = 0.0; -#ifdef NO_CAS_CATCH try { +#ifdef NO_CAS_CATCH OCC_CATCH_SIGNALS; -#else - CASCatch_TRY { #endif math_GaussSingleIntegration _int ( *static_cast( const_cast (this) ), a, b, 20 ); if( _int.IsDone() ) res = _int.Value(); -#ifdef NO_CAS_CATCH } catch(Standard_Failure) { -#else - } CASCatch_CATCH(Standard_Failure) { -#endif res = 0.0; MESSAGE( "Exception in integral calculating" ); }