SheafSystem  0.0.0.0
sec_met_e1.h
Go to the documentation of this file.
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
20 
21 #ifndef SEC_MET_E1_H
22 #define SEC_MET_E1_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_MET_ED_H
29 #include "SheafSystem/sec_met_ed.h"
30 #endif
31 
32 #ifndef MET_E1_H
33 #include "SheafSystem/met_e1.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 class sec_e1;
40 
41 //==============================================================================
42 // CLASS SEC_MET_E1
43 //==============================================================================
44 
48 class SHEAF_DLL_SPEC sec_met_e1 : public sec_met_ed
49 {
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
57  // Typedefs:
58 
62  typedef met_e1 fiber_type;
63 
68 
74  static host_type& new_host(namespace_type& xns,
75  const poset_path& xhost_path,
76  const poset_path& xschema_path,
77  const poset_path& xvector_space_path,
78  bool xauto_access);
79 
86  static host_type& standard_host(namespace_type& xns,
87  const poset_path& xbase_path,
88  const poset_path& xrep_path,
89  const std::string& xsection_suffix,
90  const std::string& xfiber_suffix,
91  bool xauto_access);
92 
93 protected:
94 
95 private:
96 
98 
99 
100  //============================================================================
102  //============================================================================
104 
105 public:
106 
110  sec_met_e1();
111 
116  sec_met_e1(const sec_rep_space* xhost, pod_index_type xhub_id);
117 
122  sec_met_e1(const sec_rep_space* xhost, const scoped_index& xid);
123 
128  sec_met_e1(const sec_rep_space* xhost, const std::string& xname);
129 
134  sec_met_e1(const namespace_poset* xnamespace,
135  const poset_path& xpath,
136  bool xauto_access = true);
140  explicit sec_met_e1(const sec_rep_space_member* xother);
141 
145  sec_met_e1(sec_rep_space* xhost,
146  section_dof_map* xdof_map = 0,
147  bool xauto_access = true);
148 
152  virtual sec_met_e1& operator=(const abstract_poset_member& xother);
153 
157  sec_met_e1& operator=(const sec_met_e1& xother);
158 
162  sec_met_e1& operator=(const met_e1& xfiber);
163 
167  sec_met_e1& operator=(const met_e1_lite& xfiber);
168 
172  ~sec_met_e1();
173 
177  virtual const fiber_type& fiber_prototype() const;
178 
179 protected:
180 
181 private:
182 
184 
185 
186  //============================================================================
188  //============================================================================
190 
191 public:
192 
193 protected:
194 
195 private:
196 
198 
199 
200  //============================================================================
202  //============================================================================
204 
205 public:
206 
207 protected:
208 
209 private:
210 
212 
213 
214  //============================================================================
216  //============================================================================
218 
219 public:
220 
221 protected:
222 
223 private:
224 
226 
227 
228  //============================================================================
230  //============================================================================
232 
233 public:
234 
235 protected:
236 
237 private:
238 
240 
241 
242  //============================================================================
244  //============================================================================
246 
247 public:
248 
249 protected:
250 
251 private:
252 
254 
255 
256  //============================================================================
258  //============================================================================
260 
261 public:
262 
263 protected:
264 
265 private:
266 
268 
269 
270  //============================================================================
272  //============================================================================
274 
275 public:
276 
277 protected:
278 
279 private:
280 
282 
283 
284  //============================================================================
286  //============================================================================
288 
289 public:
290 
294  virtual const std::string& class_name() const;
295 
299  static const std::string& static_class_name();
300 
304  virtual sec_met_e1* clone() const;
305 
311  inline sec_met_e1* clone(bool xnew_state, bool xauto_access = true) const
312  {
313  return static_cast<sec_met_e1*>(sec_met_ed::clone(xnew_state, xauto_access));
314  }
315 
316 protected:
317 
318 private:
319 
321 
322 
323  //============================================================================
325  //============================================================================
327 
328 public:
329 
333  bool fiber_is_ancestor_of(const any* xother) const;
334 
338  bool is_ancestor_of(const any* xother) const;
339 
343  bool invariant() const;
344 
345 protected:
346 
347 private:
348 
350 
351 };
352 
353 //==============================================================================
354 // NON-MEMBER FUNCTIONS
355 //==============================================================================
356 
357 namespace sec_met_algebra
358 {
359 
363 SHEAF_DLL_SPEC void lower(const sec_met_e1& xmetric, const sec_e1& xvector, sec_e1& xresult,
364  bool xauto_access);
365 
369 SHEAF_DLL_SPEC void raise(const sec_met_e1& xmetric, const sec_e1& xvector, sec_e1& xresult,
370  bool xauto_access);
371 
372 } // namespace sec_met_algebra
373 
374 } // namespace fiber_bundle
375 
376 #endif // ifndef SEC_MET_E1_H
377 
378 
SHEAF_DLL_SPEC tensor_variance lower(const tensor_variance &x0, int xi)
The variance of the lower of a tensor with variance x0 on index xi.
An abstract symmetric tensor section space of degree p.
Definition: sec_stp_space.h:47
met_e1 fiber_type
The fiber type.
Definition: sec_met_e1.h:62
The abstract map from section dof ids to section dof values of heterogeneous type.
A section of a bundle with fiber type met_e1.
Definition: sec_met_e1.h:48
The default name space; a poset which contains other posets as members.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
A metric tensor over a 1 dimensional Euclidean vector space.
Definition: met_e1.h:396
A path defined by a poset name and a member name separated by a forward slash (&#39;/&#39;). For example: "cell_definitions/triangle".
Definition: poset_path.h:48
A member of a sec_rep_space; a section.
Abstract base class with useful features for all objects.
Definition: any.h:39
sec_e1 vector_space_type
Type of underlying vector space.
Definition: sec_met_e1.h:67
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
A metric tensor over a 1 dimensional Euclidean vector space (volatile version).
Definition: met_e1.h:116
virtual sec_met_ed * clone() const
Make a new handle, no state instance of current.
Definition: sec_met_ed.cc:488
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
A section of a fiber bundle with a 1-dimensional Euclidean vector space fiber.
Definition: sec_e1.h:47
sec_met_e1 * clone(bool xnew_state, bool xauto_access=true) const
Make a new handle instance of current. Attach the new instance to a new state if xnew_state is true...
Definition: sec_met_e1.h:311
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
A section of a bundle with fiber type met_ed.
Definition: sec_met_ed.h:46
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61