;;; -*- Mode:Lisp; Syntax: Common-Lisp; Package:ONTOLINGUA-USER; Base:10 -*- ;;; 3D-Tensor Quantities ;;; (c) 1993,1994 Gregory R. Olsen and Thomas R. Gruber (in-package "ONTOLINGUA-USER") (define-theory 3D-TENSOR-QUANTITIES (tensor-quantities) "This theory specializes the Tensor-Quantities for tensors of spatial.dimension 3. 3D-tensors are ubiquitous in engineering analysis and have important special properties. The cross product (or vector product) is defined for vector-quantities of spatial.dimension 3." :issues ("(c) 1993, 1994 Gregory R. Olsen and Thomas R. Gruber" (:see-also "The EngMath paper on line"))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 3-Dimensional Tensor-Quantity Algebra ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (in-theory '3D-tensor-quantities) (define-class 3D-DYAD (?x) "Second order tensors of 3-dimensions." :def (and (dyad ?x) (spatial.dimension ?x 3))) (define-class 3D-VECTOR-QUANTITY (?x) "Vectors of 3-dimensions. (These vectors have important properities and are of particular interest to engineering analysis)." :def (and (vector-quantity ?x) (spatial.dimension ?x 3))) (define-function CROSS (?v1 ?v2) :-> ?v "Vector or cross product of two three dimensional vectors. If we know the components of two vectors with respect to a common basis, we can determine the components of the cross product in that basis." :iff-def (and (3d-vector-quantity ?v1) (3d-vector-quantity ?v2) (3d-vector-quantity ?v) (= (quantity.dimension ?v) (* (quantity.dimension ?v1) (quantity.dimension ?v2))) (= (dot ?v1 ?v) (the-zero-scalar-for-dimension (* (quantity.dimension ?v1) (quantity.dimension ?v)))) (= (dot ?v2 ?v) (the-zero-scalar-for-dimension (* (quantity.dimension ?v2) (quantity.dimension ?v)))) (and (= (vector-component ?v 1 ?b) (- (* (vector-component ?v1 2 ?b) (vector-component ?v2 3 ?b)) (* (vector-component ?v2 2 ?b) (vector-component ?v1 3 ?b)))) (= (vector-component ?v 2 ?b) (- (* (vector-component ?v2 1 ?b) (vector-component ?v1 3 ?b)) (* (vector-component ?v1 1 ?b) (vector-component ?v2 3 ?b)))) (= (vector-component ?v 3 ?b) (- (* (vector-component ?v1 1 ?b) (vector-component ?v2 2 ?b)) (* (vector-component ?v2 1 ?b) (vector-component ?v1 2 ?b)))))))