From 7ac7bdfbac6e1eebef7c6313bfafa4faed113e5e Mon Sep 17 00:00:00 2001 From: "Halvor M. Nilsen" Date: Thu, 13 Oct 2011 13:52:38 +0200 Subject: [PATCH] moved dune definishins for dune to porsol/common --- examples/ImplicitTransportDefs.hpp | 217 ----------------------------- 1 file changed, 217 deletions(-) delete mode 100644 examples/ImplicitTransportDefs.hpp diff --git a/examples/ImplicitTransportDefs.hpp b/examples/ImplicitTransportDefs.hpp deleted file mode 100644 index 998c4104..00000000 --- a/examples/ImplicitTransportDefs.hpp +++ /dev/null @@ -1,217 +0,0 @@ - -#ifndef OPENRS_IMPLICITTRANSPORTDEFS_HEADER -#define OPENRS_IMPLICITTRANSPORTDEFS_HEADER - -#include -#include -#include -#include -#include -#include -#if 0 -template -Ostream& -operator<<(Ostream& os, const Collection& c) -{ - typedef typename Collection::value_type VT; - - os << "[ "; - std::copy(c.begin(), c.end(), ::std::ostream_iterator(os, " ")); - os << "]"; - - return os; -} -#endif -namespace Opm{ -template -class MaxNormStl { - public: - static double - norm(const Vector& v) { - return ImplicitTransportDefault::AccumulationNorm ::norm(v); - } -}; - -template -class MaxNormDune { -public: - static double - norm(const Vector& v) { - return v.infinity_norm(); - } -}; - -template -class ReservoirState { -public: - ReservoirState(const grid_t* g) - : press_ (g->number_of_cells), - fpress_(g->number_of_faces), - flux_ (g->number_of_faces), - sat_ (np * g->number_of_cells) - {} - - ::std::vector& pressure () { return press_ ; } - ::std::vector& facepressure() { return fpress_; } - ::std::vector& faceflux () { return flux_ ; } - ::std::vector& saturation () { return sat_ ; } - - const ::std::vector& faceflux () const { return flux_; } - const ::std::vector& saturation () const { return sat_ ; } - -private: - ::std::vector press_ ; - ::std::vector fpress_; - ::std::vector flux_ ; - ::std::vector sat_ ; -}; -class Rock { -public: - Rock(::std::size_t nc, ::std::size_t dim) - : dim_ (dim ), - perm_(nc * dim * dim), - poro_(nc ) {} - - const ::std::vector& perm() const { return perm_; } - const ::std::vector& poro() const { return poro_; } - - void - perm_homogeneous(double k) { - setVector(0.0, perm_); - - const ::std::size_t d2 = dim_ * dim_; - - for (::std::size_t c = 0, nc = poro_.size(); c < nc; ++c) { - for (::std::size_t i = 0; i < dim_; ++i) { - perm_[c*d2 + i*(dim_ + 1)] = k; - } - } - } - - void - poro_homogeneous(double phi) { - setVector(phi, poro_); - } - -private: - void - setVector(double x, ::std::vector& v) { - ::std::fill(v.begin(), v.end(), x); - } - - ::std::size_t dim_ ; - ::std::vector perm_; - ::std::vector poro_; -}; - -//template -class TwophaseFluidWrapper { -public: - TwophaseFluidWrapper(const Dune::ReservoirPropertyCapillary<3>& r) - : r_(r) - {} - //TwophaseFluidWrapper(){} - //TwophaseFluidWrapper(TwophaseFluidWrapper){} - - /* - void init(const Dune::ReservoirPropertyCapillary<3>& r) - { - r_ = r; - } - */ - - template - void - mobility(int c, const Sat& s, Mob& mob, DMob& dmob) const { - const double s1 = s[0]; - - r_.phaseMobilities (c, s1, mob ); - r_.phaseMobilitiesDeriv(c, s1, dmob); - } - - double density(int p) const { - if (p == 0) { - return r_.densityFirstPhase(); - } else { - return r_.densitySecondPhase(); - } - } - - -private: - Dune::ReservoirPropertyCapillary<3> r_; -}; -class TransportLinearSolver { -public: - typedef Dune::FieldVector ScalarVectorBlockType; - typedef Dune::FieldMatrix ScalarMatrixBlockType; - - typedef Dune::BlockVector ScalarBlockVector; - typedef Dune::BCRSMatrix ScalarBCRSMatrix; - void - solve(const ScalarBCRSMatrix& A, - const ScalarBlockVector& b, - ScalarBlockVector& x) { - - Dune::MatrixAdapter opA(A); - - Dune::SeqILU0 precond(A, 1.0); - - int maxit = A.N(); - double tol = 5.0e-7; - int verb = 1; - - Dune::BiCGSTABSolver - solver(opA, precond, tol, maxit, verb); - - ScalarBlockVector bcpy(b); - Dune::InverseOperatorResult res; - solver.apply(x, bcpy, res); - } -}; -class TransportSource { -public: - TransportSource() : nsrc(0) {} - - int nsrc ; - ::std::vector< int > cell ; - ::std::vector pressure ; - ::std::vector flux ; - ::std::vector saturation; -}; -template -void -append_transport_source(int c, double p, double v, const Arr& s, - TransportSource& src) -{ - src.cell .push_back(c); - src.pressure .push_back(p); - src.flux .push_back(v); - src.saturation.insert(src.saturation.end(), - s.begin(), s.end()); - ++src.nsrc; -} -void -compute_porevolume(const grid_t* g, - const Rock& rock, - std::vector& porevol) -{ - const ::std::vector& poro = rock.poro(); - - assert (poro.size() == (::std::size_t)(g->number_of_cells)); - - porevol.resize(rock.poro().size()); - - ::std::transform(poro.begin(), poro.end(), - g->cell_volumes, - porevol.begin(), - ::std::multiplies()); -} -} -#endif // /OPENRS_IMPLICITTRANSPORTDEFS_HEADER