Changeset 26913
- Timestamp:
- 03/03/22 11:50:56 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/geometry/VolumeAboveFloatation.m
r24861 r26913 1 function V = VolumeAboveFloatation(md )1 function V = VolumeAboveFloatation(md,step,flags) 2 2 %VOLUMEABOVEFLOATATION - returns volume above floatation 3 3 % 4 4 % Usage: 5 % V = VolumeAboveFloatation(md) 5 % V = VolumeAboveFloatation(md) % uses model fiels alone 6 % V = VolumeAboveFloatation(md,10) % Will look at step 10 of transient solution 7 % V = VolumeAboveFloatation(md,10,flags) % Will look at step 10 of transient solution, only flaged elements 6 8 7 9 %Special case if 3d … … 17 19 error('not supported yet'); 18 20 end 21 19 22 %1. get some parameters 20 23 rho_ice = md.materials.rho_ice; … … 22 25 23 26 %2. compute averages 24 base = mean(md.geometry.base(index),2); 25 surface = mean(md.geometry.surface(index),2); 26 bathymetry = mean(md.geometry.bed(index),2); 27 if nargin==1 28 base = mean(md.geometry.base(index),2); 29 surface = mean(md.geometry.surface(index),2); 30 bathymetry = mean(md.geometry.bed(index),2); 31 ice_levelset = md.mask.ice_levelset; 32 ocean_levelset = md.mask.ocean_levelset; 33 else 34 if isprop(md.results.TransientSolution(step),'MaskIceLevelset') 35 ice_levelset = md.results.TransientSolution(step).MaskIceLevelset; 36 else 37 ice_levelset = md.mask.ice_levelset; 38 end 39 ocean_levelset = md.results.TransientSolution(step).MaskOceanLevelset; 40 base = mean(md.results.TransientSolution(step).Base(index),2); 41 surface = mean(md.results.TransientSolution(step).Surface(index),2); 42 if isprop(md.results.TransientSolution(step),'Bed') 43 bathymetry = mean(md.results.TransientSolution(step).Bed(index),2); 44 else 45 bathymetry = mean(md.geometry.bed(index),2); 46 end 47 end 27 48 28 49 %3. get areas of all triangles … … 33 54 34 55 %5. take out the ones that are outside of levelset or floating 35 pos = find(min( md.mask.ice_levelset(index),[],2)>0 | min(md.mask.ocean_levelset(index),[],2)<0);56 pos = find(min(ice_levelset(index),[],2)>0 | min(ocean_levelset(index),[],2)<0); 36 57 V(pos) = 0; 58 59 %In case we are only looking at one portion of the domain... 60 if nargin==3 61 V(find(~flags)) = 0; 62 end 37 63 38 64 %sum individual contributions
Note:
See TracChangeset
for help on using the changeset viewer.