Artifact a3f714cc8d6a709ec2ee7f6960cfe1eee06e84879e403a37c5209881a1ff8d5e:
- Executable file
r37/doc/manual2/fide.tex
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 4358) [annotate] [blame] [check-ins using] [more...]
- Executable file
r38/doc/manual2/fide.tex
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 4358) [annotate] [blame] [check-ins using]
\chapter[FIDE: Finite differences for PDEs]% {FIDE: Finite difference method for partial differential equations} \label{FIDE} \typeout{[FIDE: Finite differences for PDEs]} {\footnotesize \begin{center} Richard Liska \\ Faculty of Nuclear Science and Physical Engineering \\ Technical University of Prague \\ Brehova 7, 115 19 Prague 1, Czech Republic \\[0.05in] e--mail: tjerl@aci.cvut.cz \end{center} } \ttindex{FIDE} The FIDE package performs automation of the process of numerical solving partial differential equations systems (PDES) by generating finite difference methods. In the process one can find several stages in which computer algebra can be used for performing routine analytical calculations, namely: transforming differential equations into different coordinate systems, discretisation of differential equations, analysis of difference schemes and generation of numerical programs. The FIDE package consists of the following modules: \begin{description} \item[EXPRES] for transforming PDES into any orthogonal coordinate system. \item[IIMET] for discretisation of PDES by integro-interpolation method. \item[APPROX] for determining the order of approximation of difference scheme. \item[CHARPOL] for calculation of amplification matrix and characteristic polynomial of difference scheme, which are needed in Fourier stability analysis.\ \item[HURWP] for polynomial roots locating necessary in verifying the von Neumann stability condition. \item[LINBAND] for generating the block of FORTRAN code, which solves a system of linear algebraic equations with band matrix appearing quite often in difference schemes. \end{description} For more details on this package are given in the FIDE documentation, and in the examples. A flavour of its capabilities can be seen from the following simple example. \begin{verbatim} off exp; factor diff; on rat,eqfu; % Declare which indexes will be given to coordinates coordinates x,t into j,m; % Declares uniform grid in x coordinate grid uniform,x; % Declares dependencies of functions on coordinates dependence eta(t,x),v(t,x),eps(t,x),p(t,x); % Declares p as known function given p; same eta,v,p; iim a, eta,diff(eta,t)-eta*diff(v,x)=0, v,diff(v,t)+eta/ro*diff(p,x)=0, eps,diff(eps,t)+eta*p/ro*diff(v,x)=0; ***************************** ***** Program ***** IIMET Ver 1.1.2 ***************************** Partial Differential Equations ============================== diff(eta,t) - diff(v,x)*eta = 0 diff(p,x)*eta --------------- + diff(v,t) = 0 ro diff(v,x)*eta*p diff(eps,t) + ----------------- = 0 ro Backtracking needed in grid optimalization 0 interpolations are needed in x coordinate Equation for eta variable is integrated in half grid point Equation for v variable is integrated in half grid point Equation for eps variable is integrated in half grid point 0 interpolations are needed in t coordinate Equation for eta variable is integrated in half grid point Equation for v variable is integrated in half grid point Equation for eps variable is integrated in half grid point Equations after Discretization Using IIM : ========================================== (4*(eta(j,m + 1) - eta(j,m) - eta(j + 1,m) + eta(j + 1,m + 1))*hx - ( (eta(j + 1,m + 1) + eta(j,m + 1)) *(v(j + 1,m + 1) - v(j,m + 1)) + (eta(j + 1,m) + eta(j,m))*(v(j + 1,m) - v(j,m))) *(ht(m + 1) + ht(m)))/(4*(ht(m + 1) + ht(m))*hx) = 0 (4*(v(j,m + 1) - v(j,m) - v(j + 1,m) + v(j + 1,m + 1))*hx*ro + ((eta(j + 1,m + 1) + eta(j,m + 1)) *(p(j + 1,m + 1) - p(j,m + 1)) + (eta(j + 1,m) + eta(j,m))*(p(j + 1,m) - p(j,m))) *(ht(m + 1) + ht(m)))/(4*(ht(m + 1) + ht(m))*hx*ro) = 0 (4*(eps(j,m + 1) - eps(j,m) - eps(j + 1,m) + eps(j + 1,m + 1))*hx*ro + (( eta(j + 1,m + 1)*p(j + 1,m + 1) + eta(j,m + 1)*p(j,m + 1)) *(v(j + 1,m + 1) - v(j,m + 1)) + (eta(j + 1,m)*p(j + 1,m) + eta(j,m)*p(j,m)) *(v(j + 1,m) - v(j,m)))*(ht(m + 1) + ht(m)))/(4 *(ht(m + 1) + ht(m))*hx*ro) = 0 clear a; clearsame; cleargiven; \end{verbatim}