Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

s_grad_grad(3rheolef) [debian man page]

s_grad_grad(3rheolef)						    rheolef-6.1 					     s_grad_grad(3rheolef)

NAME
s_grad_grad -- grad_grad-like operator for the Stokes stream function computation SYNOPSIS
form(const space V, const space& V, "s_grad_grad"); DESCRIPTION
Assembly the form associated to the -div(grad) variant operator on a finite element space V. The V space may be a either P1 or P2 finite element space. See also form(2) and space(2). On cartesian coordinate systems, the form coincide with the "grad_grad" one (see grad_grad(3)): / | a(u,v) = | grad(u).grad(v) dx | / Omega The stream function on tri-dimensionnal cartesian coordinate systems is such that u = curl psi div psi = 0 where u is the velocity field. Taking the curl of the first relation, using the identity: curl(curl(psi)) = -div(grad(psi)) + grad(div(psi)) and using the div(psi)=0 relation leads to: -div(grad(psi)) = curl(u) This relation leads to a variational formulation involving the the "grad_grad" and the "curl" forms (see grad_grad(3), curl(3)). In the axisymmetric case, the stream function psi is scalar ans is defined from the velocity field u=(ur,uz) by (see Batchelor, 6th ed., 1967, p 543): d psi d psi uz = (1/r) ----- and ur = - (1/r) ----- d r d r See also http://en.wikipedia.org/wiki/Stokes_stream_function . Multiplying by rot(xi)=(d xi/dr, -d xi/dz), and integrating with r dr dz, we get a well-posed variationnal problem: a(psi,xi) = b(xi,u) with / | (d psi d xi d psi d xi) a(psi,xi) = | (----- ---- + ----- ----) dr dz | ( d r d r d z d z ) / Omega and / | (d xi d xi ) b(xi,u) = | (---- ur - ---- uz) r dr dz | (d z d r ) / Omega Notice that a is symmetric definite positive, but without the 'r' weight as is is usual for axisymmetric standard forms. The b form is named "s_curl", for the Stokes curl variant of the "curl" operator (see s_curl(3)) as it is closely related to the "curl" operator, but differs by the r and 1/r factors, as: ( d (r xi) d xi ) curl(xi) = ( (1/r) -------- ; - -----) ( d r d z ) while ( d xi d xi ) s_curl(xi) = ( ---- ; - ---- ) ( d r d z ) EXAMPLE
The following piece of code build the form associated to the P1 approximation: geo g("square"); space V(g, "P1"); form a(V, V, "s_grad_grad"); SEE ALSO
form(2), space(2), grad_grad(3), grad_grad(3), curl(3), s_curl(3) rheolef-6.1 rheolef-6.1 s_grad_grad(3rheolef)

Check Out this Related Man Page

form_element(7rheolef)						    rheolef-6.1 					    form_element(7rheolef)

NAME
form_element - bilinear form on a single element SYNOPSYS
The form_element class defines functions that compute a bilinear form defined between two polynomial basis on a single geometrical element. This bilinear form is represented by a matrix. The bilinear form is designated by a string, e.g. "mass", "grad_grad", ... indicating the form. The form depends also of the geometrical element: triangle, square, tetrahedron (see geo_element(2)). IMPLEMENTATION NOTE
The form_element class is managed by (see smart_pointer(2)). This class uses a pointer on a pure virtual class form_element_rep while the effective code refers to the specific concrete derived classes: mass, grad_grad, etc. IMPLEMENTATION
template <class T, class M> class form_element : public smart_pointer<form_element_rep<T,M> > { public: // typedefs: typedef form_element_rep<T,M> rep; typedef smart_pointer<rep> base; typedef typename rep::size_type size_type; typedef typename rep::vertex_type vertex_type; typedef typename rep::space_type space_type; typedef typename rep::geo_type geo_type; typedef typename rep::coordinate_type coordinate_type; // constructors: form_element (); form_element ( std::string name, const space_type& X, const space_type& Y, const geo_type& omega, const quadrature_option_type& qopt); // accessors & modifier: void operator() (const geo_element& K, ublas::matrix<T>& m) const; virtual bool is_symmetric () const; // for scalar-weighted forms: void set_weight (const field_basic<T,M>& wh) const; bool is_weighted() const; const field_basic<T,M>& get_weight () const; // for banded level set method: bool is_on_band() const; const band_basic<T,M>& get_band() const; void set_band (const band_basic<T,M>& bh) const; }; SEE ALSO
geo_element(2), smart_pointer(2) rheolef-6.1 rheolef-6.1 form_element(7rheolef)
Man Page