(***********************************************************************) (* USAGE.M *) (* Bernd Fiedler, Fakultaet Math/Inf, Universitaet Leipzig, 05.09.1996 *) (* *) (* Usage-File zu VECTAN Version 1.1 *) (***********************************************************************) (************************** Usage **************************************) BacCab::usage = "BacCab[expr,x,y,z] applies the bac-cab-rule VP[x,VP[y,z]] -> SP[x,z]y - SP[x,y]z to the expression expr by means of ReplaceAll." DefineVector::usage = "DefineVector[v] declares the expression v a vector field. DefineVector can be used to a list of expressions too (DefineVector[{v1,v2,...}])." DefineVector::error = "Expression `1` is already declared a vector field." DefineVector::inf = "Vector field `1` has been established." div::usage = "div[vect] denotes the divergence of the vector field vect." div::error1 = "Two vector fields `1` and `2` occur as arguments of div." div::error2 = "The argument of div is not a vector field." divValue::usage = "A value wert can be assigned to the operation div[vect] on the vector field vect by means of a statement vect/: divValue[vect] := wert . See the comments in def.m and the explanations in vectan.ps." divValue::muster = "VECTAN identifies only the pattern divValue[vect]." dot::usage = "dot[x] denotes the derivative of x according to a variable t, which differs from the spatial variables x1, x2, x3. If x is not a vector field, then there holds true dot[x] = Derivative[1][x]. If x is a vector field x = Vect[x], then there is valid dot[x] = Vect[x']." dotValue::usage = "A value wert can be assigned to the operation dot[x] on the symbol x by means of a statement x/: dotValue[x] := wert. Here x may be a vector field as well as a function. See the comments in def.m and the explanations in vectan.ps." dotValue::muster = "VECTAN identifies only the patterns dotValue[vect] and dotValue[func]." grad::usage = "grad[f] denotes the gradient of the function f. grad[vect1,vect2] denotes the derivative of the vector field vect2 in the direction of the vector field vect1, i.e. ()[vect2] ." grad::error1 = "grad has been applied to a vector field `1` ." gradValue::usage = "A value wert can be assigned to the operation grad[f] on the function f by means of a statement f/: gradValue[f] := wert. Furthermore, a value wert can be assigned to the operation grad[vect1,vect2] on the vector fields vect1 and vect2 by means of one of the statements vect1/: gradValue[vect1,vect2] := wert or vect2/: gradValue[vect1,vect2] := wert. See the comments in def.m and the explanations in vectan.ps." gradValue::muster = "VECTAN identifies the following patterns: gradValue[func], gradValue[vec1,vec2], gradValue[vec1,grad[func]], gradValue[vec1,rot[vec2]], gradValue[vec1,VP[vec2,vec3]], gradValue[vec1,grad[vec2,vec3]], gradValue[grad[func],vec1], gradValue[rot[vec1],vec2], gradValue[VP[vec1,vec2],vec3], gradValue[grad[vec1,vec2],vec3]." graddotValue::usage = "A value wert can be assigned to the operation grad[m-th dot-derivative of vect1, n-th dot-derivative of vect2] by means of a statement vect1/: graddotValue[vect1,vect2,m,n] := wert. A statement vect2/: graddotValue[vect1,vect2,m,n] := wert has the same effect. Furthermore the numbers m, n are allowed to be zero. A value for a pattern grad[x_, Vect[Derivative[n][vect2]]] can be defined by vect2/: graddotValue[x_,vect2,0,n] := wert, where wert may be depending on x. In the same way, a value for a pattern grad[Vect[Derivative[m][vect1]],x_] can be established by vect1/: graddotValue[vect1,x_,m,0] := wert. See the comments in def.m and the explanations in vectan.ps." graddotValue::muster = "VECTAN identifies the following patterns: graddotValue[vect1,vect2,m,n] (m,n >= 1), graddotValue[vect1,vect2,m,0] (m >= 1), graddotValue[vect1,vect2,0,n] (n>= 1). The non-differenciated vectors of the last two patterns may even be expressions with the heads grad, rot, VP." Mu::usage = "Mu[symbol] prints the message symbol::muster, if such a message is defined in VECTAN. The symbols divValue, dotValue, gradValue, graddotValue, rotValue, SPValue, VPValue possess such messages." rot::usage = "rot[vect] denotes the curl of the vector field vect." rot::error1 = "Two vector fields `1` and `2` occur as arguments of rot." rot::error2 = "The argument of rot is not a vector field." rotValue::usage = "A value wert can be assigned to the operation rot[vect] on the vector field vect by means of a statement vect/: rotValue[vect] := wert . See the comments in def.m and the explanations in vectan.ps." rotValue::muster = "VECTAN identifies only the pattern rotValue[vect]." SP::usage = "SP[vect1,vect2] denotes the scalar product of the vector fields vect1, vect2." SP::error1 = "A scalar product contains a factor `1` which is not a vector." SPValue::usage = "A value wert can be assigned to the expression SP[vect1,vect2] by means of a statement vect1/: SPValue[vect1,vect2] := wert or vect2/: SPValue[vect1,vect2] := wert . See the comments in def.m and the explanations in vectan.ps." SPValue::muster = "VECTAN identifies the following patterns: SPValue[vec1,vec2], SPValue[grad[f],vec], SPValue[rot[vec1],vec2]], SPValue[grad[vec1,vec2],vec3], SPValue[vec1,VP[vec2,vec3]]." VASave::usage = "VASave[filename] stores all definitions which are contained in the current context in the file filename. Thus VASave stores all definitions generated in a VECTAN session if and only if all these definitions belong to the current context. Therefore, the current context should not be changed in the course of a VECTAN session." VASave::error = "The syntax of VASave is VASave[filename] where filename has to be a string." Vect::usage = "Vect is the head of an expression which VECTAN consideres a vector field. The FullForm of a vector field vect is Vect[vect]." VectQ::usage = "VectQ[x] yields True if x possesses one of the heads Vect, grad, rot, VP. Otherwise, Vect[x] yields False." VP::usage = "VP[vect1,vect2] denotes the vector product of the vector fields vect1, vect2." VP::error1 = "A vector product contains a factor `1` which is not a vector." VPValue::usage = "A value wert can be assigned to the expression VP[vect1,vect2] by means of a statement vect1/: VPValue[vect1,vect2] := wert or vect2/: VPValue[vect1,vect2] := wert . See the comments in def.m and the explanations in vectan.ps." VPValue::muster = "VECTAN identifies the following patterns: VPValue[vec1,vec2], VPValue[grad[f],vec], VPValue[rot[vec1],vec2], VPValue[grad[vec1,vec2],vec3]." $BacCab::usage = "If $BacCab = True, then the rule VP[a,VP[b,c]] = SP[a,c]b - SP[a,b]c is used automatically. If $BacCab = False, then this rule can be applied only by means of the command BacCab[expr,a,b,c]." $KillSpat::usage = "If $KillSpat = True, then expressions in the form (scalar triple product)*vector are automatically converted into expressions in the form (scalar product)*vector, where 'scalar product' is not a scalar triple product. 'vector' may be an expression u with VectQ[u] = True." $SpatRule::usage = "If $SpatRule = True, then products of scalar triple products like SP[a,VP[b,c]]*SP[d,VP[e,f]] are automatically converted into sums of products of scalar products, where the scalar products do not contain a vector product." $VPChar::usage = "The variable $VPChar contains a string that is used to print the sign of the vector product." (************************** System Variables ***************************) $BacCab = False ; $KillSpat = False; $SpatRule = True; (* $VPChar = " "<>FromCharacterCode[145]<>" " ; *) $VPChar = " "<>FromCharacterCode[158]<>" " ;