MathGroup Archive 1997

[Date Index] [Thread Index] [Author Index]

Search the Archive

Implementing finite element basis functions in Mma


I try to test out a finite element algorithm in Mathematica, where the
basis functions phi_i for a given vector of numbers {x1,x2,...xn} with
x1<x2<..<xn are piecewise linear and phi_i(xj) = delta(i,j) (kronecker
symbol).
The function below returns the value of the i-th basis function at number
t, but the way I implemented it makes symbolic integration (for example
the integral of phi_i * phi_j or D[phi_i,x]*phi_j) impossible. Any ideas
how I have to write the basis functions to maintain the symbolic calculus?

Thanks for your interest, Christian.

ps: sorry if you have read this before, but our server had some problems
so I could not verify if the original post made it to the net.

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[[1]], (* 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

Please don't send any junk mail or advertisements. For personal mail please send to: Christian.Jost at epc.u-psud.fr


  • Prev by Date: scaling 3D axes?
  • Next by Date: Making copyrighted Packages/Notebooks available over intranet?
  • Previous by thread: Re: scaling 3D axes?
  • Next by thread: Making copyrighted Packages/Notebooks available over intranet?