Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h =================================================================== --- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 17221) +++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 17222) @@ -678,6 +678,7 @@ /*Levelset related enums (will be moved to appropriate place when finished){{{*/ TransientIslevelsetEnum, ExtrapolationVariableEnum, + IceMaskNodeActivationEnum, /*}}}*/ MaximumNumberOfDefinitionsEnum }; Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp =================================================================== --- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 17221) +++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 17222) @@ -637,6 +637,7 @@ case LliboutryDuvalEnum : return "LliboutryDuval"; case TransientIslevelsetEnum : return "TransientIslevelset"; case ExtrapolationVariableEnum : return "ExtrapolationVariable"; + case IceMaskNodeActivationEnum : return "IceMaskNodeActivation"; case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions"; default : return "unknown"; Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp =================================================================== --- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 17221) +++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 17222) @@ -652,6 +652,7 @@ else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum; else if (strcmp(name,"TransientIslevelset")==0) return TransientIslevelsetEnum; else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum; + else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum; else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum; else stage=7; } Index: ../trunk-jpl/src/m/classes/mask.m =================================================================== --- ../trunk-jpl/src/m/classes/mask.m (revision 17221) +++ ../trunk-jpl/src/m/classes/mask.m (revision 17222) @@ -38,6 +38,14 @@ function marshall(obj,md,fid) % {{{ WriteData(fid,'object',obj,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1); WriteData(fid,'object',obj,'fieldname','ice_levelset','format','DoubleMat','mattype',1); + + % get mask of vertices of elements with ice + isice=md.mask.ice_levelset<=0.; + vlist = zeros(md.mesh.numberofvertices,1); + pos=find(sum(isice(md.mesh.elements),2)>0); + vlist(md.mesh.elements(pos,:))=1; + WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1); + end % }}} end end Index: ../trunk-jpl/src/m/classes/mask.py =================================================================== --- ../trunk-jpl/src/m/classes/mask.py (revision 17221) +++ ../trunk-jpl/src/m/classes/mask.py (revision 17222) @@ -1,3 +1,4 @@ +import numpy from fielddisplay import fielddisplay from EnumDefinitions import * from checkfield import * @@ -42,4 +43,11 @@ def marshall(self,md,fid): # {{{ WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1) WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1) + + # get mask of vertices of elements with ice + isice=numpy.array(md.mask.ice_levelset<=0.,int) + vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int) + pos=numpy.nonzero(numpy.sum(isice[md.mesh.elements-1],axis=1))[0] + vlist[md.mesh.elements[pos,:]-1]=1 + WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1); # }}} Index: ../trunk-jpl/src/m/enum/EnumDefinitions.py =================================================================== --- ../trunk-jpl/src/m/enum/EnumDefinitions.py (revision 17221) +++ ../trunk-jpl/src/m/enum/EnumDefinitions.py (revision 17222) @@ -629,4 +629,5 @@ def LliboutryDuvalEnum(): return StringToEnum("LliboutryDuval")[0] def TransientIslevelsetEnum(): return StringToEnum("TransientIslevelset")[0] def ExtrapolationVariableEnum(): return StringToEnum("ExtrapolationVariable")[0] +def IceMaskNodeActivationEnum(): return StringToEnum("IceMaskNodeActivation")[0] def MaximumNumberOfDefinitionsEnum(): return StringToEnum("MaximumNumberOfDefinitions")[0]