       Implementing finite elements in Mma ?

• To: mathgroup at smc.vnet.net
• Subject: [mg7073] Implementing finite elements in Mma ?
• From: jost at no-junk-mail.fr (Christian Jost)
• Date: Sun, 4 May 1997 21:59:34 -0400 (EDT)
• Organization: Universite Paris-Sud XI
• Sender: owner-wri-mathgroup at wolfram.com

```I try to test some simple (one-dimensional) finite-element algorithms in
Mathematica, and havn't found yet a way to program them in a way to keep
them symbolically integratable. The function below calculates the value of
the i-th linear finite element phi_i at time t based on the array of
timevalues that defines where the respective finite elements should be 1
or 0 (phi_i(t_j) = delta_ij (kronecker)). But the way its implemented only
allows for numerical integration. Any idea?

Thanks, Christian.

numberQ[x_] := NumberQ[N[x]]

BasisFunctions[i_Integer, t_Real,timeValue:{_?numberQ..}] :=
Module[{posOfT,sublist,len,value},
len = Length[timeValue];
If[Length[(sublist= Position[(# < t)& /@timeValue,False])] > 0,
posOfT = sublist[[1,1]];, posOfT = 0;];
Which[t<timeValue[], (* beginning of which*)
value = 0.0,
t>timeValue[[len]],
0.0,
posOfT == i,
(t-timeValue[[posOfT-1]])/(timeValue[[posOfT]]-timeValue[[posOfT-1]]),
posOfT == i+1,
(timeValue[[posOfT]]-t)/(timeValue[[posOfT]]-timeValue[[posOfT-1]]),
True,
0.0 ] (* end of which *)
]

--
*********************************************************************
Christian Jost, Université Paris-Sud XI, Orsay, France