Cross Product between Two TensorsΒΆ
This is an example of how to use the omtools.cross() function to compute the cross product between two tensors.
from openmdao.api import Problem
from omtools.api import Group
import omtools.api as ot
import numpy as np
class ExampleTensorTensor(Group):
def setup(self):
# Creating two tensors
shape = (2, 5, 4, 3)
num_elements = np.prod(shape)
tenval1 = np.arange(num_elements).reshape(shape)
tenval2 = np.arange(num_elements).reshape(shape) + 6
ten1 = self.declare_input('ten1', val=tenval1)
ten2 = self.declare_input('ten2', val=tenval2)
# Tensor-Tensor Dot Product specifying the last axis
self.register_output('TenTenCross', ot.cross(ten1, ten2, axis=3))
prob = Problem()
prob.model = ExampleTensorTensor()
prob.setup(force_alloc_complex=True)
prob.run_model()
print('ten1', prob['ten1'].shape)
print(prob['ten1'])
print('ten2', prob['ten2'].shape)
print(prob['ten2'])
print('TenTenCross', prob['TenTenCross'].shape)
print(prob['TenTenCross'])
ten1 (2, 5, 4, 3)
[[[[ 0. 1. 2.]
[ 3. 4. 5.]
[ 6. 7. 8.]
[ 9. 10. 11.]]
[[ 12. 13. 14.]
[ 15. 16. 17.]
[ 18. 19. 20.]
[ 21. 22. 23.]]
[[ 24. 25. 26.]
[ 27. 28. 29.]
[ 30. 31. 32.]
[ 33. 34. 35.]]
[[ 36. 37. 38.]
[ 39. 40. 41.]
[ 42. 43. 44.]
[ 45. 46. 47.]]
[[ 48. 49. 50.]
[ 51. 52. 53.]
[ 54. 55. 56.]
[ 57. 58. 59.]]]
[[[ 60. 61. 62.]
[ 63. 64. 65.]
[ 66. 67. 68.]
[ 69. 70. 71.]]
[[ 72. 73. 74.]
[ 75. 76. 77.]
[ 78. 79. 80.]
[ 81. 82. 83.]]
[[ 84. 85. 86.]
[ 87. 88. 89.]
[ 90. 91. 92.]
[ 93. 94. 95.]]
[[ 96. 97. 98.]
[ 99. 100. 101.]
[102. 103. 104.]
[105. 106. 107.]]
[[108. 109. 110.]
[111. 112. 113.]
[114. 115. 116.]
[117. 118. 119.]]]]
ten2 (2, 5, 4, 3)
[[[[ 6. 7. 8.]
[ 9. 10. 11.]
[ 12. 13. 14.]
[ 15. 16. 17.]]
[[ 18. 19. 20.]
[ 21. 22. 23.]
[ 24. 25. 26.]
[ 27. 28. 29.]]
[[ 30. 31. 32.]
[ 33. 34. 35.]
[ 36. 37. 38.]
[ 39. 40. 41.]]
[[ 42. 43. 44.]
[ 45. 46. 47.]
[ 48. 49. 50.]
[ 51. 52. 53.]]
[[ 54. 55. 56.]
[ 57. 58. 59.]
[ 60. 61. 62.]
[ 63. 64. 65.]]]
[[[ 66. 67. 68.]
[ 69. 70. 71.]
[ 72. 73. 74.]
[ 75. 76. 77.]]
[[ 78. 79. 80.]
[ 81. 82. 83.]
[ 84. 85. 86.]
[ 87. 88. 89.]]
[[ 90. 91. 92.]
[ 93. 94. 95.]
[ 96. 97. 98.]
[ 99. 100. 101.]]
[[102. 103. 104.]
[105. 106. 107.]
[108. 109. 110.]
[111. 112. 113.]]
[[114. 115. 116.]
[117. 118. 119.]
[120. 121. 122.]
[123. 124. 125.]]]]
TenTenCross (2, 5, 4, 3)
[[[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]]
[[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]
[[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]
[-6. 12. -6.]]]]