source:
issm/oecreview/Archive/24684-25833/ISSM-24860-24861.diff
Last change on this file was 25834, checked in by , 4 years ago | |
---|---|
File size: 88.8 KB |
-
../trunk-jpl/src/m/geometry/VolumeAboveFloatation.m
32 32 V = areas.*(surface-base+min(rho_water/rho_ice*bathymetry,0.)); 33 33 34 34 %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. groundedice_levelset(index),[],2)<0);35 pos = find(min(md.mask.ice_levelset(index),[],2)>0 | min(md.mask.ocean_levelset(index),[],2)<0); 36 36 V(pos) = 0; 37 37 38 38 %sum individual contributions -
../trunk-jpl/src/m/classes/groundingline.py
51 51 if(not m.strcmp(self.migration, 'None') and md.transient.isgroundingline and solution == 'TransientSolution'): 52 52 if np.any(np.isnan(md.geometry.bed)): 53 53 md.checkmessage("requesting grounding line migration, but bathymetry is absent!") 54 pos = np.nonzero(md.mask. groundedice_levelset > 0.)[0]54 pos = np.nonzero(md.mask.ocean_levelset > 0.)[0] 55 55 if any(np.abs(md.geometry.base[pos] - md.geometry.bed[pos]) > 10**-10): 56 56 md.checkmessage("base not equal to bed on grounded ice!") 57 57 if any(md.geometry.bed - md.geometry.base > 10**-9): -
../trunk-jpl/src/m/classes/groundingline.m
36 36 if isnan(md.geometry.bed), 37 37 md = checkmessage(md,['requesting grounding line migration, but bathymetry is absent!']); 38 38 end 39 pos=find(md.mask. groundedice_levelset>0. & md.mask.ice_levelset<=0);39 pos=find(md.mask.ocean_levelset>0. & md.mask.ice_levelset<=0); 40 40 if any(abs(md.geometry.base(pos)-md.geometry.bed(pos))>10^-10), 41 41 md = checkmessage(md,['base not equal to bed on grounded ice!']); 42 42 end 43 pos=find(md.mask. groundedice_levelset<=0. & md.mask.ice_levelset<=0);43 pos=find(md.mask.ocean_levelset<=0. & md.mask.ice_levelset<=0); 44 44 if any(md.geometry.bed(pos) - md.geometry.base(pos) > 10^-9), 45 45 md = checkmessage(md,['bed superior to base on floating ice!']); 46 46 end -
../trunk-jpl/src/m/classes/maskpsl.m
5 5 6 6 classdef maskpsl 7 7 properties (SetAccess=public) 8 groundedice_levelset = NaN;8 ocean_levelset = NaN; 9 9 ice_levelset = NaN; 10 10 ocean_levelset = NaN; 11 11 land_levelset = NaN; … … 19 19 end 20 20 methods 21 21 function self = extrude(self,md) % {{{ 22 self. groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node');22 self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node'); 23 23 self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node'); 24 24 self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node'); 25 25 self.land_levelset=project3d(md,'vector',self.land_levelset,'type','node'); … … 39 39 40 40 if strcmpi(solution,'LoveSolution'), return; end; 41 41 42 md = checkfield(md,'fieldname','mask. groundedice_levelset','size',[md.mesh.numberofvertices 1]);42 md = checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices 1]); 43 43 md = checkfield(md,'fieldname','mask.ice_levelset' ,'size',[md.mesh.numberofvertices 1]); 44 44 md = checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices 1]); 45 45 md = checkfield(md,'fieldname','mask.land_levelset','size',[md.mesh.numberofvertices 1]); … … 46 46 end % }}} 47 47 function disp(self) % {{{ 48 48 disp(sprintf(' masks:')); 49 fielddisplay(self,' groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0');49 fielddisplay(self,'ocean_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0'); 50 50 fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0'); 51 51 fielddisplay(self,'ocean_levelset','is the vertex on the ocean ? yes if = 1, no if = 0'); 52 52 fielddisplay(self,'land_levelset','is the vertex on the land ? yes if = 1, no if = 0'); … … 54 54 end % }}} 55 55 function marshall(self,prefix,md,fid) % {{{ 56 56 WriteData(fid,prefix,'name','md.mask.type','data',class(md.mask),'format','String'); 57 WriteData(fid,prefix,'object',self,'class','mask','fieldname',' groundedice_levelset','format','DoubleMat','mattype',1);57 WriteData(fid,prefix,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1); 58 58 WriteData(fid,prefix,'object',self,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1); 59 59 WriteData(fid,prefix,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1); 60 60 WriteData(fid,prefix,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1); … … 61 61 end % }}} 62 62 function savemodeljs(self,fid,modelname) % {{{ 63 63 fprintf(fid,'%s.mask=new maskpsl();\n',modelname); 64 writejs1Darray(fid,[modelname '.mask. groundedice_levelset'],self.groundedice_levelset);64 writejs1Darray(fid,[modelname '.mask.ocean_levelset'],self.ocean_levelset); 65 65 writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset); 66 66 writejs1Darray(fid,[modelname '.mask.ocean_levelset'],self.ocean_levelset); 67 67 writejs1Darray(fid,[modelname '.mask.land_levelset'],self.land_levelset); -
../trunk-jpl/src/m/classes/geometry.m
71 71 if any(self.bed-self.base>10^-12), 72 72 md = checkmessage(md,['base<bed on one or more vertex']); 73 73 end 74 pos = find(md.mask. groundedice_levelset>0);74 pos = find(md.mask.ocean_levelset>0); 75 75 if any(abs(self.bed(pos)-self.base(pos))>10^-9), 76 76 md = checkmessage(md,['equality base=bed on grounded ice violated']); 77 77 end -
../trunk-jpl/src/m/classes/stressbalance.m
100 100 md = checkfield(md,'fieldname','stressbalance.vertex_pairing','>',0); 101 101 end 102 102 %singular solution 103 if ((~(any(~isnan(md.stressbalance.spcvx)) | any(~isnan(md.stressbalance.spcvy)))) & ~any(md.mask. groundedice_levelset>0)),103 if ((~(any(~isnan(md.stressbalance.spcvx)) | any(~isnan(md.stressbalance.spcvy)))) & ~any(md.mask.ocean_levelset>0)), 104 104 disp(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n')); 105 105 end 106 106 %CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES … … 116 116 end 117 117 %CHECK THAT NO rotation specified for FS Grounded ice at base 118 118 if strcmp(domaintype(md.mesh),'3D') & md.flowequation.isFS, 119 pos=find(md.mask. groundedice_levelset>0. & md.mesh.vertexonbase);119 pos=find(md.mask.ocean_levelset>0. & md.mesh.vertexonbase); 120 120 if any(~isnan(md.stressbalance.referential(pos,:))), 121 121 md = checkmessage(md,['no referential should be specified for basal vertices of grounded ice']); 122 122 end -
../trunk-jpl/src/m/classes/mask.m
5 5 6 6 classdef mask 7 7 properties (SetAccess=public) 8 groundedice_levelset = NaN;8 ocean_levelset = NaN; 9 9 ice_levelset = NaN; 10 10 end 11 11 methods (Static) … … 22 22 end 23 23 methods 24 24 function self = extrude(self,md) % {{{ 25 self. groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node');25 self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node'); 26 26 self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node'); 27 27 end % }}} 28 28 function self = mask(varargin) % {{{ … … 39 39 function md = checkconsistency(self,md,solution,analyses) % {{{ 40 40 if strcmpi(solution,'LoveSolution'), return; end; 41 41 42 md = checkfield(md,'fieldname','mask. groundedice_levelset','timeseries',1,'NaN',1);42 md = checkfield(md,'fieldname','mask.ocean_levelset','timeseries',1,'NaN',1); 43 43 md = checkfield(md,'fieldname','mask.ice_levelset','NaN',1,'size',[md.mesh.numberofvertices 1]); 44 44 isice=(md.mask.ice_levelset<=0); 45 45 if sum(isice)==0, … … 49 49 function disp(self) % {{{ 50 50 disp(sprintf(' masks:')); 51 51 52 fielddisplay(self,' groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0');52 fielddisplay(self,'ocean_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0'); 53 53 fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0'); 54 54 end % }}} 55 55 function marshall(self,prefix,md,fid) % {{{ 56 WriteData(fid,prefix,'object',self,'fieldname',' groundedice_levelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);56 WriteData(fid,prefix,'object',self,'fieldname','ocean_levelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 57 57 WriteData(fid,prefix,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1); 58 58 end % }}} 59 59 function savemodeljs(self,fid,modelname) % {{{ 60 60 61 writejs1Darray(fid,[modelname '.mask. groundedice_levelset'],self.groundedice_levelset);61 writejs1Darray(fid,[modelname '.mask.ocean_levelset'],self.ocean_levelset); 62 62 writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset); 63 63 64 64 end % }}} -
../trunk-jpl/src/m/classes/maskpsl.py
13 13 # maskpsl = maskpsl() 14 14 15 15 def __init__(self, *args): # {{{ 16 self. groundedice_levelset = float('NaN')16 self.ocean_levelset = float('NaN') 17 17 self.ice_levelset = float('NaN') 18 18 self.ocean_levelset = float('NaN') 19 19 self.land_levelset = float('NaN') … … 26 26 27 27 def __repr__(self): # {{{ 28 28 string = ' masks:' 29 string = "%s\n%s" % (string, fielddisplay(self, ' groundedice_levelset', 'is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0'))29 string = "%s\n%s" % (string, fielddisplay(self, 'ocean_levelset', 'is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0')) 30 30 string = "%s\n%s" % (string, fielddisplay(self, 'ice_levelset', 'presence of ice if < 0, icefront position if = 0, no ice if > 0')) 31 31 string = "%s\n%s" % (string, fielddisplay(self, 'ocean_levelset', 'is the vertex on the ocean ? yes if = 1, no if = 0')) 32 32 string = "%s\n%s" % (string, fielddisplay(self, 'land_levelset', 'is the vertex on the land ? yes if = 1, no if = 0')) … … 49 49 # }}} 50 50 51 51 def checkconsistency(self, md, solution, analyses): # {{{ 52 md = checkfield(md, 'fieldname', 'mask. groundedice_levelset', 'size', [md.mesh.numberofvertices])52 md = checkfield(md, 'fieldname', 'mask.ocean_levelset', 'size', [md.mesh.numberofvertices]) 53 53 md = checkfield(md, 'fieldname', 'mask.ice_levelset', 'size', [md.mesh.numberofvertices]) 54 54 md = checkfield(md, 'fieldname', 'mask.ocean_levelset', 'size', [md.mesh.numberofvertices]) 55 55 md = checkfield(md, 'fieldname', 'mask.land_levelset', 'size', [md.mesh.numberofvertices]) … … 71 71 # }}} 72 72 73 73 def extrude(self, md): # {{{ 74 self. groundedice_levelset = project3d(md, 'vector', self.groundedice_levelset, 'type', 'node')74 self.ocean_levelset = project3d(md, 'vector', self.ocean_levelset, 'type', 'node') 75 75 self.ice_levelset = project3d(md, 'vector', self.ice_levelset, 'type', 'node') 76 76 self.ocean_levelset = project3d(md, 'vector', self.ocean_levelset, 'type', 'node') 77 77 self.land_levelset = project3d(md, 'vector', self.land_levelset, 'type', 'node') … … 89 89 90 90 def marshall(self, prefix, md, fid): # {{{ 91 91 WriteData(fid, prefix, 'name', 'md.mask.type', 'data', type(md.mask).__name__, 'format', 'String') 92 WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', ' groundedice_levelset', 'format', 'DoubleMat', 'mattype', 1)92 WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'ocean_levelset', 'format', 'DoubleMat', 'mattype', 1) 93 93 WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'ice_levelset', 'format', 'DoubleMat', 'mattype', 1) 94 94 WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'ocean_levelset', 'format', 'DoubleMat', 'mattype', 1) 95 95 WriteData(fid, prefix, 'object', self, 'class', 'mask', 'fieldname', 'land_levelset', 'format', 'DoubleMat', 'mattype', 1) … … 96 96 # }}} 97 97 98 98 def savemodeljs(self, fid, modelname): # {{{ 99 writejs1Darray(fid, [modelname, '.mask. groundedice_levelset'], self.groundedice_levelset)99 writejs1Darray(fid, [modelname, '.mask.ocean_levelset'], self.ocean_levelset) 100 100 writejs1Darray(fid, [modelname, '.mask.ice_levelset'], self.ice_levelset) 101 101 writejs1Darray(fid, [modelname, '.mask.ocean_levelset'], self.ocean_levelset) 102 102 writejs1Darray(fid, [modelname, '.mask.land_levelset'], self.land_levelset) -
../trunk-jpl/src/m/classes/flowequation.py
119 119 120 120 if 'StressbalanceSIAAnalysis' in analyses: 121 121 if any(self.element_equation == 1): 122 if np.any(np.logical_and(self.vertex_equation, md.mask. groundedice_levelset)):122 if np.any(np.logical_and(self.vertex_equation, md.mask.ocean_levelset)): 123 123 print("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n") 124 124 125 125 return md -
../trunk-jpl/src/m/classes/geometry.py
63 63 md = checkfield(md, 'fieldname', 'geometry.bed', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices]) 64 64 if np.any(self.bed - self.base > 10**-12): 65 65 md.checkmessage('base < bed on one or more vertex') 66 pos = np.where(md.mask. groundedice_levelset > 0)66 pos = np.where(md.mask.ocean_levelset > 0) 67 67 if np.any(np.abs(self.bed[pos] - self.base[pos]) > 10**-9): 68 68 md.checkmessage('equality base = bed on grounded ice violated') 69 69 md = checkfield(md, 'fieldname', 'geometry.bed', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices]) -
../trunk-jpl/src/m/classes/model.py
840 840 md.geometry.base = project2d(md, md.geometry.base, 1) 841 841 if isinstance(md.geometry.bed, np.ndarray): 842 842 md.geometry.bed = project2d(md, md.geometry.bed, 1) 843 md.mask. groundedice_levelset = project2d(md, md.mask.groundedice_levelset, 1)843 md.mask.ocean_levelset = project2d(md, md.mask.ocean_levelset, 1) 844 844 md.mask.ice_levelset = project2d(md, md.mask.ice_levelset, 1) 845 845 846 846 #OutputDefinitions -
../trunk-jpl/src/m/classes/stressbalance.py
155 155 md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal") 156 156 #CHECK THAT NO rotation specified for FS Grounded ice at base 157 157 if m.strcmp(md.mesh.domaintype(), '3D') and md.flowequation.isFS: 158 pos = np.nonzero(np.logical_and(md.mask. groundedice_levelset, md.mesh.vertexonbase))158 pos = np.nonzero(np.logical_and(md.mask.ocean_levelset, md.mesh.vertexonbase)) 159 159 if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos, :]))): 160 160 md.checkmessage("no referential should be specified for basal vertices of grounded ice") 161 161 -
../trunk-jpl/src/m/classes/mask.py
15 15 16 16 def __init__(self): # {{{ 17 17 self.ice_levelset = float('NaN') 18 self. groundedice_levelset = float('NaN')18 self.ocean_levelset = float('NaN') 19 19 20 20 #set defaults 21 21 self.setdefaultparameters() … … 25 25 def __repr__(self): # {{{ 26 26 string = " masks:" 27 27 28 string = "%s\n%s" % (string, fielddisplay(self, " groundedice_levelset", "is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0"))28 string = "%s\n%s" % (string, fielddisplay(self, "ocean_levelset", "is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0")) 29 29 string = "%s\n%s" % (string, fielddisplay(self, "ice_levelset", "presence of ice if < 0, icefront position if = 0, no ice if > 0")) 30 30 return string 31 31 #}}} … … 32 32 33 33 def extrude(self, md): # {{{ 34 34 self.ice_levelset = project3d(md, 'vector', self.ice_levelset, 'type', 'node') 35 self. groundedice_levelset = project3d(md, 'vector', self.groundedice_levelset, 'type', 'node')35 self.ocean_levelset = project3d(md, 'vector', self.ocean_levelset, 'type', 'node') 36 36 return self 37 37 #}}} 38 38 … … 53 53 # }}} 54 54 55 55 def marshall(self, prefix, md, fid): # {{{ 56 WriteData(fid, prefix, 'object', self, 'fieldname', ' groundedice_levelset', 'format', 'DoubleMat', 'mattype', 1)56 WriteData(fid, prefix, 'object', self, 'fieldname', 'ocean_levelset', 'format', 'DoubleMat', 'mattype', 1) 57 57 WriteData(fid, prefix, 'object', self, 'fieldname', 'ice_levelset', 'format', 'DoubleMat', 'mattype', 1) 58 58 # }}} -
../trunk-jpl/src/m/classes/flowequation.m
128 128 end 129 129 if ismember('StressbalanceSIAAnalysis',analyses), 130 130 if any(self.element_equation==1), 131 if(self.vertex_equation & md.mask. groundedice_levelset<0.),131 if(self.vertex_equation & md.mask.ocean_levelset<0.), 132 132 disp(sprintf('\n !!! Warning: SIA''s model is not consistent on ice shelves !!!\n')); 133 133 end 134 134 end -
../trunk-jpl/src/m/classes/model.m
362 362 md.geometry.bed=project2d(md,md.geometry.bed,1); 363 363 end 364 364 365 if ~isnan(md.mask. groundedice_levelset),366 md.mask. groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1);365 if ~isnan(md.mask.ocean_levelset), 366 md.mask.ocean_levelset=project2d(md,md.mask.ocean_levelset,1); 367 367 end 368 368 if ~isnan(md.mask.ice_levelset), 369 369 md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1); -
../trunk-jpl/src/m/contrib/morlighem/dassflow/exportgmsh.m
1 function exportgmsh(mesh, groundedice_levelset,filename),1 function exportgmsh(mesh,ocean_levelset,filename), 2 2 %EXPORTGMSH - export mesh to gmsh format 3 3 % 4 4 % http://www.geuz.org/gmsh/doc/texinfo/#MSH-ASCII-file-format 5 5 % 6 6 % Usage: 7 % exportgmsh(mesh, groundedice_levelset,filename)7 % exportgmsh(mesh,ocean_levelset,filename) 8 8 % 9 9 % Example: 10 % exportgmsh(md.mesh,md.mask. groundedice_levelset,'temp.msh')10 % exportgmsh(md.mesh,md.mask.ocean_levelset,'temp.msh') 11 11 12 12 fid=fopen(filename,'w'); 13 13 … … 30 30 tria = 2; 31 31 32 32 %Create flags 33 grounded = sum( groundedice_levelset(mesh.segments(:,1:2))>0,2);33 grounded = sum(ocean_levelset(mesh.segments(:,1:2))>0,2); 34 34 A = zeros(nbs,2); 35 35 pos = find(mesh.segmentmarkers==4); 36 36 A(pos,:)=repmat([1,4],[numel(pos) 1]); -
../trunk-jpl/src/m/contrib/larour/ecco/MeltingGroundingLines.m
6 6 % 7 7 8 8 %get nodes on ice sheet and on ice shelf 9 pos_shelf=find(md.mask. groundedice_levelset<0.);9 pos_shelf=find(md.mask.ocean_levelset<0.); 10 10 pos_GL=intersect(unique(md.mesh.elements(find(md.mask.elementongroundedice),:)),unique(md.mesh.elements(find(md.mask.elementonfloatingice),:))); 11 11 12 12 for i=1:length(pos_shelf) -
../trunk-jpl/src/m/contrib/tsantos/mismip/gl_position.m
2 2 3 3 %initialization of some variables 4 4 if isfield(md.results,'TransientSolution') 5 data = md.results.TransientSolution(step).Mask GroundediceLevelset;5 data = md.results.TransientSolution(step).MaskOceanLevelset; 6 6 if isfield(md.results.TransientSolution,'MeshElements') 7 7 index = md.results.TransientSolution(step).MeshElements; 8 8 x = md.results.TransientSolution(step).MeshX; … … 13 13 y = md.mesh.y; 14 14 end 15 15 else 16 data = md.mask. groundedice_levelset;16 data = md.mask.ocean_levelset; 17 17 index = md.mesh.elements; 18 18 x = md.mesh.x; 19 19 y = md.mesh.y; -
../trunk-jpl/src/m/contrib/tsantos/mismip/gl_position_static.m
2 2 3 3 %initialization of some variables 4 4 if isfield(md.results,'TransientSolution') & false 5 data = md.results.TransientSolution(step).Mask GroundediceLevelset;5 data = md.results.TransientSolution(step).MaskOceanLevelset; 6 6 if isfield(md.results.TransientSolution,'MeshElements') 7 7 index = md.results.TransientSolution(step).MeshElements; 8 8 x = md.results.TransientSolution(step).MeshX; … … 13 13 y = md.mesh.y; 14 14 end 15 15 else 16 data = md.mask. groundedice_levelset;16 data = md.mask.ocean_levelset; 17 17 index = md.mesh.elements; 18 18 x = md.mesh.x; 19 19 y = md.mesh.y; -
../trunk-jpl/src/m/contrib/tsantos/remesh.m
62 62 NewModel.geometry.base = md.results.TransientSolution(time_step).Base; 63 63 NewModel.geometry.bed = md.results.TransientSolution(time_step).Bed;%md.geometry.bed; %use from parameterize 64 64 NewModel.geometry.thickness = md.results.TransientSolution(time_step).Thickness; 65 NewModel.mask. groundedice_levelset = md.results.TransientSolution(time_step).MaskGroundediceLevelset;65 NewModel.mask.ocean_levelset = md.results.TransientSolution(time_step).MaskOceanLevelset; 66 66 67 67 %copy other data 68 68 NewModel.miscellaneous = md.miscellaneous; -
../trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py
31 31 else: 32 32 #Guess where the ice front is 33 33 vertexonfloatingice = np.zeros((md.mesh.numberofvertices)) 34 pos = np.nonzero(np.sum(md.mask. groundedice_levelset[md.mesh.elements - 1] < 0., axis=1) > 0.)[0]34 pos = np.nonzero(np.sum(md.mask.ocean_levelset[md.mesh.elements - 1] < 0., axis=1) > 0.)[0] 35 35 vertexonfloatingice[md.mesh.elements[pos].astype(int) - 1] = 1. 36 36 vertexonicefront = np.logical_and(np.reshape(md.mesh.vertexonboundary, (-1, )), vertexonfloatingice > 0.) 37 37 … … 102 102 md.thermal.spctemperature[pos] = md.initialization.temperature[pos] #impose observed temperature on surface 103 103 if not isinstance(md.basalforcings.geothermalflux, np.ndarray) or not np.size(md.basalforcings.geothermalflux, axis=0) == md.mesh.numberofvertices: 104 104 md.basalforcings.geothermalflux = np.zeros((md.mesh.numberofvertices)) 105 md.basalforcings.geothermalflux[np.nonzero(md.mask. groundedice_levelset > 0.)] = 50. * 10.**- 3 #50mW / m2105 md.basalforcings.geothermalflux[np.nonzero(md.mask.ocean_levelset > 0.)] = 50. * 10.**- 3 #50mW / m2 106 106 else: 107 107 print(" no thermal boundary conditions created: no observed temperature found") 108 108 -
../trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.m
32 32 vertexonicefront=double(md.mesh.vertexonboundary & incontour); 33 33 else 34 34 %Guess where the ice front is 35 pos=find(sum(md.mask. groundedice_levelset(md.mesh.elements)<0.,2) >0.);35 pos=find(sum(md.mask.ocean_levelset(md.mesh.elements)<0.,2) >0.); 36 36 vertexonfloatingice=zeros(md.mesh.numberofvertices,1); 37 37 vertexonfloatingice(md.mesh.elements(pos,:))=1.; 38 38 vertexonicefront=double(md.mesh.vertexonboundary & vertexonfloatingice); … … 101 101 end 102 102 if (length(md.basalforcings.geothermalflux)~=md.mesh.numberofvertices), 103 103 md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1); 104 md.basalforcings.geothermalflux(find(md.mask. groundedice_levelset>0.))=50.*10.^-3; %50mW/m2104 md.basalforcings.geothermalflux(find(md.mask.ocean_levelset>0.))=50.*10.^-3; %50mW/m2 105 105 end 106 106 else 107 107 disp(' no thermal boundary conditions created: no observed temperature found'); -
../trunk-jpl/src/m/mesh/modelmerge2d.m
94 94 95 95 %now we can go through classes and transfer. 96 96 md=transfer_fields(md,md1,md2,'geometry',{'thickness','surface','bed','base'}); 97 md=transfer_fields(md,md1,md2,'mask',{' groundedice_levelset','ice_levelset','ocean_levelset','land_levelset','glacier_levelset'});97 md=transfer_fields(md,md1,md2,'mask',{'ocean_levelset','ice_levelset','ocean_levelset','land_levelset','glacier_levelset'}); 98 98 md=transfer_fields(md,md1,md2,'smb',{'mass_balance'}); 99 99 if strcmpi(class(md1.basalforcings),'linearbasalforcings'), 100 100 md=transfer_fields(md,md1,md2,'basalforcings',{'groundedice_melting_rate','geothermalflux'}); -
../trunk-jpl/src/m/mesh/TwoDToThreeD.m
37 37 md.mask=mask; 38 38 else 39 39 md.mask.ice_levelset=mask.ice_levelset; 40 md.mask. groundedice_levelset=mask.groundedice_levelset;40 md.mask.ocean_levelset=mask.ocean_levelset; 41 41 end -
../trunk-jpl/src/m/regional/BasinConstrainShelf.m
65 65 md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 66 66 67 67 %iceshelves: any vertex on floating ice is spc'd 68 pos=find(md.mask. groundedice_levelset<0.);68 pos=find(md.mask.ocean_levelset<0.); 69 69 md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 70 70 md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 71 71 -
../trunk-jpl/src/m/miscellaneous/diagnostics.m
34 34 35 35 %grounding line : 36 36 if getfieldvalue(options,'gl',0), 37 contours=contourlevelzero(md,md.mask. groundedice_levelset,0);37 contours=contourlevelzero(md,md.mask.ocean_levelset,0); 38 38 expwrite(contours,[path '/groundingline.exp']); 39 39 exp2shp([path '/groundingline.shp'],[path '/groundingline.exp']); 40 40 end -
../trunk-jpl/src/m/miscellaneous/transientrestart.m
54 54 end 55 55 56 56 %Update mask 57 if isfield(results,'Mask GroundediceLevelset'),58 md.mask. groundedice_levelset = results.MaskGroundediceLevelset;57 if isfield(results,'MaskOceanLevelset'), 58 md.mask.ocean_levelset = results.MaskOceanLevelset; 59 59 end 60 60 if isfield(results,'MaskIceLevelset'), 61 61 md.mask.ice_levelset = results.MaskIceLevelset; -
../trunk-jpl/src/m/parameterization/sethydrostaticmask.py
3 3 4 4 def setmask(md): 5 5 """ 6 SETHYDROSTATICMASK - establish groundedice_levelset field6 SETHYDROSTATICMASK - establish ocean_levelset field 7 7 8 8 Determines grounded and floating ice position based on 9 9 md.geometry.bed and md.geometry.thickness … … 19 19 raise IOError("hydrostaticmask error message: fields in md.geometry do not have the right size.") 20 20 21 21 # grounded ice level set 22 md.mask. groundedice_levelset = md.geometry.thickness + md.geometry.bed * md.materials.rho_water / md.materials.rho_ice22 md.mask.ocean_levelset = md.geometry.thickness + md.geometry.bed * md.materials.rho_water / md.materials.rho_ice 23 23 24 24 #Check consistency of geometry 25 if any(md.geometry.base[np.nonzero(md.mask. groundedice_levelset > 0.)] != md.geometry.bed[np.nonzero(md.mask.groundedice_levelset > 0.)]):25 if any(md.geometry.base[np.nonzero(md.mask.ocean_levelset > 0.)] != md.geometry.bed[np.nonzero(md.mask.ocean_levelset > 0.)]): 26 26 print("WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice") 27 27 28 if any(md.geometry.base[np.nonzero(md.mask. groundedice_levelset <= 0.)] < md.geometry.bed[np.nonzero(md.mask.groundedice_levelset <= 0.)]):28 if any(md.geometry.base[np.nonzero(md.mask.ocean_levelset <= 0.)] < md.geometry.bed[np.nonzero(md.mask.ocean_levelset <= 0.)]): 29 29 print("WARNING: md.geometry.base < md.geometry.bed on floating ice") 30 30 31 31 return md -
../trunk-jpl/src/m/parameterization/setmask.py
55 55 #}}} 56 56 57 57 #level sets 58 md.mask. groundedice_levelset = -1. * np.ones(md.mesh.numberofvertices)59 md.mask. groundedice_levelset[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = 1.58 md.mask.ocean_levelset = -1. * np.ones(md.mesh.numberofvertices) 59 md.mask.ocean_levelset[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = 1. 60 60 61 61 if(len(args)): 62 62 md.mask.ice_levelset = 1. * np.ones(md.mesh.numberofvertices) -
../trunk-jpl/src/m/parameterization/sethydrostaticmask.m
1 1 function md=sethydrostaticmask(md) 2 %SETHYDROSTATICMASK - establish groundedice_levelset field2 %SETHYDROSTATICMASK - establish ocean_levelset field 3 3 % 4 4 % Determines grounded and floating ice position based on 5 5 % md.geometry.bed and md.geometry.thickness … … 15 15 end 16 16 17 17 %grounded ice level set 18 md.mask. groundedice_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice;18 md.mask.ocean_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice; 19 19 20 20 %Check consistency of geometry 21 pos=find(md.mask. groundedice_levelset>0);21 pos=find(md.mask.ocean_levelset>0); 22 22 if(any(md.geometry.base(pos)~=md.geometry.bed(pos))), 23 23 disp('WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice'); 24 24 end 25 25 26 pos=find(md.mask. groundedice_levelset<=0);26 pos=find(md.mask.ocean_levelset<=0); 27 27 if(any(md.geometry.base(pos)<md.geometry.bed(pos))), 28 28 disp('WARNING: md.geometry.base < md.geometry.bed on floating ice'); 29 29 end -
../trunk-jpl/src/m/parameterization/setmask.m
52 52 %}}} 53 53 54 54 %level sets 55 md.mask. groundedice_levelset=vertexongroundedice;56 md.mask. groundedice_levelset(find(vertexongroundedice==0.))=-1.;55 md.mask.ocean_levelset=vertexongroundedice; 56 md.mask.ocean_levelset(find(vertexongroundedice==0.))=-1.; 57 57 58 58 if(nargin>3) 59 59 if(varargin(1)=='icedomain') -
../trunk-jpl/src/m/parameterization/killberg.m
2 2 function ice_levelset = killberg(md) 3 3 %KILLBERG - kill ice berg 4 4 % 5 % check md.mask.ice_levelset and md.mask. groundedice_levelset and5 % check md.mask.ice_levelset and md.mask.ocean_levelset and 6 6 % remove icebergs from md.mask.ice_levelset. This function is adapted 7 7 % from src/c/modules/KillIcebergsx/KillIcebergsx.cpp 8 8 % … … 24 24 25 25 %do not go through elements that are grounded, mark flag as 1 (done) 26 26 %and initialize mask as 1 for all vertices of these elements 27 isgrounded = max(md.mask. groundedice_levelset(md.mesh.elements),[],2)>0;27 isgrounded = max(md.mask.ocean_levelset(md.mesh.elements),[],2)>0; 28 28 pos = find(isgrounded); 29 29 element_flag(pos) = 1; 30 30 mask(md.mesh.elements(pos,:)) = 1; -
../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
626 626 case LoadingforceXEnum : return "LoadingforceX"; 627 627 case LoadingforceYEnum : return "LoadingforceY"; 628 628 case LoadingforceZEnum : return "LoadingforceZ"; 629 case Mask GroundediceLevelsetEnum : return "MaskGroundediceLevelset";629 case MaskOceanLevelsetEnum : return "MaskOceanLevelset"; 630 630 case MaskIceLevelsetEnum : return "MaskIceLevelset"; 631 631 case MaskLandLevelsetEnum : return "MaskLandLevelset"; 632 case MaskOceanLevelsetEnum : return "MaskOceanLevelset";633 632 case MasstransportSpcthicknessEnum : return "MasstransportSpcthickness"; 634 633 case MaterialsRheologyBEnum : return "MaterialsRheologyB"; 635 634 case MaterialsRheologyBbarEnum : return "MaterialsRheologyBbar"; -
../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
641 641 else if (strcmp(name,"LoadingforceX")==0) return LoadingforceXEnum; 642 642 else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum; 643 643 else if (strcmp(name,"LoadingforceZ")==0) return LoadingforceZEnum; 644 else if (strcmp(name,"Mask GroundediceLevelset")==0) return MaskGroundediceLevelsetEnum;644 else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum; 645 645 else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum; 646 646 else if (strcmp(name,"MaskLandLevelset")==0) return MaskLandLevelsetEnum; 647 else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum;648 647 else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum; 649 648 else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum; 650 649 else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum; … … 751 750 else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum; 752 751 else if (strcmp(name,"SmbMassBalanceClimate")==0) return SmbMassBalanceClimateEnum; 753 752 else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum; 753 else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum; 754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum; 758 else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum; 757 if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum; 759 758 else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum; 760 759 else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum; 761 760 else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum; … … 874 873 else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum; 875 874 else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum; 876 875 else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum; 876 else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum; 877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum; 881 else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum; 880 if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum; 882 881 else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum; 883 882 else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum; 884 883 else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; … … 997 996 else if (strcmp(name,"BasalforcingsPico")==0) return BasalforcingsPicoEnum; 998 997 else if (strcmp(name,"BeckmannGoosseFloatingMeltRate")==0) return BeckmannGoosseFloatingMeltRateEnum; 999 998 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 999 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 1004 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 1003 if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 1005 1004 else if (strcmp(name,"BoolInput2")==0) return BoolInput2Enum; 1006 1005 else if (strcmp(name,"IntInput2")==0) return IntInput2Enum; 1007 1006 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; … … 1120 1119 else if (strcmp(name,"IceMassScaled")==0) return IceMassScaledEnum; 1121 1120 else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum; 1122 1121 else if (strcmp(name,"IceVolumeAboveFloatationScaled")==0) return IceVolumeAboveFloatationScaledEnum; 1122 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 1127 else if (strcmp(name,"IceVolumeScaled")==0) return IceVolumeScaledEnum; 1126 if (strcmp(name,"IceVolumeScaled")==0) return IceVolumeScaledEnum; 1128 1127 else if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum; 1129 1128 else if (strcmp(name,"IcefrontMassFluxLevelset")==0) return IcefrontMassFluxLevelsetEnum; 1130 1129 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; … … 1243 1242 else if (strcmp(name,"Penta")==0) return PentaEnum; 1244 1243 else if (strcmp(name,"PentaInput")==0) return PentaInputEnum; 1245 1244 else if (strcmp(name,"Profiler")==0) return ProfilerEnum; 1245 else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum; 1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum; 1250 else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum; 1249 if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum; 1251 1250 else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum; 1252 1251 else if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum; 1253 1252 else if (strcmp(name,"Regular")==0) return RegularEnum; -
../trunk-jpl/src/c/shared/Enum/Enum.vim
624 624 syn keyword cConstant LoadingforceXEnum 625 625 syn keyword cConstant LoadingforceYEnum 626 626 syn keyword cConstant LoadingforceZEnum 627 syn keyword cConstant Mask GroundediceLevelsetEnum627 syn keyword cConstant MaskOceanLevelsetEnum 628 628 syn keyword cConstant MaskIceLevelsetEnum 629 629 syn keyword cConstant MaskLandLevelsetEnum 630 syn keyword cConstant MaskOceanLevelsetEnum631 630 syn keyword cConstant MasstransportSpcthicknessEnum 632 631 syn keyword cConstant MaterialsRheologyBEnum 633 632 syn keyword cConstant MaterialsRheologyBbarEnum -
../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
621 621 LoadingforceXEnum, 622 622 LoadingforceYEnum, 623 623 LoadingforceZEnum, 624 Mask GroundediceLevelsetEnum,624 MaskOceanLevelsetEnum, 625 625 MaskIceLevelsetEnum, 626 626 MaskLandLevelsetEnum, 627 MaskOceanLevelsetEnum,628 627 MasstransportSpcthicknessEnum, 629 628 MaterialsRheologyBEnum, 630 629 MaterialsRheologyBbarEnum, -
../trunk-jpl/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp
45 45 femmodel->parameters->FindParam(&maxbox,BasalforcingsPicoMaxboxcountEnum); 46 46 IssmDouble* dmax_basin_cpu=xNew<IssmDouble>(num_basins); 47 47 48 InputDuplicatex(femmodel,Mask GroundediceLevelsetEnum,DistanceToGroundinglineEnum);49 femmodel->DistanceToFieldValue(Mask GroundediceLevelsetEnum,0.,DistanceToGroundinglineEnum);48 InputDuplicatex(femmodel,MaskOceanLevelsetEnum,DistanceToGroundinglineEnum); 49 femmodel->DistanceToFieldValue(MaskOceanLevelsetEnum,0.,DistanceToGroundinglineEnum); 50 50 51 51 InputDuplicatex(femmodel,MaskIceLevelsetEnum,DistanceToCalvingfrontEnum); 52 52 femmodel->DistanceToFieldValue(MaskIceLevelsetEnum,0.,DistanceToCalvingfrontEnum); -
../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
136 136 vec_phi=new Vector<IssmDouble>(vertices->NumberOfVertices()); 137 137 for(i=0;i<elements->Size();i++){ 138 138 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 139 element->GetVectorFromInputs(vec_phi,Mask GroundediceLevelsetEnum,VertexPIdEnum);139 element->GetVectorFromInputs(vec_phi,MaskOceanLevelsetEnum,VertexPIdEnum); 140 140 } 141 141 vec_phi->Assemble(); 142 142 phi=vec_phi->ToMPISerial(); -
../trunk-jpl/src/c/cores/transient_core.cpp
196 196 if(VerboseSolution()) _printf0_(" computing new grounding line position\n"); 197 197 GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 198 198 199 femmodel->parameters->SetParam(Mask GroundediceLevelsetEnum,InputToExtrudeEnum);199 femmodel->parameters->SetParam(MaskOceanLevelsetEnum,InputToExtrudeEnum); 200 200 extrudefrombase_core(femmodel); 201 201 femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum); 202 202 extrudefrombase_core(femmodel); … … 207 207 femmodel->profiler->Stop(GROUNDINGLINECORE); 208 208 209 209 if(save_results){ 210 int outputs[3] = {SurfaceEnum,BaseEnum,Mask GroundediceLevelsetEnum};210 int outputs[3] = {SurfaceEnum,BaseEnum,MaskOceanLevelsetEnum}; 211 211 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3); 212 212 } 213 213 } … … 231 231 if(VerboseSolution()) _printf0_(" computing requested outputs\n"); 232 232 femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs,save_results); 233 233 if(isgroundingline && (groundingline_migration==AggressiveMigrationEnum || groundingline_migration==ContactEnum)){ 234 int outputs[1] = {Mask GroundediceLevelsetEnum};234 int outputs[1] = {MaskOceanLevelsetEnum}; 235 235 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1,save_results); 236 236 } 237 237 -
../trunk-jpl/src/c/classes/Loads/Riftfront.cpp
85 85 this->fill = IoRiftfillToEnum(reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+7))); 86 86 this->friction=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+8); 87 87 this->fractionincrement=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+10); 88 this->shelf=reCast<bool,IssmDouble>(iomodel->Data("md.mask. groundedice_levelset")[node1-1]<0.);88 this->shelf=reCast<bool,IssmDouble>(iomodel->Data("md.mask.ocean_levelset")[node1-1]<0.); 89 89 90 90 //parameters and hooked fields: we still can't point to them, they may not even exist. Configure will handle this. 91 91 this->parameters=NULL; -
../trunk-jpl/src/c/classes/FemModel.h
194 194 void GetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements); 195 195 void SetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements); 196 196 void GetMeshOnPartition(Vertices* femmodel_vertices,Elements* femmodel_elements,IssmDouble** px, IssmDouble** py, IssmDouble** pz, int** pelementslist,int** psidtoindex); 197 void GetGroundediceLevelSet(IssmDouble** pmasklevelset);198 197 void CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements); 199 198 void CreateMaterials(int newnumberofelements,bool* my_elements,Materials* materials); 200 199 void CreateConstraints(Vertices* newfemmodel_vertices,int analysis_enum,Constraints* newfemmodel_constraints); -
../trunk-jpl/src/c/classes/FemModel.cpp
3349 3349 } 3350 3350 3351 3351 /*Update inputs*/ 3352 element->AddInput2(Mask GroundediceLevelsetEnum,&phi[0],P1Enum);3352 element->AddInput2(MaskOceanLevelsetEnum,&phi[0],P1Enum); 3353 3353 element->AddInput2(ThicknessEnum,&h[0],P1Enum); 3354 3354 element->AddInput2(BaseEnum,&b[0],P1Enum); 3355 3355 } … … 3670 3670 return; 3671 3671 } 3672 3672 /*}}}*/ 3673 void FemModel::GetGroundediceLevelSet(IssmDouble **pmasklevelset){/*{{{*/3674 3675 int elementswidth = this->GetElementsWidth();//just 2D mesh, tria elements3676 int numberofvertices = this->vertices->NumberOfVertices();3677 3678 IssmDouble* elementlevelset=xNew<IssmDouble>(elementswidth);3679 int* elem_vertices=xNew<int>(elementswidth);3680 Vector<IssmDouble>* vmasklevelset=new Vector<IssmDouble>(numberofvertices);3681 3682 for(int i=0;i<this->elements->Size();i++){3683 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));3684 element->GetInputListOnVertices(elementlevelset,MaskGroundediceLevelsetEnum);3685 element->GetVerticesSidList(elem_vertices);3686 vmasklevelset->SetValue(elem_vertices[0],elementlevelset[0],INS_VAL);3687 vmasklevelset->SetValue(elem_vertices[1],elementlevelset[1],INS_VAL);3688 vmasklevelset->SetValue(elem_vertices[2],elementlevelset[2],INS_VAL);3689 }3690 3691 /*Assemble*/3692 vmasklevelset->Assemble();3693 3694 /*Serialize and set output*/3695 (*pmasklevelset)=vmasklevelset->ToMPISerial();3696 3697 /*Cleanup*/3698 xDelete<IssmDouble>(elementlevelset);3699 xDelete<int>(elem_vertices);3700 delete vmasklevelset;3701 3702 }3703 /*}}}*/3704 3673 void FemModel::CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements){/*{{{*/ 3705 3674 3706 3675 /*newlementslist is in Matlab indexing*/ … … 4365 4334 4366 4335 for(int i=0;i<this->elements->Size();i++){ 4367 4336 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 4368 element->GetInputListOnVertices(elementlevelset,Mask GroundediceLevelsetEnum);4337 element->GetInputListOnVertices(elementlevelset,MaskOceanLevelsetEnum); 4369 4338 int sid = element->Sid(); 4370 4339 vmasklevelset->SetValue(sid,(elementlevelset[0]+elementlevelset[1]+elementlevelset[2])/3.,INS_VAL); 4371 4340 } … … 4430 4399 4431 4400 /*Here, "zero level set" means grounding line or ice front, depending on the level set type*/ 4432 4401 /*pzerolevelset_points are the element center points with zero level set. X and Y coords*/ 4433 if(levelset_type!=Mask GroundediceLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){4402 if(levelset_type!=MaskOceanLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){ 4434 4403 _error_("level set type not implemented yet!"); 4435 4404 } 4436 4405 … … 5417 5386 /*Fill hmaxvertices*/ 5418 5387 if(this->amrbamg->thicknesserror_threshold>0) this->GethmaxVerticesFromEstimators(hmaxvertices_serial,ThicknessErrorEstimatorEnum); 5419 5388 if(this->amrbamg->deviatoricerror_threshold>0) this->GethmaxVerticesFromEstimators(hmaxvertices_serial,DeviatoricStressErrorEstimatorEnum); 5420 if(this->amrbamg->groundingline_distance>0) this->GethmaxVerticesFromZeroLevelSetDistance(hmaxvertices_serial,Mask GroundediceLevelsetEnum);5389 if(this->amrbamg->groundingline_distance>0) this->GethmaxVerticesFromZeroLevelSetDistance(hmaxvertices_serial,MaskOceanLevelsetEnum); 5421 5390 if(this->amrbamg->icefront_distance>0) this->GethmaxVerticesFromZeroLevelSetDistance(hmaxvertices_serial,MaskIceLevelsetEnum); 5422 5391 } 5423 5392 … … 5529 5498 int sid,numberofpoints; 5530 5499 5531 5500 switch(levelset_type){ 5532 case Mask GroundediceLevelsetEnum:5501 case MaskOceanLevelsetEnum: 5533 5502 threshold = this->amrbamg->groundingline_distance; 5534 5503 resolution = this->amrbamg->groundingline_resolution; 5535 5504 break; … … 5691 5660 5692 5661 /*Here, "zero level set" means grounding line or ice front, depending on the level set type*/ 5693 5662 /*pverticedistance is the minimal vertice distance to the grounding line or ice front*/ 5694 if(levelset_type!=Mask GroundediceLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){5663 if(levelset_type!=MaskOceanLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){ 5695 5664 _error_("level set type not implemented yet!"); 5696 5665 } 5697 5666 … … 5753 5722 int newnumberofelements = -1; 5754 5723 5755 5724 /*Get fields, if requested*/ 5756 if(this->amr->groundingline_distance>0) this->GetElementDistanceToZeroLevelSet(&gl_distance,Mask GroundediceLevelsetEnum);5725 if(this->amr->groundingline_distance>0) this->GetElementDistanceToZeroLevelSet(&gl_distance,MaskOceanLevelsetEnum); 5757 5726 if(this->amr->icefront_distance>0) this->GetElementDistanceToZeroLevelSet(&if_distance,MaskIceLevelsetEnum); 5758 5727 if(this->amr->thicknesserror_threshold>0) this->ThicknessZZErrorEstimator(&thicknesserror); 5759 5728 if(this->amr->deviatoricerror_threshold>0) this->ZZErrorEstimator(&deviatoricerror); … … 5855 5824 5856 5825 /*Here, "zero level set" means grounding line or ice front, depending on the level set type*/ 5857 5826 /*pverticedistance is the minimal vertice distance to the grounding line or ice front*/ 5858 if(levelset_type!=Mask GroundediceLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){5827 if(levelset_type!=MaskOceanLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){ 5859 5828 _error_("level set type not implemented yet!"); 5860 5829 } 5861 5830 -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
286 286 /*Retrieve all inputs and parameters we will need*/ 287 287 Input2* vx_input = this->GetInput2(VxAverageEnum); _assert_(vx_input); 288 288 Input2* vy_input = this->GetInput2(VyAverageEnum); _assert_(vy_input); 289 Input2* gr_input = this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gr_input);289 Input2* gr_input = this->GetInput2(MaskOceanLevelsetEnum); _assert_(gr_input); 290 290 Input2* bs_input = this->GetInput2(BaseEnum); _assert_(bs_input); 291 291 Input2* B_input = this->GetInput2(MaterialsRheologyBbarEnum); _assert_(B_input); 292 292 Input2* n_input = this->GetInput2(MaterialsRheologyNEnum); _assert_(n_input); … … 1246 1246 Element::GetInputListOnVertices(&bed[0],BedEnum); 1247 1247 Element::GetInputListOnVertices(&surface[0],SurfaceEnum); 1248 1248 Element::GetInputListOnVertices(&pressure[0],PressureEnum); 1249 Element::GetInputListOnVertices(&phi[0],Mask GroundediceLevelsetEnum);1249 Element::GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum); 1250 1250 IssmDouble rho_ice = FindParam(MaterialsRhoIceEnum); 1251 1251 IssmDouble rho_water = FindParam(MaterialsRhoSeawaterEnum); 1252 1252 IssmDouble gravity = FindParam(ConstantsGEnum); … … 1385 1385 IssmDouble f1,f2; 1386 1386 1387 1387 /*Recover parameters and values*/ 1388 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);1388 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 1389 1389 1390 1390 /*Be sure that values are not zero*/ 1391 1391 if(gl[0]==0.) gl[0]=gl[0]+epsilon; … … 1439 1439 IssmDouble xyz_bis[NUMVERTICES2D][3]; 1440 1440 1441 1441 /*Recover parameters and values*/ 1442 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);1442 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 1443 1443 1444 1444 /*Be sure that values are not zero*/ 1445 1445 if(gl[0]==0.) gl[0]=gl[0]+epsilon; … … 2068 2068 /*Make sure there is a grounding line here*/ 2069 2069 if(!IsOnBase()) return 0; 2070 2070 if(!IsIceInElement()) return 0; 2071 if(!IsZeroLevelset(Mask GroundediceLevelsetEnum)) return 0;2071 if(!IsZeroLevelset(MaskOceanLevelsetEnum)) return 0; 2072 2072 2073 2073 /*Scaled not implemented yet...*/ 2074 2074 _assert_(!scaled); … … 2083 2083 this->GetVerticesCoordinates(&xyz_list); 2084 2084 2085 2085 /*Recover parameters and values*/ 2086 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);2086 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 2087 2087 2088 2088 /*Be sure that values are not zero*/ 2089 2089 if(gl[0]==0.) gl[0]=gl[0]+epsilon; … … 3187 3187 density=rho_ice/rho_water; 3188 3188 Element::GetInputListOnVertices(&h[0],ThicknessEnum); 3189 3189 Element::GetInputListOnVertices(&r[0],BedEnum); 3190 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);3190 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 3191 3191 3192 3192 /*go through vertices, and figure out which ones are on the ice sheet, and want to unground: */ 3193 3193 for(int i=0;i<NUMVERTICES;i++){ … … 3281 3281 /*Get inputs*/ 3282 3282 Input2* slopex_input=this->GetInput2(BedSlopeXEnum); _assert_(slopex_input); 3283 3283 Input2* slopey_input=this->GetInput2(BedSlopeYEnum); _assert_(slopey_input); 3284 Input2* groundedicelevelset_input=this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(groundedicelevelset_input);3284 Input2* groundedicelevelset_input=this->GetInput2(MaskOceanLevelsetEnum); _assert_(groundedicelevelset_input); 3285 3285 3286 3286 /*Loop over basal nodes and update their CS*/ 3287 3287 GaussPenta* gauss = new GaussPenta(); … … 4173 4173 /*Get material parameters :*/ 4174 4174 rho_ice=FindParam(MaterialsRhoIceEnum); 4175 4175 Input2* floatingmelt_input = this->GetInput2(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input); 4176 Input2* gllevelset_input = this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);4176 Input2* gllevelset_input = this->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 4177 4177 Input2* scalefactor_input = NULL; 4178 4178 if(scaled==true){ 4179 4179 scalefactor_input = this->GetInput2(MeshScaleFactorEnum); _assert_(scalefactor_input); … … 4218 4218 /*Get material parameters :*/ 4219 4219 rho_ice=FindParam(MaterialsRhoIceEnum); 4220 4220 Input2* groundedmelt_input = this->GetInput2(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input); 4221 Input2* gllevelset_input = this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);4221 Input2* gllevelset_input = this->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 4222 4222 Input2* scalefactor_input = NULL; 4223 4223 if(scaled==true){ 4224 4224 scalefactor_input = this->GetInput2(MeshScaleFactorEnum); _assert_(scalefactor_input); -
../trunk-jpl/src/c/classes/Elements/Seg.cpp
263 263 IssmDouble gl[NUMVERTICES]; 264 264 265 265 /*Recover parameters and values*/ 266 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);266 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 267 267 268 268 /*Be sure that values are not zero*/ 269 269 if(gl[0]==0.) gl[0]=gl[0]+epsilon; -
../trunk-jpl/src/c/classes/Elements/Tetra.cpp
696 696 /*Get inputs*/ 697 697 Input2* slopex_input=this->GetInput2(BedSlopeXEnum); _assert_(slopex_input); 698 698 Input2* slopey_input=this->GetInput2(BedSlopeYEnum); _assert_(slopey_input); 699 Input2* groundedicelevelset_input=this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(groundedicelevelset_input);699 Input2* groundedicelevelset_input=this->GetInput2(MaskOceanLevelsetEnum); _assert_(groundedicelevelset_input); 700 700 vertexonbase = xNew<IssmDouble>(numnodes); 701 701 this->GetInputListOnNodesVelocity(&vertexonbase[0],MeshVertexonbaseEnum); 702 702 -
../trunk-jpl/src/c/classes/Elements/Element.cpp
1985 1985 int migration_style; 1986 1986 parameters->FindParam(&migration_style,GroundinglineMigrationEnum); 1987 1987 1988 Input2* input = this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(input);1988 Input2* input = this->GetInput2(MaskOceanLevelsetEnum); _assert_(input); 1989 1989 1990 1990 if(migration_style==SubelementMigrationEnum){ //Floating if all nodes are floating 1991 1991 if(input->GetInputMax() <= 0.) shelf=true; … … 2005 2005 }/*}}}*/ 2006 2006 bool Element::IsGrounded(){/*{{{*/ 2007 2007 2008 Input2* input=this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(input);2008 Input2* input=this->GetInput2(MaskOceanLevelsetEnum); _assert_(input); 2009 2009 if(input->GetInputMax() > 0.){ 2010 2010 return true; 2011 2011 } … … 2257 2257 GetInputListOnVertices(&b[0],BaseEnum); 2258 2258 GetInputListOnVertices(&r[0],BedEnum); 2259 2259 GetInputListOnVertices(&sl[0],SealevelEnum); 2260 GetInputListOnVertices(&phi[0],Mask GroundediceLevelsetEnum);2260 GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum); 2261 2261 rho_water = FindParam(MaterialsRhoSeawaterEnum); 2262 2262 rho_ice = FindParam(MaterialsRhoIceEnum); 2263 2263 density = rho_ice/rho_water; … … 2311 2311 /*do nothing*/ 2312 2312 } 2313 2313 } 2314 this->AddInput2(Mask GroundediceLevelsetEnum,&phi[0],P1Enum);2314 this->AddInput2(MaskOceanLevelsetEnum,&phi[0],P1Enum); 2315 2315 2316 2316 /*Update inputs*/ 2317 2317 this->AddInput2(SurfaceEnum,&s[0],P1Enum); -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
313 313 Input2* vx_input = this->GetInput2(VxEnum); _assert_(vx_input); 314 314 Input2* vy_input = this->GetInput2(VyEnum); _assert_(vy_input); 315 315 Input2* B_input = this->GetInput2(MaterialsRheologyBbarEnum); _assert_(B_input); 316 Input2* gr_input = this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gr_input);316 Input2* gr_input = this->GetInput2(MaskOceanLevelsetEnum); _assert_(gr_input); 317 317 Input2* bs_input = this->GetInput2(BaseEnum); _assert_(bs_input); 318 318 Input2* smax_fl_input = this->GetInput2(CalvingStressThresholdFloatingiceEnum); _assert_(smax_fl_input); 319 319 Input2* smax_gr_input = this->GetInput2(CalvingStressThresholdGroundediceEnum); _assert_(smax_gr_input); … … 1365 1365 Element::GetInputListOnVertices(&bed[0],BedEnum); 1366 1366 Element::GetInputListOnVertices(&surface[0],SurfaceEnum); 1367 1367 Element::GetInputListOnVertices(&pressure[0],PressureEnum); 1368 Element::GetInputListOnVertices(&phi[0],Mask GroundediceLevelsetEnum);1368 Element::GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum); 1369 1369 IssmDouble rho_ice = FindParam(MaterialsRhoIceEnum); 1370 1370 IssmDouble rho_water = FindParam(MaterialsRhoSeawaterEnum); 1371 1371 IssmDouble gravity = FindParam(ConstantsGEnum); … … 1571 1571 IssmDouble f1,f2; 1572 1572 1573 1573 /*Recover parameters and values*/ 1574 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);1574 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 1575 1575 1576 1576 /*Be sure that values are not zero*/ 1577 1577 if(gl[0]==0.) gl[0]=gl[0]+epsilon; … … 1627 1627 1628 1628 /*Recover parameters and values*/ 1629 1629 parameters->FindParam(&domaintype,DomainTypeEnum); 1630 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);1630 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 1631 1631 1632 1632 /*Be sure that values are not zero*/ 1633 1633 if(gl[0]==0.) gl[0]=gl[0]+epsilon; … … 2877 2877 2878 2878 /*Make sure there is a grounding line here*/ 2879 2879 if(!IsIceInElement()) return 0; 2880 if(!IsZeroLevelset(Mask GroundediceLevelsetEnum)) return 0;2880 if(!IsZeroLevelset(MaskOceanLevelsetEnum)) return 0; 2881 2881 2882 2882 /*Scaled not implemented yet...*/ 2883 2883 _assert_(!scaled); … … 2893 2893 2894 2894 /*Recover parameters and values*/ 2895 2895 parameters->FindParam(&domaintype,DomainTypeEnum); 2896 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);2896 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 2897 2897 2898 2898 /*Be sure that values are not zero*/ 2899 2899 if(gl[0]==0.) gl[0]=gl[0]+epsilon; … … 3825 3825 density=rho_ice/rho_water; 3826 3826 Element::GetInputListOnVertices(&h[0],ThicknessEnum); 3827 3827 Element::GetInputListOnVertices(&r[0],BedEnum); 3828 Element::GetInputListOnVertices(&gl[0],Mask GroundediceLevelsetEnum);3828 Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum); 3829 3829 3830 3830 /*go through vertices, and figure out which ones are grounded and want to unground: */ 3831 3831 for(int i=0;i<NUMVERTICES;i++){ … … 3896 3896 3897 3897 /*Get inputs*/ 3898 3898 Input2* slope_input=this->GetInput2(BedSlopeXEnum); _assert_(slope_input); 3899 Input2* groundedicelevelset_input=this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(groundedicelevelset_input);3899 Input2* groundedicelevelset_input=this->GetInput2(MaskOceanLevelsetEnum); _assert_(groundedicelevelset_input); 3900 3900 vertexonbase = xNew<IssmDouble>(numnodes); 3901 3901 this->GetInputListOnNodesVelocity(&vertexonbase[0],MeshVertexonbaseEnum); 3902 3902 … … 4642 4642 /*Get material parameters :*/ 4643 4643 rho_ice=FindParam(MaterialsRhoIceEnum); 4644 4644 Input2* floatingmelt_input = this->GetInput2(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input); 4645 Input2* gllevelset_input = this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);4645 Input2* gllevelset_input = this->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 4646 4646 Input2* scalefactor_input = NULL; 4647 4647 if(scaled==true){ 4648 4648 scalefactor_input = this->GetInput2(MeshScaleFactorEnum); _assert_(scalefactor_input); … … 4687 4687 /*Get material parameters :*/ 4688 4688 rho_ice=FindParam(MaterialsRhoIceEnum); 4689 4689 Input2* groundedmelt_input = this->GetInput2(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input); 4690 Input2* gllevelset_input = this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);4690 Input2* gllevelset_input = this->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 4691 4691 Input2* scalefactor_input = NULL; 4692 4692 if(scaled==true){ 4693 4693 scalefactor_input = this->GetInput2(MeshScaleFactorEnum); _assert_(scalefactor_input); … … 5622 5622 } 5623 5623 5624 5624 /*early return if we are fully floating:*/ 5625 Input2* gr_input=this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gr_input);5625 Input2* gr_input=this->GetInput2(MaskOceanLevelsetEnum); _assert_(gr_input); 5626 5626 if (gr_input->GetInputMax()<=0){ 5627 5627 constant=0; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum); 5628 5628 *peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage! … … 6128 6128 if(!IsIceOnlyInElement() && !IsWaterInElement()) return; 6129 6129 6130 6130 /*early return if we are fully floating: */ 6131 Input2* gr_input=this->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gr_input);6131 Input2* gr_input=this->GetInput2(MaskOceanLevelsetEnum); _assert_(gr_input); 6132 6132 if(gr_input->GetInputMax()<=0)return; 6133 6133 6134 6134 /*recover computational flags: */ -
../trunk-jpl/src/c/analyses/HydrologyGlaDSAnalysis.cpp
135 135 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum); 136 136 } 137 137 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 138 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);138 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 139 139 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.bump_height",HydrologyBumpHeightEnum); 140 140 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.sheet_conductivity",HydrologySheetConductivityEnum); 141 141 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.neumannflux",HydrologyNeumannfluxEnum); -
../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
353 353 element->GetVerticesCoordinatesBase(&xyz_list_base); 354 354 element->GetInputValue(&approximation,ApproximationEnum); 355 355 Input2* base_input=element->GetInput2(BaseEnum); _assert_(base_input); 356 Input2* groundedice_input=element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(groundedice_input);356 Input2* groundedice_input=element->GetInput2(MaskOceanLevelsetEnum); _assert_(groundedice_input); 357 357 Input2* groundedice_melting_input=element->GetInput2(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedice_melting_input); 358 358 Input2* floatingice_melting_input=element->GetInput2(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingice_melting_input); 359 359 Input2* vx_input=element->GetInput2(VxEnum); _assert_(vx_input); -
../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
243 243 case Domain2DhorizontalEnum: 244 244 vx_input=basalelement->GetInput2(VxEnum); _assert_(vx_input); 245 245 vy_input=basalelement->GetInput2(VyEnum); _assert_(vy_input); 246 gr_input=basalelement->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gr_input);246 gr_input=basalelement->GetInput2(MaskOceanLevelsetEnum); _assert_(gr_input); 247 247 break; 248 248 case Domain3DEnum: 249 249 vx_input=basalelement->GetInput2(VxAverageEnum); _assert_(vx_input); 250 250 vy_input=basalelement->GetInput2(VyAverageEnum); _assert_(vy_input); 251 gr_input=basalelement->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gr_input);251 gr_input=basalelement->GetInput2(MaskOceanLevelsetEnum); _assert_(gr_input); 252 252 break; 253 253 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 254 254 } -
../trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp
105 105 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum); 106 106 } 107 107 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 108 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);108 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 109 109 iomodel->FetchDataToInput(inputs2,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum); 110 110 iomodel->FetchDataToInput(inputs2,elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum); 111 111 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.head",HydrologyHeadEnum); -
../trunk-jpl/src/c/analyses/HydrologyPismAnalysis.cpp
32 32 33 33 /*Add input to elements*/ 34 34 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 35 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);35 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 36 36 iomodel->FetchDataToInput(inputs2,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum); 37 37 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.drainage_rate",HydrologyDrainageRateEnum); 38 38 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.watercolumn_max",HydrologyWatercolumnMaxEnum); -
../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
149 149 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.base",BaseEnum); 150 150 iomodel->FetchDataToInput(inputs2,elements,"md.slr.sealevel",SealevelEnum,0); 151 151 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 152 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);152 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 153 153 iomodel->FetchDataToInput(inputs2,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum); 154 154 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.vx",VxEnum); 155 155 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.vy",VyEnum); … … 621 621 element->FindParam(&stabilization,MasstransportStabilizationEnum); 622 622 Input2* gmb_input = element->GetInput2(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input); 623 623 Input2* fmb_input = element->GetInput2(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input); 624 Input2* gllevelset_input = element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);624 Input2* gllevelset_input = element->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 625 625 Input2* ms_input = element->GetInput2(SmbMassBalanceEnum); _assert_(ms_input); 626 626 Input2* thickness_input = element->GetInput2(ThicknessEnum); _assert_(thickness_input); 627 627 Input2* vxaverage_input = element->GetInput2(VxAverageEnum); _assert_(vxaverage_input); … … 736 736 Input2* gmb_input = element->GetInput2(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input); 737 737 Input2* fmb_input = element->GetInput2(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input); 738 738 Input2* ms_input = element->GetInput2(SmbMassBalanceEnum); _assert_(ms_input); 739 Input2* gllevelset_input = element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);739 Input2* gllevelset_input = element->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 740 740 Input2* thickness_input = element->GetInput2(ThicknessEnum); _assert_(thickness_input); 741 741 742 742 /*Recover portion of element that is grounded*/ … … 857 857 basalelement->GetInputListOnVertices(&oldthickness[0],ThicknessOldEnum); 858 858 basalelement->GetInputListOnVertices(&oldbase[0],BaseOldEnum); 859 859 basalelement->GetInputListOnVertices(&oldsurface[0],SurfaceOldEnum); 860 basalelement->GetInputListOnVertices(&phi[0],Mask GroundediceLevelsetEnum);860 basalelement->GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum); 861 861 basalelement->GetInputListOnVertices(&sealevel[0],SealevelEnum); 862 862 basalelement->GetInputListOnVertices(&cumdeltathickness[0],SealevelriseCumDeltathicknessOldEnum); 863 863 … … 1069 1069 element->FindParam(&stabilization,MasstransportStabilizationEnum); 1070 1070 Input2* gmb_input = element->GetInput2(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input); 1071 1071 Input2* fmb_input = element->GetInput2(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input); 1072 Input2* gllevelset_input = element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);1072 Input2* gllevelset_input = element->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 1073 1073 Input2* ms_input = element->GetInput2(SmbMassBalanceEnum); _assert_(ms_input); 1074 1074 Input2* vxaverage_input = element->GetInput2(VxAverageEnum); _assert_(vxaverage_input); 1075 1075 Input2* vyaverage_input = element->GetInput2(VyAverageEnum); _assert_(vyaverage_input); -
../trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
34 34 } 35 35 36 36 /*Create inputs: */ 37 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);37 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 38 38 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 39 39 //those only if we have requested geodetic computations: 40 40 iomodel->FetchData(&geodetic,"md.slr.geodetic"); -
../trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.cpp
222 222 IssmDouble *bed = xNew<IssmDouble>(numnodes); 223 223 IssmDouble *ls_active = xNew<IssmDouble>(numnodes); 224 224 225 element->GetInputListOnNodes(&mask[0],Mask GroundediceLevelsetEnum);225 element->GetInputListOnNodes(&mask[0],MaskOceanLevelsetEnum); 226 226 element->GetInputListOnNodes(&bed[0],BaseEnum); 227 227 element->GetInputListOnNodes(&ls_active[0],IceMaskNodeActivationEnum); 228 228 -
../trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp
63 63 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum); 64 64 } 65 65 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 66 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);66 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 67 67 iomodel->FetchDataToInput(inputs2,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum); 68 68 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.watercolumn",WatercolumnEnum); 69 69 -
../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
160 160 } 161 161 162 162 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.thickness",ThicknessEnum); 163 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);163 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 164 164 if(ismovingfront){ 165 165 if(iomodel->domaintype!=Domain2DhorizontalEnum) 166 166 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); // required for updating active nodes -
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
102 102 iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation"); 103 103 iomodel->FetchData(&nodeonFS,NULL,NULL,"md.flowequation.borderFS"); 104 104 iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase"); 105 iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask. groundedice_levelset");105 iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask.ocean_levelset"); 106 106 if(iomodel->domaintype==Domain3DEnum){ 107 107 iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvz"); 108 108 } … … 129 129 iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation"); 130 130 iomodel->DeleteData(nodeonFS,"md.flowequation.borderFS"); 131 131 iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase"); 132 iomodel->DeleteData(groundedice_ls,"md.mask. groundedice_levelset");132 iomodel->DeleteData(groundedice_ls,"md.mask.ocean_levelset"); 133 133 134 134 /*Pressure spc*/ 135 135 int count = constraints->Size(); … … 201 201 if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonHO,NULL,NULL,"md.flowequation.borderHO"); 202 202 if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonFS,NULL,NULL,"md.flowequation.borderFS"); 203 203 if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase"); 204 if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask. groundedice_levelset");204 if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask.ocean_levelset"); 205 205 iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation"); 206 206 iomodel->FetchData(&surface,NULL,NULL,"md.geometry.surface"); 207 207 iomodel->FetchData(&z,NULL,NULL,"md.mesh.z"); … … 431 431 if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonHO,"md.flowequation.borderHO"); 432 432 if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonFS,"md.flowequation.borderFS"); 433 433 if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase"); 434 if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(groundedice_ls,"md.mask. groundedice_levelset");434 if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(groundedice_ls,"md.mask.ocean_levelset"); 435 435 iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation"); 436 436 iomodel->DeleteData(surface,"md.geometry.surface"); 437 437 iomodel->DeleteData(z,"md.mesh.z"); … … 495 495 /*Create Riffront loads for rifts: */ 496 496 if(numrifts){ 497 497 iomodel->FetchData(&riftinfo,&numriftsegments,NULL,"md.rifts.riftstruct"); 498 iomodel->FetchData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask. groundedice_levelset");498 iomodel->FetchData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask.ocean_levelset"); 499 499 for(i=0;i<numriftsegments;i++){ 500 500 if(iomodel->my_elements[reCast<int,IssmDouble>(*(riftinfo+RIFTINFOSIZE*i+2))-1]){ 501 501 loads->AddObject(new Riftfront(count+1,i,iomodel)); … … 502 502 count++; 503 503 } 504 504 } 505 iomodel->DeleteData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask. groundedice_levelset");505 iomodel->DeleteData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask.ocean_levelset"); 506 506 xDelete<IssmDouble>(riftinfo); 507 507 } 508 508 }/*}}}*/ … … 757 757 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.base",BaseEnum); 758 758 iomodel->FetchDataToInput(inputs2,elements,"md.slr.sealevel",SealevelEnum,0); 759 759 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 760 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);760 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 761 761 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.vx",VxEnum,0.); 762 762 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.vy",VyEnum,0.); 763 763 iomodel->FetchDataToInput(inputs2,elements,"md.stressbalance.loadingforcex",LoadingforceXEnum); … … 1441 1441 /*Recover portion of element that is grounded*/ 1442 1442 if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list); 1443 1443 if(friction_style==SubelementFriction2Enum){ 1444 gllevelset_input=element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);1444 gllevelset_input=element->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 1445 1445 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating); 1446 1446 gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 1447 1447 } … … 2479 2479 /*Recover portion of element that is grounded*/ 2480 2480 if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list_base); 2481 2481 if(friction_style==SubelementFriction2Enum){ 2482 gllevelset_input=element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);2482 gllevelset_input=element->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 2483 2483 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating); 2484 2484 gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 2485 2485 } … … 3962 3962 if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list_base); 3963 3963 if(friction_style==SubelementFriction2Enum){ 3964 3964 if(domaintype==Domain2DverticalEnum) _error_("Subelement Friction 2 not implemented yet for Flowline"); 3965 gllevelset_input=element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(gllevelset_input);3965 gllevelset_input=element->GetInput2(MaskOceanLevelsetEnum); _assert_(gllevelset_input); 3966 3966 element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating); 3967 3967 //gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2); 3968 3968 gauss=element->NewGaussBase(3); -
../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
792 792 IssmDouble* groundedice = xNew<IssmDouble>(numnodes); 793 793 794 794 basalelement->GetInputListOnVertices(&meltingrate[0],BasalforcingsGroundediceMeltingRateEnum); 795 basalelement->GetInputListOnVertices(&groundedice[0],Mask GroundediceLevelsetEnum);795 basalelement->GetInputListOnVertices(&groundedice[0],MaskOceanLevelsetEnum); 796 796 797 797 /*if melting rate is not positive and node is not floating, deactivate*/ 798 798 for(int i=0;i<numnodes;i++){ -
../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
134 134 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.base",BaseEnum); 135 135 iomodel->FetchDataToInput(inputs2,elements,"md.slr.sealevel",SealevelEnum,0); 136 136 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 137 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);137 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 138 138 if(iomodel->domaintype!=Domain2DhorizontalEnum){ 139 139 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); 140 140 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum); -
../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
138 138 iomodel->FetchDataToInput(inputs2,elements,"md.slr.sealevel",SealevelEnum,0); 139 139 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.base",BaseEnum); 140 140 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 141 iomodel->FetchDataToInput(inputs2,elements,"md.mask. groundedice_levelset",MaskGroundediceLevelsetEnum);141 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); 142 142 if(iomodel->domaintype!=Domain2DhorizontalEnum){ 143 143 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); 144 144 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum); -
../trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
295 295 /*Retrieve all inputs and parameters*/ 296 296 basalelement->GetVerticesCoordinates(&xyz_list); 297 297 basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 298 Input2* groundedice_input = basalelement->GetInput2(Mask GroundediceLevelsetEnum); _assert_(groundedice_input);298 Input2* groundedice_input = basalelement->GetInput2(MaskOceanLevelsetEnum); _assert_(groundedice_input); 299 299 Input2* gmb_input = basalelement->GetInput2(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input); 300 300 Input2* fmb_input = basalelement->GetInput2(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input); 301 301 Input2* base_input = basalelement->GetInput2(BaseEnum); _assert_(base_input); … … 410 410 if(!element->IsOnBase()) continue; 411 411 412 412 int numnodes = element->GetNumberOfNodes(); 413 Input2* groundedice_input = element->GetInput2(Mask GroundediceLevelsetEnum); _assert_(groundedice_input);413 Input2* groundedice_input = element->GetInput2(MaskOceanLevelsetEnum); _assert_(groundedice_input); 414 414 Input2* onbase_input = element->GetInput2(MeshVertexonbaseEnum); _assert_(onbase_input); 415 415 Input2* base_input = element->GetInput2(BaseEnum); _assert_(base_input); 416 416
Note:
See TracBrowser
for help on using the repository browser.