Changeset 26913


Ignore:
Timestamp:
03/03/22 11:50:56 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: made this function more flexible: can apply to transient results (Note: NEEDS TO BE LOOKED INTO because we are not getting the same results as ISSM)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/geometry/VolumeAboveFloatation.m

    r24861 r26913  
    1 function V = VolumeAboveFloatation(md)
     1function V = VolumeAboveFloatation(md,step,flags)
    22%VOLUMEABOVEFLOATATION - returns volume above floatation
    33%
    44%   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
    68
    79%Special case if 3d
     
    1719        error('not supported yet');
    1820end
     21
    1922%1. get some parameters
    2023rho_ice   = md.materials.rho_ice;
     
    2225
    2326%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);
     27if 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;
     33else
     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
     47end
    2748
    2849%3. get areas of all triangles
     
    3354
    3455%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);
     56pos = find(min(ice_levelset(index),[],2)>0 | min(ocean_levelset(index),[],2)<0);
    3657V(pos) = 0;
     58
     59%In case we are only looking at one portion of the domain...
     60if nargin==3
     61        V(find(~flags)) = 0;
     62end
    3763
    3864%sum individual contributions
Note: See TracChangeset for help on using the changeset viewer.