Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
test
performance
adic_element_fill.c
Go to the documentation of this file.
1
#include <math.h>
2
#include <stdlib.h>
3
4
typedef
struct
{
5
int
nqp;
6
int
nnode;
7
InactiveDouble
*w, *jac, **phi, **dphi;
8
int
*gid;
9
}
ElemData
;
10
11
void
adic_element_fill
(
ElemData
* e,
12
unsigned
int
neqn,
13
const
double
* x,
14
double
* u,
15
double
* du,
16
double
* f) {
17
/* Construct element solution, derivative */
18
for
(
unsigned
int
qp=0; qp<e->
nqp
; qp++) {
19
for
(
unsigned
int
eqn=0; eqn<neqn; eqn++) {
20
u[qp*neqn+eqn] = 0.0;
21
du[qp*neqn+eqn] = 0.0;
22
for
(
unsigned
int
node=0; node<e->
nnode
; node++) {
23
u[qp*neqn+eqn] += x[node*neqn+eqn] * e->
phi
[qp][node];
24
du[qp*neqn+eqn] += x[node*neqn+eqn] * e->
dphi
[qp][node];
25
}
26
}
27
}
28
29
/* Compute sum of equations for coupling */
30
double
*s = malloc(e->
nqp
*
sizeof
(
double
));
31
for
(
unsigned
int
qp=0; qp<e->
nqp
; qp++) {
32
s[qp] = 0.0;
33
for
(
unsigned
int
eqn=0; eqn<neqn; eqn++)
34
s[qp] += u[qp*neqn+eqn]*u[qp*neqn+eqn];
35
}
36
37
/* Evaluate element residual */
38
for
(
unsigned
int
node=0; node<e->
nnode
; node++) {
39
for
(
unsigned
int
eqn=0; eqn<neqn; eqn++) {
40
unsigned
int
row = node*neqn+eqn;
41
f[row] = 0.0;
42
for
(
unsigned
int
qp=0; qp<e->
nqp
; qp++) {
43
f[row] +=
44
e->
w
[qp]*e->
jac
[qp]*(-e->
dphi
[qp][node]/(e->
jac
[qp]*e->
jac
[qp])*du[qp*neqn+eqn] + e->
phi
[qp][node]*s[qp]*
exp
(u[qp*neqn+eqn]));
45
}
46
}
47
}
48
49
free(s);
50
}
exp
exp(expr.val())
InactiveDouble
double InactiveDouble
Definition
ad_deriv.h:20
adic_element_fill
void adic_element_fill(ElemData *e, unsigned int neqn, const double *x, double *u, double *du, double *f)
Definition
adic_element_fill.c:11
ElemData
Definition
adic_element_fill.ad.c:21
ElemData::jac
InactiveDouble * jac
Definition
adic_element_fill.ad.c:24
ElemData::w
InactiveDouble * w
Definition
adic_element_fill.ad.c:24
ElemData::phi
InactiveDouble ** phi
Definition
adic_element_fill.ad.c:24
ElemData::dphi
InactiveDouble ** dphi
Definition
adic_element_fill.ad.c:24
ElemData::nqp
int nqp
Definition
adic_element_fill.ad.c:22
ElemData::nnode
int nnode
Definition
adic_element_fill.ad.c:23
Generated by
1.17.0