Changeset 26636
- Timestamp:
- 11/18/21 02:03:26 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/extrusion/project3d.py
r26557 r26636 1 1 import numpy as np 2 3 2 from pairoptions import pairoptions 4 3 … … 8 7 PROJECT3D - vertically project a vector from 2d mesh 9 8 10 vertically project a vector from 2d mesh (split in noncoll and coll 9 vertically project a vector from 2d mesh (split in noncoll and coll 11 10 areas) into a 3d mesh. 12 This vector can be a node vector of size (md.mesh.numberofvertices2d, 11 This vector can be a node vector of size (md.mesh.numberofvertices2d, 13 12 N/A) or an element vector of size (md.mesh.numberofelements2d, N/A). 14 13 … … 18 17 19 18 options: 20 'layer' a layer number where vector should keep its values. If 21 not specified, all layers adopt the value of the 2d 19 'layer' a layer number where vector should keep its values. If 20 not specified, all layers adopt the value of the 2d 22 21 vector. 23 'padding': default to 0 (value adopted by other 3d layers not 22 'padding': default to 0 (value adopted by other 3d layers not 24 23 being projected. 25 24 'degree': degree of polynomials when extrude from bottom to the top … … 120 119 #Initialize 3d vector 121 120 if np.ndim(vector2d) == 1: 122 if vector2d.shape[0] == md.mesh.numberof elements2d:123 projected_vector = (paddingvalue * np.ones((md.mesh.numberof elements))).astype(vector2d.dtype)124 elif vector2d.shape[0] == md.mesh.numberof elements2d + 1:125 projected_vector = (paddingvalue * np.ones((md.mesh.numberof elements + 1))).astype(vector2d.dtype)121 if vector2d.shape[0] == md.mesh.numberofvertices2d: 122 projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices))).astype(vector2d.dtype) 123 elif vector2d.shape[0] == md.mesh.numberofvertices2d + 1: 124 projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1))).astype(vector2d.dtype) 126 125 projected_vector[-1] = vector2d[-1] 127 126 vector2d = vector2d[:-1] … … 131 130 if layer == 0: 132 131 for i in range(md.mesh.numberoflayers - 1): 133 projected_vector[(i * md.mesh.numberof elements2d):((i + 1) * md.mesh.numberofelements2d)] = vector2d*(1.0-(1.0-i/(md.mesh.numberoflayers - 1.0))**polyexponent)132 projected_vector[(i * md.mesh.numberofvertices2d):((i + 1) * md.mesh.numberofvertices2d)] = vector2d * (1.0 - (1.0 - i / (md.mesh.numberoflayers - 1.0))**polyexponent) 134 133 else: 135 projected_vector[((layer - 1) * md.mesh.numberof elements2d):(layer * md.mesh.numberofelements2d)] = vector2d*(1.0-(1.0-layer/(md.mesh.numberoflayers - 1.0))**polyexponent)134 projected_vector[((layer - 1) * md.mesh.numberofvertices2d):(layer * md.mesh.numberofvertices2d)] = vector2d * (1.0 - (1.0 - layer / (md.mesh.numberoflayers - 1.0))**polyexponent) 136 135 else: 137 if vector2d.shape[0] == md.mesh.numberof elements2d:138 projected_vector = (paddingvalue * np.ones((md.mesh.numberof elements, np.size(vector2d, axis=1)))).astype(vector2d.dtype)139 elif vector2d.shape[0] == md.mesh.numberof elements2d + 1:140 projected_vector = (paddingvalue * np.ones((md.mesh.numberof elements + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype)136 if vector2d.shape[0] == md.mesh.numberofvertices2d: 137 projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices, np.size(vector2d, axis=1)))).astype(vector2d.dtype) 138 elif vector2d.shape[0] == md.mesh.numberofvertices2d + 1: 139 projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype) 141 140 projected_vector[-1, :] = vector2d[-1, :] 142 141 vector2d = vector2d[:-1, :] … … 146 145 if layer == 0: 147 146 for i in range(md.mesh.numberoflayers - 1): 148 projected_vector[(i * md.mesh.numberof elements2d):((i + 1) * md.mesh.numberofelements2d), :] = vector2d*(1.0-(1.0-i/(md.mesh.numberoflayers - 1.0))**polyexponent)147 projected_vector[(i * md.mesh.numberofvertices2d):((i + 1) * md.mesh.numberofvertices2d), :] = vector2d * (1.0 - (1.0 - i / (md.mesh.numberoflayers - 1.0))**polyexponent) 149 148 else: 150 projected_vector[((layer - 1) * md.mesh.numberof elements2d):(layer * md.mesh.numberofelements2d), :] = vector2d*(1.0-(1.0-layer/(md.mesh.numberoflayers - 1.0))**polyexponent)149 projected_vector[((layer - 1) * md.mesh.numberofvertices2d):(layer * md.mesh.numberofvertices2d), :] = vector2d * (1.0 - (1.0 - layer / (md.mesh.numberoflayers - 1.0))**polyexponent) 151 150 else: 152 151 raise TypeError("project3d error message: unknown projection type")
Note:
See TracChangeset
for help on using the changeset viewer.