예제 #1
0
cMultiContEQF  cParamIFDistStdPhgr::StdContraintes()
{
  cMultiContEQF aRes = cParamIFDistRadiale::StdContraintes();
  double aR =  mDRF.RMax();


  if (! mParamDecentreFree)
  {
      AddFoncRappInit(aRes,NbInc()-4,NbInc()-2,mTol_Dec_PhgStdPIF/ElSquare(aR));
  }
  if (! mParamAffineFree)
  {
      AddFoncRappInit(aRes,NbInc()-2,NbInc(),mTol_Aff_PhgStdPIF/aR);
  }
  return aRes;
}
예제 #2
0
void cParamIntrinsequeFormel::AddRapViscosite(double aTol)
{
    for (int aK=0 ; aK<NbInc() ; aK++)
    {
        AddRappViscosite
        (
             "cParamIntrinsequeFormel::AddViscosite",
             true,
             aK,
             aTol,
             true
        );
   }
}
예제 #3
0
cMultiContEQF  cPIF_Bilin::StdContraintes()
{
   cMultiContEQF aRes;
   if (mFiged)
   {
        AddFoncRappInit(aRes,0,NbInc(),cContrainteEQF::theContrStricte);
   }
   else
   {
        AddFoncRappInit(aRes,mIndFrozen0,mIndFrozen0+2,cContrainteEQF::theContrStricte);
        AddFoncRappInit(aRes,mIndFrozen1,mIndFrozen1+2,cContrainteEQF::theContrStricte);
   }

   return aRes;
}
예제 #4
0
//#### CEST LA
REAL cElemEqFormelle::AddRappViscosite
     (
          const std::string  & aContexte,
          bool OnCur,
          int aK,
          double   aTol,
          bool     AdEq
     )
{
    if ((aK<0) || (aK>= NbInc()))
    {
        std::cout << "In Contexte " << aContexte << "\n";
        std::cout << "K= " << aK << " INTERV= [0," <<  NbInc()<< "]\n";
        ELISE_ASSERT(false,"Bad indexe for cElemEqFormelle::AddRappViscosite");
    }
    double aVCur = OnCur ? mSet.Alloc().GetVar(aK+mNumInc0) : mValsInit[aK];
    tContFcteur aPlus =  FoncRapp(aK,aK+1,&aVCur-aK);

    double aPds = 1/ElSquare(aTol);
    double  aRes =  AdEq                                        ?
                    mSet.AddEqFonctToSys(aPlus[0],aPds,false) :
                    mSet.ResiduSigne(aPlus[0])                ;
    return aPds* ElSquare(aRes);
}