Extension: Geometries
#include "dg/geometries/geometries.h"
generator.h
Go to the documentation of this file.
1#pragma once
2
3namespace dg
4{
5namespace geo
6{
7
18template<class real_type>
20{
22 real_type width() const{return do_width();}
24 real_type height() const{return do_height();}
26 bool isOrthogonal() const { return do_isOrthogonal(); }
27
43 const thrust::host_vector<real_type>& zeta1d,
44 const thrust::host_vector<real_type>& eta1d,
45 thrust::host_vector<real_type>& x,
46 thrust::host_vector<real_type>& y,
47 thrust::host_vector<real_type>& zetaX,
48 thrust::host_vector<real_type>& zetaY,
49 thrust::host_vector<real_type>& etaX,
50 thrust::host_vector<real_type>& etaY) const
51 {
52 unsigned size = zeta1d.size()*eta1d.size();
53 x.resize(size), y.resize(size);
54 zetaX = zetaY = etaX = etaY =x ;
55 do_generate( zeta1d, eta1d, x,y,zetaX,zetaY,etaX,etaY);
56 }
57
63 virtual aRealGenerator2d* clone() const=0;
65
66 protected:
72 aRealGenerator2d& operator=(const aRealGenerator2d& ){ return *this; }
73 private:
74 virtual void do_generate(
75 const thrust::host_vector<real_type>& zeta1d,
76 const thrust::host_vector<real_type>& eta1d,
77 thrust::host_vector<real_type>& x,
78 thrust::host_vector<real_type>& y,
79 thrust::host_vector<real_type>& zetaX,
80 thrust::host_vector<real_type>& zetaY,
81 thrust::host_vector<real_type>& etaX,
82 thrust::host_vector<real_type>& etaY) const = 0;
83 virtual real_type do_width() const =0;
84 virtual real_type do_height() const =0;
85 virtual bool do_isOrthogonal()const{return false;}
86
87
88};
90
91}//namespace geo
92}//namespace dg
The abstract generator base class.
Definition: generator.h:20
aRealGenerator2d & operator=(const aRealGenerator2d &)
return *this
Definition: generator.h:72
virtual ~aRealGenerator2d()
Definition: generator.h:64
virtual aRealGenerator2d * clone() const =0
Abstract clone method that returns a copy on the heap.
aRealGenerator2d()
empty
Definition: generator.h:68
void generate(const thrust::host_vector< real_type > &zeta1d, const thrust::host_vector< real_type > &eta1d, thrust::host_vector< real_type > &x, thrust::host_vector< real_type > &y, thrust::host_vector< real_type > &zetaX, thrust::host_vector< real_type > &zetaY, thrust::host_vector< real_type > &etaX, thrust::host_vector< real_type > &etaY) const
Generate grid points and elements of the Jacobian.
Definition: generator.h:42
bool isOrthogonal() const
sparsity pattern for metric
Definition: generator.h:26
aRealGenerator2d(const aRealGenerator2d &)
empty
Definition: generator.h:70
real_type width() const
length in of the computational space
Definition: generator.h:22
real_type height() const
length in of the computational space
Definition: generator.h:24