Changeset 23463
- Timestamp:
- 11/09/18 18:03:34 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/partition/AreaAverageOntoPartition.py
r23270 r23463 1 1 import numpy as np 2 import copy 2 3 3 4 def AreaAverageOntoPartition(md,vector,layer=None): … … 11 12 ''' 12 13 #some checks 13 if len(np.shape(md.mesh)) == 3:14 if(md.mesh.dimension()==3): 14 15 if layer == None: 15 16 raise RuntimeError('AreaAverageOntoPartition: layer should be provided onto which Area Averaging occurs') 16 17 17 18 #save 3D model 18 md3d = md19 md3d = copy.deepcopy(md) 19 20 20 21 md.mesh.elements = md.mesh.elements2d … … 35 36 36 37 #ok, first check that part is Matlab indexed 37 #part = md.qmu.partition 38 part = (md.qmu.partition).copy() 39 part = part.flatten() + 1 38 40 39 41 #some check: 40 if md.qmu.numberofpartitions != max( md.qmu.partition):42 if md.qmu.numberofpartitions != max(part): 41 43 raise RuntimeError('AreaAverageOntoPartition error message: ''npart'' should be equal to max(md.qmu.partition)') 42 44 43 45 44 46 #initialize output 45 partvector = np.zeros((max( md.qmu.partition),))47 partvector = np.zeros((max(part))) 46 48 47 49 #start weight average 48 50 weightedvector = vector*md.qmu.vertex_weight 49 for i in range(max( md.qmu.partition)):50 pos=np.where( md.qmu.partition==i)51 for i in range(max(part)): 52 pos=np.where((part-1)==i) 51 53 partvector[i]=sum(weightedvector[pos])/sum(md.qmu.vertex_weight[pos]) 52 54 53 55 54 56 #in 3D, restore 3D model: 55 if len(np.shape(md.mesh)) == 3: 56 md = md3d 57 if(md.mesh.dimension()==3): 58 md = copy.deepcopy(md3d) 59 57 60 58 61 return partvector
Note:
See TracChangeset
for help on using the changeset viewer.