Skip to content

Commit ebe25c0

Browse files
author
amit112amit
committed
More corrections to the PDF
1 parent d517868 commit ebe25c0

File tree

3 files changed

+141
-0
lines changed

3 files changed

+141
-0
lines changed

OPS_CPP/DiffOrientRotVec.py

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
Created on Thu Sep 14 12:09:42 2017
5+
6+
@author: amit
7+
"""
8+
9+
import sympy as sy
10+
from sympy import sin, cos, sqrt, symbols, Rational, diff, latex
11+
12+
# Convenience function to write our results to file
13+
def writeListToFile(fileName, listIn, varName):
14+
fileStream = open(fileName, 'w')
15+
fileStream.write(' u_2 = u0**2 + u1**2 + u2**2\n')
16+
fileStream.write(' u = sqrt(u_2)\n')
17+
fileStream.write(' u_3 = u**3\n')
18+
fileStream.write(' u_4 = u**4\n')
19+
fileStream.write(' sin_alpha = sin( 0.5*u )\n')
20+
for i in range(len(listIn)):
21+
var = ' ' + varName + '{0}'.format(i) + ' = '
22+
fileStream.write(var)
23+
#fileStream.write(str(listIn[i]))
24+
fileStream.write(str(latex(listIn[i])))
25+
fileStream.write('\n\n')
26+
fileStream.close()
27+
28+
# Define the symbolic variables to be used
29+
u0,u1,u2,v0,v1,v2,x0,x1,x2,y0,y1,y2 = \
30+
symbols('u0,u1,u2,v0,v1,v2,x0,x1,x2,y0,y1,y2', real=True)
31+
32+
#Derivatives with respect to x0,x1,x2
33+
34+
u = sqrt( u0**2 + u1**2 + u2**2 )
35+
alpha = Rational(1,2)*u
36+
37+
p0 = (2*sin(alpha)/u**2)*( u1*u*cos(alpha) + u0*u2*sin(alpha) )
38+
p1 = (2*sin(alpha)/u**2)*( -u0*u*cos(alpha) + u1*u2*sin(alpha) )
39+
p2 = cos(alpha)**2 +(sin(alpha)**2/u**2)*( u2**2 -u1**2 - u0**2 )
40+
41+
dp0du0 = diff(p0,u0)
42+
dp1du0 = diff(p1,u0)
43+
dp2du0 = diff(p2,u0)
44+
45+
dp0du1 = diff(p0,u1)
46+
dp1du1 = diff(p1,u1)
47+
dp2du1 = diff(p2,u1)
48+
49+
dp0du2 = diff(p0,u2)
50+
dp1du2 = diff(p1,u2)
51+
dp2du2 = diff(p2,u2)
52+
53+
dpdu = [ dp0du0,dp1du0, dp2du0,\
54+
dp0du1,dp1du1, dp2du1,\
55+
dp0du2,dp1du2, dp2du2 ]
56+
57+
58+
U,A = symbols('U,A')
59+
60+
subsList = [ (sqrt(u0**2 + u1**2 + u2**2)/2, A),\
61+
(sqrt(u0**2 + u1**2 + u2**2), U)]
62+
63+
derivatives = []
64+
for i in range(9):
65+
derivatives.append( dpdu[i].subs(subsList) )
66+
67+
writeListToFile( 'Latex.txt',derivatives, 'dpdu' );

OPS_CPP/PythonToCpp2.sh

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/bash
2+
3+
FILE=$1
4+
5+
perl -pi -e 's/U/u/g' $FILE
6+
perl -pi -e 's/sin\(A\)/sin_alpha/g' $FILE
7+
perl -pi -e 's/cos\(A\)/cos_alpha/g' $FILE
8+
perl -pi -e 's/sin_alpha\*\*2/sin_alpha_2/g' $FILE
9+
perl -pi -e 's/u([0-2])\*\*2/u$1_2/g' $FILE
10+
perl -pi -e 's/u\*\*([0-9])/u_$1/g' $FILE
11+
perl -pi -e 's/dpdu0/dp0du0/g' $FILE
12+
perl -pi -e 's/dpdu1/dp1du0/g' $FILE
13+
perl -pi -e 's/dpdu2/dp2du0/g' $FILE
14+
perl -pi -e 's/dpdu3/dp0du1/g' $FILE
15+
perl -pi -e 's/dpdu4/dp1du1/g' $FILE
16+
perl -pi -e 's/dpdu5/dp2du1/g' $FILE
17+
perl -pi -e 's/dpdu6/dp0du2/g' $FILE
18+
perl -pi -e 's/dpdu7/dp1du2/g' $FILE
19+
perl -pi -e 's/dpdu8/dp2du2/g' $FILE

OPS_CPP/SimplifyNiNj.py

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
Created on Thu Sep 14 11:48:17 2017
5+
6+
@author: amit
7+
"""
8+
import sympy as sy
9+
from PotentialsSym import conjugation, phi_p, phi_n, phi_c
10+
11+
# Define the symbolic variables to be used
12+
u0,u1,u2,v0,v1,v2,x0,x1,x2,y0,y1,y2 = \
13+
sy.symbols('u0,u1,u2,v0,v1,v2,x0,x1,x2,y0,y1,y2', real=True)
14+
15+
# Convert rotation vector vi to unit quaternion
16+
u = sy.sqrt(u0**2 + u1**2 + u2**2)
17+
p0 = sy.cos( sy.Rational(1,2)*u )
18+
p1 = sy.sin( sy.Rational(1,2)*u )*(u0/u)
19+
p2 = sy.sin( sy.Rational(1,2)*u )*(u1/u)
20+
p3 = sy.sin( sy.Rational(1,2)*u )*(u2/u)
21+
p = [p0, p1, p2, p3]
22+
23+
# Convert rotation vector vj to unit quaternion
24+
v = sy.sqrt(v0**2 + v1**2 + v2**2)
25+
q0 = sy.cos( sy.Rational(1,2)*v )
26+
q1 = sy.sin( sy.Rational(1,2)*v )*(v0/v)
27+
q2 = sy.sin( sy.Rational(1,2)*v )*(v1/v)
28+
q3 = sy.sin( sy.Rational(1,2)*v )*(v2/v)
29+
q = [q0, q1, q2, q3]
30+
31+
qz = [0,0,1]
32+
ni = conjugation( p, qz )
33+
nj = conjugation( q, qz )
34+
35+
# Make simplifying substitutions
36+
u,v,u_2,v_2,u_3,v_3,u_4,v_4 = \
37+
sy.symbols('u,v,u_2,v_2,u_3,v_3,u_4,v_4')
38+
sin_alpha_i,cos_alpha_i,sin_alpha_j,cos_alpha_j = \
39+
sy.symbols('sin_alpha_i,cos_alpha_i,sin_alpha_j,cos_alpha_j')
40+
41+
subsList = [(u0**2 + u1**2 + u2**2, u_2), \
42+
(v0**2 + v1**2 + v2**2, v_2), \
43+
(sy.sqrt(u_2), u), (sy.sqrt(v_2), v), \
44+
(u**2, u_2),(v**2, v_2),\
45+
(u**3, u_3),(v**3, v_3), \
46+
(u**4, u_4),(v**4, v_4 ), \
47+
(sy.sin(u/2), sin_alpha_i),(sy.cos(u/2), cos_alpha_i), \
48+
(sy.sin(v/2), sin_alpha_j),(sy.cos(v/2), cos_alpha_j)]
49+
50+
ni_s =[]
51+
nj_s = []
52+
for i in range( 3 ):
53+
ni_s.append( ni[i].subs(subsList) )
54+
nj_s.append( nj[i].subs(subsList) )
55+

0 commit comments

Comments
 (0)