42 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
48 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
52 : myPtrK( 0 ), myPtrFct( 0 ), myPtrEmbedder( 0 )
55 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
59 : myPtrK( other.myPtrK ),
60 myPtrFct( other.myPtrFct ),
61 myPtrEmbedder( other.myPtrEmbedder )
64 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
79 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
90 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
99 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
105 ASSERT( myPtrEmbedder != 0 );
106 return myPtrEmbedder->embed( p );
109 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
115 return this->operator()( cell );
118 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
124 ASSERT( this->isValid() );
126 Point p1( myPtrK->uCoords( cell ) );
129 for (
typename KSpace::DirIterator qit = myPtrK->uOrthDirs( cell );
134 Point p2( p1 ); --p2[ k ];
137 x1[ k ] -= y1 * ( x2[ k ] - x1[ k ] ) / ( y2 - y1 );
142 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
148 ASSERT( this->isValid() );
150 Point p1( myPtrK->sCoords( scell ) );
153 for (
typename KSpace::DirIterator qit = myPtrK->sOrthDirs( scell );
158 Point p2( p1 ); --p2[ k ];
161 x1[ k ] -= y1 * ( x2[ k ] - x1[ k ] ) / ( y2 - y1 );
166 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
173 grad = myPtrFct->gradient( x );
176 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
182 x = embedCell( cell );
183 grad = myPtrFct->gradient( x );
186 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
192 x = embedSCell( scell );
193 grad = myPtrFct->gradient( x );
205 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
211 out <<
"[ImplicitFunctionDiff1LinearCellEmbedder]";
218 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
224 return ( myPtrK != 0 ) && ( myPtrFct != 0 ) && ( myPtrEmbedder != 0 );
232 template <
typename TKSpace,
typename TImplicitFunctionDiff1,
typename TEmbedder >
238 object.selfDisplay( out );