test_subs - Generate equations from variational forms

Calling sequence:

test_subs(test_list,testfcn,expr)

Parameters

test_list - a list of test functions

test_fcn - a name of a variable to be used as a test function

expr - An expression.

Synopsis:

Examples:

> ueq:=0=diff(u(x),x,x);

                                     2
                                    d
                         ueq := 0 = --- u(x)
                                      2
                                    dx

> veq:=u(x)=diff(v(x),x,x);

                                       2
                                      d
                        veq := u(x) = --- v(x)
                                        2
                                      dx

> varForm:=ElementInt(ut(x) * (lhs(ueq)-rhs(ueq)))+
           ElementInt(vt(x) * (lhs(veq)-rhs(veq))) =0:

> pivarForm:=partInt(varForm,[u(x),v(x)]):
> BCpivarForm:=BCsubs([diff(u(x),x)=q,diff(v(x),x)=0],pivarForm);

                          /d      \ /d       \
BCpivarForm := ElementInt(|-- u(x)| |-- ut(x)|)
                          \dx     / \dx      /

     - BoundaryInt(BdNx q ut(x)) + ElementInt(vt(x) u(x))

                  /d      \ /d       \
     + ElementInt(|-- v(x)| |-- vt(x)|) = 0
                  \dx     / \dx      /

> eqns:=test_subs([ut(x),vt(x)],test(x),BCpivarForm):
> eqns[1];eqns[2];

            /d      \ /d         \
 ElementInt(|-- u(x)| |-- test(x)|) - BoundaryInt(BdNx q test(x)) = 0
            \dx     / \dx        /


                                        /d      \ /d         \
  ElementInt(test(x) u(x)) + ElementInt(|-- v(x)| |-- test(x)|) = 0
                                        \dx     / \dx        /