QCPm3.cpp

Go to the documentation of this file.
00001 //*****************************************************************************//
00002 //                                                                             //
00003 //   Copyright (c) 2001                                                        //
00004 //      INRIA                                                                  //
00005 //      54600 VILLERS LES NANCY                                                //
00006 //      France                                                                 //
00007 //                                                                             //
00008 //*****************************************************************************//
00009 //                                                                             //
00010 //               *** NOTICE OF PROPRIETARY INFORMATION ***                     //
00011 //                                                                             //
00012 // The information contained in this file is considered proprietary and the    //
00013 // exclusive property of  INRIA. This information may not be disclosed,        //
00014 // duplicated or used, in whole or in part, for  any purpose  whatsoever       //
00015 // without express written authorization from INRIA                            //
00016 //                                                                             //
00017 //*****************************************************************************//
00018 
00019 
00020 #include "QCPm3.hpp"
00021 #include "QCPm3Param.hpp"
00022 
00023 
00024 
00025 
00029 QCPm3::QCPm3 (const int& nbAOsp, const int& nbAOspd) :
00030   QCMndo(nbAOsp, nbAOspd)
00031 {}
00032 
00033 
00034 
00035 
00039 QCPm3::~QCPm3 (void) 
00040 {}
00041 
00042 
00043 
00044 
00045 
00046 
00050 template <class TPParam>
00051 QCPm3T<TPParam>::QCPm3T () :
00052   QCPm3( (TPParam::NB_S_ORB + TPParam::NB_P_ORB),
00053          (TPParam::NB_S_ORB + TPParam::NB_P_ORB + TPParam::NB_D_ORB) )
00054 {}
00055 
00056 
00057 
00058 
00062 template <class TPParam>
00063 QCPm3T<TPParam>::~QCPm3T () 
00064 {}
00065 
00066 
00067 
00068 
00073 template <class TPParam>
00074 QCFloat 
00075 QCPm3T<TPParam>::exponentialExpansion(const TPParam* QCRestrict parameterA, 
00076                                       const TPParam* QCRestrict parameterB,
00077                                       const QCFloat& rAB) {
00078   register QCFloat expansionVal = QC_ZERO;
00079   register QCFloat interExp, interExp2;
00080   register int i;
00081   
00082   for (i = 0; i < QCPm3Param::NB_TERM_REP_DEVEL; ++i) {
00083     interExp = QCExp ( ( -parameterA->getBRepDevel(i) * 
00084                          QCPow<2>(rAB - parameterA->getCRepDevel(i)) ) );
00085     if (interExp != QC_ZERO) {
00086       expansionVal += parameterA->getARepDevel(i) * interExp;
00087     }
00088     interExp2 = QCExp( ( -parameterB->getBRepDevel(i) * 
00089                          QCPow<2>(rAB - parameterB->getCRepDevel(i)) ) );
00090     if (interExp2 != QC_ZERO) {
00091       expansionVal += parameterB->getARepDevel(i) * interExp2;
00092     }
00093   }
00094 
00095   return expansionVal;
00096 }
00097 
00098 
00099 
00100 
00104 template <class TPParam>
00105 QCFloat 
00106 QCPm3T<TPParam>::dExponentialExpansion(const TPParam* QCRestrict parameterA, 
00107                                        const TPParam* QCRestrict parameterB, 
00108                                        const QCFloat& rAB) {
00109   register QCFloat dExpansionVal = QC_ZERO;
00110   QCFloat rABmcIA, rABmcIB;
00111   register QCFloat interExp, interExp2;
00112   register int i;
00113   
00114   for (i = 0; i < QCPm3Param::NB_TERM_REP_DEVEL; ++i) {
00115     rABmcIA = rAB - parameterA->getCRepDevel(i);
00116     interExp =  QCExp(-parameterA->getBRepDevel(i) * QCPow<2>(rABmcIA) );
00117     if (interExp != QC_ZERO) {
00118       dExpansionVal += ( parameterA->getARepDevel(i) * 
00119                          (-QC_TWO * parameterA->getBRepDevel(i) * rABmcIA) * 
00120                          interExp );
00121     }
00122     rABmcIB = rAB - parameterB->getCRepDevel(i);
00123     interExp2 = QCExp(-parameterB->getBRepDevel(i) * QCPow<2>(rABmcIB) );
00124     if (interExp2 != QC_ZERO) {
00125       dExpansionVal += ( parameterB->getARepDevel(i) * 
00126                          (-QC_TWO * parameterB->getBRepDevel(i) * rABmcIB) * 
00127                          interExp2 );
00128     }
00129   }
00130 
00131   return dExpansionVal;
00132 }
00133 
00134 
00135 
00136 
00137 
00138 
00139 
00140 
00141 
00145 template class QCPm3T<QCPm3Param>;

Generated on Sat Jan 28 21:07:30 2006 for QC++ by  doxygen 1.4.4