i have been struggling to find out what is the equivalent sympy method in Julia. actually i made finite element method solver (numerical method to solve partial differential equation, parabolic, elliptical and hyperbolic in 2D) and it is working fine in python. but, i am facing the speed issue, as this solver contain very large number of string operation i mean string expression. i will mention brief steps involved in solver as follows:
- make string shape functions for each rectangular element in array
- making functional of above string shape function as per Residual Galerkin method
- find jacobian of given physical element in standard rectangular element
- taking differentiation (symbolically and not numerically)–here i am facing problem in julia
- taking integration of each functional element wise (numerically)
- obtaining Stiff, Mass, and Load vectors
- solving matrices equation using linear aljebra
- post processing
end
i want to make same solver in Julia to increase the speed. please help to make solver in Julia.
i am sending some snippet from solver.
def vectorshapes(p):
“”" Return vector shape functions of edges for order p, first all horizontal edges then vertical edges
-return list of touple [(ux,uy)…]
“”"
s,t=symbols(‘s t’)
shape=masterRectShapes(p)# gives Lagrange shape functions in string format containg s and t variables.
HorizontalEdges =[(i+(p+1)j,i+(p+1)(j+1)) for i in range(p+1) for j in range(p)]
VerticalEdges =[((p+1)i+j,(p+1)i+(j+1)) for i in range(p+1) for j in range(p)]
HorizontalEdges.extend(VerticalEdges)
del VerticalEdges
edges=HorizontalEdges
edges=[(f’(2/{pp})(({shape[i]}({diff(shape[j],s)}))-({shape[j]}({diff(shape[i],s)})))‘,f’(2/{pp})(({shape[i]}({diff(shape[j],t)}))-({shape[j]}({diff(shape[i],t)})))') for i,j in edges]
return edges
here i have to differentiate shape fuction wrt s for x components and wrt t for y components