Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Nektar
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
88
Issues
88
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
43
Merge Requests
43
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Test Cases
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nektar
Nektar
Commits
d842b433
Commit
d842b433
authored
Jul 19, 2016
by
Kilian Lackhove
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added possiblility to define additional variables in the FUNCTION tags
parent
86c71f01
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
4 deletions
+39
-4
library/LibUtilities/BasicUtils/Equation.h
library/LibUtilities/BasicUtils/Equation.h
+31
-3
library/LibUtilities/BasicUtils/SessionReader.cpp
library/LibUtilities/BasicUtils/SessionReader.cpp
+8
-1
No files found.
library/LibUtilities/BasicUtils/Equation.h
View file @
d842b433
...
...
@@ -56,24 +56,34 @@ namespace Nektar
public:
LIB_UTILITIES_EXPORT
Equation
(
const
Equation
&
src
)
:
m_vlist
(
src
.
m_vlist
),
m_expr
(
src
.
m_expr
),
m_expr_id
(
src
.
m_expr_id
),
m_evaluator
(
src
.
m_evaluator
)
{
}
LIB_UTILITIES_EXPORT
Equation
(
const
SessionReaderSharedPtr
&
session
,
const
std
::
string
&
expr
=
""
)
:
LIB_UTILITIES_EXPORT
Equation
(
const
SessionReaderSharedPtr
&
session
,
const
std
::
string
&
expr
=
""
,
const
std
::
string
&
vlist
=
""
)
:
m_vlist
(
vlist
),
m_expr
(
expr
),
m_expr_id
(
-
1
),
m_evaluator
(
session
->
GetExpressionEvaluator
())
{
boost
::
algorithm
::
trim
(
m_expr
);
boost
::
algorithm
::
trim
(
m_vlist
);
if
(
m_vlist
.
empty
())
{
m_vlist
=
"x y z t"
;
}
try
{
if
(
!
m_expr
.
empty
())
{
m_expr_id
=
m_evaluator
.
DefineFunction
(
"x y z t"
,
m_expr
);
m_expr_id
=
m_evaluator
.
DefineFunction
(
m_vlist
,
m_expr
);
}
}
catch
(
const
std
::
runtime_error
&
e
)
...
...
@@ -171,12 +181,24 @@ namespace Nektar
const
Array
<
OneD
,
const
NekDouble
>&
z
,
const
Array
<
OneD
,
const
NekDouble
>&
t
,
Array
<
OneD
,
NekDouble
>&
result
)
const
{
std
::
vector
<
Array
<
OneD
,
const
NekDouble
>
>
points
;
points
.
push_back
(
x
);
points
.
push_back
(
y
);
points
.
push_back
(
z
);
points
.
push_back
(
t
);
Evaluate
(
points
,
result
);
}
LIB_UTILITIES_EXPORT
void
Evaluate
(
const
std
::
vector
<
Array
<
OneD
,
const
NekDouble
>
>
points
,
Array
<
OneD
,
NekDouble
>&
result
)
const
{
try
{
if
(
m_expr_id
!=
-
1
)
{
m_evaluator
.
Evaluate
(
m_expr_id
,
x
,
y
,
z
,
t
,
result
);
m_evaluator
.
Evaluate
(
m_expr_id
,
points
,
result
);
}
}
catch
(
const
std
::
runtime_error
&
e
)
...
...
@@ -208,6 +230,11 @@ namespace Nektar
return
m_expr
;
}
LIB_UTILITIES_EXPORT
std
::
string
GetVlist
(
void
)
const
{
return
m_vlist
;
}
/// Returns time spend on expression evaluation at
/// points (it does not include parse/pre-processing time).
LIB_UTILITIES_EXPORT
NekDouble
GetTime
()
const
...
...
@@ -216,6 +243,7 @@ namespace Nektar
}
private:
std
::
string
m_vlist
;
std
::
string
m_expr
;
int
m_expr_id
;
AnalyticExpressionEvaluator
&
m_evaluator
;
...
...
library/LibUtilities/BasicUtils/SessionReader.cpp
View file @
d842b433
...
...
@@ -2416,6 +2416,13 @@ namespace Nektar
domainStr
=
variable
->
Attribute
(
"DOMAIN"
);
}
// If no domain string put to 0
std
::
string
evarsStr
=
"x y z t"
;
if
(
variable
->
Attribute
(
"EVARS"
))
{
evarsStr
=
evarsStr
+
std
::
string
(
" "
)
+
variable
->
Attribute
(
"EVARS"
);
}
// Parse list of variables
std
::
vector
<
std
::
string
>
varSplit
;
std
::
vector
<
unsigned
int
>
domainList
;
...
...
@@ -2441,7 +2448,7 @@ namespace Nektar
// set expression
funcDef
.
m_expression
=
MemoryManager
<
Equation
>
::
AllocateSharedPtr
(
GetSharedThisPtr
(),
fcn
Str
);
::
AllocateSharedPtr
(
GetSharedThisPtr
(),
fcnStr
,
evars
Str
);
}
// Files are denoted by F
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment