Free Electron
ScalarFieldI.h
Go to the documentation of this file.
1 /* Copyright (C) 2003-2021 Free Electron Organization
2  Any use of this software requires a license. If a valid license
3  was not distributed with this file, visit freeelectron.org. */
4 
5 /** @file */
6 
7 #ifndef __spatial_ScalarFieldI_h__
8 #define __spatial_ScalarFieldI_h__
9 
10 #include "math/math.h"
11 
12 namespace fe
13 {
14 namespace ext
15 {
16 
17 /** Scalar Field */
18 class FE_DL_EXPORT ScalarFieldI : virtual public Component
19 {
20  public:
21 virtual Real sample( const SpatialVector &a_location) = 0;
22 virtual void gradient( SpatialVector &a_gradient,
23  const SpatialVector &a_location) = 0;
24 virtual Real volume( void) = 0;
25 virtual void set( Real a_value) = 0;
26 virtual void set( const SpatialVector &a_location,
27  Real a_value) = 0;
28 virtual void add( const SpatialVector &a_location,
29  Real a_value) = 0;
30 virtual void radialSet( const SpatialVector &a_location,
31  const SpatialVector &a_radius,
32  Real a_value) = 0;
33 virtual sp<SpaceI> space( void) = 0;
34 };
35 
36 } /* namespace ext */
37 } /* namespace fe */
38 
39 #endif /* __spatial_ScalarFieldI_h__ */
40 
kernel
Definition: namespace.dox:3
Base for all interfacable components.
Definition: Component.h:20
Scalar Field.
Definition: ScalarFieldI.h:18