00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _FRAMETL_CDD1_LOCALH
00011 #define _FRAMETL_CDD1_LOCALH
00012
00013 #include <set>
00014 #include <algebra/infinite_vector.h>
00015 #include <adaptive/compression.h>
00016
00017
00018
00022 namespace FrameTL
00023 {
00024
00190 template <class PROBLEM>
00191 void CDD1_LOCAL_SOLVE(const PROBLEM& P,
00192 const int patch,
00193 const double epsilon,
00194 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& guess,
00195 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& u_epsilon,
00196 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& v_k,
00197 const int jmax = 99,
00198 const CompressionStrategy strategy = St04a);
00199 template <class PROBLEM>
00200 void CDD1_LOCAL_SOLVE(const PROBLEM& P, const int patch,
00201 const double epsilon,
00202 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& guess,
00203 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& u_epsilon,
00204 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& u_k_very_sparse,
00205 const double c1,
00206 const double c2,
00207 const int jmax = 99,
00208 const CompressionStrategy strategy = St04a);
00209 typedef struct {
00210 double c1, c2;
00211 double kappa;
00212 double gamma;
00213 double F;
00214 double q0, q1, q2, q3, q4;
00215 unsigned int K;
00216 double theta, theta_bar;
00217 } CDD1Parameters;
00218
00219 template <class PROBLEM>
00220 void NPROG(const PROBLEM& P,
00221 const int patch,
00222 const CDD1Parameters& params,
00223 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& F,
00224 const set<typename PROBLEM::WaveletBasis::Index>& Lambda,
00225 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& v,
00226 const double delta,
00227 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& v_hat,
00228 set<typename PROBLEM::WaveletBasis::Index>& Lambda_hat,
00229 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& r_hat,
00230 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& u_Lambda_k,
00231 const int jmax = 99,
00232 const CompressionStrategy strategy = St04a);
00233
00234 template <class PROBLEM>
00235 void GALERKIN(const PROBLEM& P,
00236 const int patch,
00237 const CDD1Parameters& params,
00238 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& F,
00239 const set<typename PROBLEM::WaveletBasis::Index>& Lambda,
00240 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& v,
00241 const double delta,
00242 const double eta,
00243 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& ubar,
00244 const int jmax = 99,
00245 const CompressionStrategy strategy = St04a);
00246
00247 template <class PROBLEM>
00248 void NGROW(const PROBLEM& P,
00249 const int patch,
00250 const CDD1Parameters& params,
00251 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& F,
00252 const set<typename PROBLEM::WaveletBasis::Index>& Lambda,
00253 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& ubar,
00254 const double xi1,
00255 const double xi2,
00256 set<typename PROBLEM::WaveletBasis::Index>& Lambda_tilde,
00257 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& r,
00258 const int jmax = 99,
00259 const CompressionStrategy strategy = St04a);
00260
00261 template <class PROBLEM>
00262 void INRESIDUAL(const PROBLEM& P,
00263 const int patch,
00264 const CDD1Parameters& params,
00265 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& F,
00266 const set<typename PROBLEM::WaveletBasis::Index>& Lambda,
00267 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& v,
00268 const double eta1,
00269 const double eta2,
00270 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& r,
00271 const int jmax = 99,
00272 const CompressionStrategy strategy = St04a);
00273
00274 template <class PROBLEM>
00275 void NRESIDUAL(const PROBLEM& P,
00276 const int patch,
00277 const CDD1Parameters& params,
00278 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& F,
00279 const set<typename PROBLEM::WaveletBasis::Index>& Lambda,
00280 const InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& v,
00281 const double eta1,
00282 const double eta2,
00283 InfiniteVector<double, typename PROBLEM::WaveletBasis::Index>& r,
00284 set<typename PROBLEM::WaveletBasis::Index>& Lambda_tilde,
00285 const int jmax = 99,
00286 const CompressionStrategy strategy = St04a);
00287 }
00288
00289 #include <cdd1_local.cpp>
00290
00291 #endif