Source code for issm.slope

import numpy as  np
from GetNodalFunctionsCoeff import  GetNodalFunctionsCoeff

[docs]def slope(md,*args): """ SLOPE - compute the surface slope Usage: sx,sy,s=slope(md) sx,sy,s=slope(md,md.results.TransientSolution(1).Surface) """ #load some variables (it is much faster if the variables are loaded from md once for all) if md.mesh.dimension()==2: numberofelements=md.mesh.numberofelements numberofnodes=md.mesh.numberofvertices index=md.mesh.elements x=md.mesh.x ; y=md.mesh.y else: numberofelements=md.mesh.numberofelements2d numberofnodes=md.mesh.numberofvertices2d index=md.mesh.elements2d x=md.mesh.x2d; y=md.mesh.y2d if len(args)==0: surf=md.geometry.surface elif len(args)==1: surf=args[0] else: raise RuntimeError("slope.py usage error") #%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma alpha,beta=GetNodalFunctionsCoeff(index,x,y)[0:2] summation=np.array([[1],[1],[1]]) sx=np.dot(surf[index-1]*alpha,summation).reshape(-1,) sy=np.dot(surf[index-1]*beta,summation).reshape(-1,) s=np.sqrt(sx**2+sy**2) if md.mesh.dimension()==3: sx=project3d(md,'vector',sx,'type','element') sy=project3d(md,'vector',sy,'type','element') s=np.sqrt(sx**2+sy**2) return (sx,sy,s)