Changeset 19048
- Timestamp:
- 01/29/15 08:44:39 (10 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 50 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/basalforcings.m
r19040 r19048 11 11 end 12 12 methods 13 function createxml(self,fid) % {{{ 14 fprintf(fid, '\n\n'); 15 fprintf(fid, '%s\n', '<!-- basalforcings -->'); 16 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="melting_rate" type="', class(self.melting_rate),'" default="', num2str(self.melting_rate),'">', ' <section name="basalforcings" />',' <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>'); 17 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n', '<parameter key ="geothermalflux" type="', class(self.geothermalflux),'" default="', num2str(self.geothermalflux),'">', ' <section name="basalforcings" />',' <help> geothermal heat flux [W/m^2] </help>','</parameter>'); 18 19 end % }}} 13 function createxml(self,fid) % {{{ 14 fprintf(fid, '\n\n'); 15 fprintf(fid, '%s\n', '<!-- basalforcings -->'); 16 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="melting_rate" type="', class(self.melting_rate),'" default="', num2str(self.melting_rate),'">', ' <section name="basalforcings" />',' <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>'); 17 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n', '<parameter key ="geothermalflux" type="', class(self.geothermalflux),'" default="', num2str(self.geothermalflux),'">', ' <section name="basalforcings" />',' <help> geothermal heat flux [W/m^2] </help>','</parameter>'); 18 19 end % }}} 20 function self = extrude(self,md) % {{{ 21 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 22 self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1); 23 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux 24 end % }}} 20 25 function self = basalforcings(varargin) % {{{ 21 26 switch nargin -
issm/trunk-jpl/src/m/classes/basalforcings.py
r19027 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from checkfield import checkfield … … 30 31 return string 31 32 #}}} 33 def extrude(self,md): # {{{ 34 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1) 35 self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1) 36 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1) #bedrock only gets geothermal flux 37 return self 38 #}}} 32 39 def initialize(self,md): # {{{ 33 40 -
issm/trunk-jpl/src/m/classes/calving.m
r19040 r19048 29 29 end 30 30 end % }}} 31 function self = extrude(self,md) % {{{ 32 self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node'); 33 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node'); 34 end % }}} 31 35 function self = setdefaultparameters(self) % {{{ 32 36 -
issm/trunk-jpl/src/m/classes/calving.py
r19027 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from StringToEnum import StringToEnum … … 31 32 return string 32 33 #}}} 34 def extrude(self,md): # {{{ 35 self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node') 36 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node') 37 return self 38 #}}} 33 39 def setdefaultparameters(self): # {{{ 34 40 -
issm/trunk-jpl/src/m/classes/calvinglevermann.m
r19040 r19048 28 28 error('constructor not supported'); 29 29 end 30 end % }}} 31 function self = extrude(self,md) % {{{ 32 self.coeff=project3d(md,'vector',self.coeff,'type','node'); 33 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node'); 30 34 end % }}} 31 35 function self = setdefaultparameters(self) % {{{ -
issm/trunk-jpl/src/m/classes/calvinglevermann.py
r19027 r19048 30 30 return string 31 31 #}}} 32 def extrude(self,md): # {{{ 33 self.coeff=project3d(md,'vector',self.coeff,'type','node') 34 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node') 35 return self 36 #}}} 32 37 def setdefaultparameters(self): # {{{ 33 38 -
issm/trunk-jpl/src/m/classes/calvingpi.m
r19040 r19048 28 28 error('constructor not supported'); 29 29 end 30 end % }}} 31 function self = extrude(self,md) % {{{ 32 self.coeff=project3d(md,'vector',self.coeff,'type','node'); 33 self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node'); 30 34 end % }}} 31 35 function self = setdefaultparameters(self) % {{{ -
issm/trunk-jpl/src/m/classes/damage.m
r19040 r19048 85 85 86 86 end % }}} 87 88 87 function self = damage(varargin) % {{{ 89 88 switch nargin … … 103 102 error('constructor not supported'); 104 103 end 104 end % }}} 105 function self = extrude(self,md) % {{{ 106 self.D=project3d(md,'vector',self.D,'type','node'); 107 self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node'); 105 108 end % }}} 106 109 function self = setdefaultparameters(self) % {{{ -
issm/trunk-jpl/src/m/classes/damage.py
r19027 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from StringToEnum import StringToEnum … … 74 75 return s 75 76 # }}} 77 def extrude(self,md): # {{{ 78 self.D=project3d(md,'vector',self.D,'type','node') 79 self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node') 80 return self 81 #}}} 76 82 def setdefaultparameters(self): # {{{ 77 83 -
issm/trunk-jpl/src/m/classes/flowequation.m
r19040 r19048 107 107 fprintf(fid,'%s\n%s\n','</frame>'); 108 108 end % }}} 109 function self = extrude(self,md) % {{{ 110 self.element_equation=project3d(md,'vector',self.element_equation,'type','element'); 111 self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node'); 112 self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node'); 113 self.borderHO=project3d(md,'vector',self.borderHO,'type','node'); 114 self.borderFS=project3d(md,'vector',self.borderFS,'type','node'); 115 end % }}} 109 116 function self = flowequation(varargin) % {{{ 110 117 switch nargin -
issm/trunk-jpl/src/m/classes/flowequation.py
r18309 r19048 1 1 import numpy 2 2 import copy 3 from project3d import project3d 3 4 from fielddisplay import fielddisplay 4 5 from EnumDefinitions import * … … 58 59 return string 59 60 #}}} 61 def extrude(self,md): # {{{ 62 self.element_equation=project3d(md,'vector',self.element_equation,'type','element') 63 self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node') 64 self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node') 65 self.borderHO=project3d(md,'vector',self.borderHO,'type','node') 66 self.borderFS=project3d(md,'vector',self.borderFS,'type','node') 67 return self 68 #}}} 60 69 def setdefaultparameters(self): # {{{ 61 70 -
issm/trunk-jpl/src/m/classes/friction.m
r19040 r19048 11 11 end 12 12 methods 13 function createxml(self,fid) % {{{ 14 fprintf(fid, '\n\n'); 15 fprintf(fid, '%s\n', '<!-- Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p -->'); 16 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p">','<section name="friction" />'); 17 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="coefficient" type="', class(self.coefficient),'" default="', convert2str(self.coefficient),'">', ' <section name="friction" />',' <help> friction coefficient [SI] </help>','</parameter>'); 18 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="p" type="', class(self.p),'" default="', convert2str(self.p),'">', ' <section name="friction" />',' <help> p exponent </help>','</parameter>'); 19 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n', '<parameter key ="q" type="', class(self.q),'" default="', convert2str(self.q),'">', ' <section name="friction" />',' <help> q exponent </help>','</parameter>'); 20 fprintf(fid,'%s\n%s\n','</frame>'); 21 end % }}} 13 function createxml(self,fid) % {{{ 14 fprintf(fid, '\n\n'); 15 fprintf(fid, '%s\n', '<!-- Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p -->'); 16 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p">','<section name="friction" />'); 17 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="coefficient" type="', class(self.coefficient),'" default="', convert2str(self.coefficient),'">', ' <section name="friction" />',' <help> friction coefficient [SI] </help>','</parameter>'); 18 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="p" type="', class(self.p),'" default="', convert2str(self.p),'">', ' <section name="friction" />',' <help> p exponent </help>','</parameter>'); 19 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n', '<parameter key ="q" type="', class(self.q),'" default="', convert2str(self.q),'">', ' <section name="friction" />',' <help> q exponent </help>','</parameter>'); 20 fprintf(fid,'%s\n%s\n','</frame>'); 21 end % }}} 22 function self = extrude(self,md) % {{{ 23 self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1); 24 self.p=project3d(md,'vector',self.p,'type','element'); 25 self.q=project3d(md,'vector',self.q,'type','element'); 26 end % }}} 22 27 function self = friction(varargin) % {{{ 23 28 switch nargin -
issm/trunk-jpl/src/m/classes/friction.py
r19027 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from checkfield import checkfield … … 29 30 return string 30 31 #}}} 32 def extrude(self,md): # {{{ 33 self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1) 34 self.p=project3d(md,'vector',self.p,'type','element') 35 self.q=project3d(md,'vector',self.q,'type','element') 36 return self 37 #}}} 31 38 def setdefaultparameters(self): # {{{ 32 39 return self -
issm/trunk-jpl/src/m/classes/frictionhydro.m
r19040 r19048 31 31 md = checkfield(md,'fieldname','friction.As','NaN',1,'size',[md.mesh.numberofelements 1]); 32 32 end % }}} 33 function self = extrude(self,md) % {{{ 34 self.q=project3d(md,'vector',self.q,'type','element'); 35 self.C=project3d(md,'vector',self.C,'type','element'); 36 self.As=project3d(md,'vector',self.As,'type','element'); 37 self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1); 38 end % }}} 33 39 function disp(self) % {{{ 34 40 disp(sprintf('Effective Pressure based friction law described in Gagliardini 2007')); -
issm/trunk-jpl/src/m/classes/frictionwaterlayer.m
r19042 r19048 36 36 37 37 end % }}} 38 function self = extrude(self,md) % {{{ 39 self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1); 40 self.p=project3d(md,'vector',self.p,'type','element'); 41 self.q=project3d(md,'vector',self.q,'type','element'); 42 self.water_layer=project3d(md,'vector',self.water_layer,'type','node','layer',1); 43 end % }}} 38 44 function disp(self) % {{{ 39 45 disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(bed+water_layer), r=q/p and s=1/p)')); -
issm/trunk-jpl/src/m/classes/frictionweertman.m
r19040 r19048 10 10 end 11 11 methods 12 13 14 15 16 17 18 19 20 12 function createxml(self,fid) % {{{ 13 fprintf(fid, '\n\n'); 14 fprintf(fid, '%s\n', '<!-- Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p -->'); 15 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p">','<section name="frictionweertman" />'); 16 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="coefficient" type="', class(self.coefficient),'" default="', convert2str(self.coefficient),'">', ' <section name="frictionweertman" />',' <help> frictionweertman coefficient [SI] </help>','</parameter>'); 17 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="p" type="', class(self.p),'" default="', convert2str(self.p),'">', ' <section name="frictionweertman" />',' <help> p exponent </help>','</parameter>'); 18 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n', '<parameter key ="q" type="', class(self.q),'" default="', convert2str(self.q),'">', ' <section name="frictionweertman" />',' <help> q exponent </help>','</parameter>'); 19 fprintf(fid,'%s\n%s\n','</frame>'); 20 end % }}} 21 21 function self = frictionweertman(varargin) % {{{ 22 22 switch nargin … … 26 26 error('constructor not supported'); 27 27 end 28 end % }}} 29 function self = extrude(self,md) % {{{ 30 md.friction.C=project3d(md,'vector',md.friction.C,'type','node','layer',1); 31 md.friction.m=project3d(md,'vector',md.friction.m,'type','element'); 28 32 end % }}} 29 33 function self = setdefaultparameters(self) % {{{ -
issm/trunk-jpl/src/m/classes/frictionweertman.py
r19027 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from checkfield import checkfield -
issm/trunk-jpl/src/m/classes/geometry.m
r19040 r19048 33 33 end 34 34 methods 35 %function createxml(self,fid) 36 function createxml(self, fid)% {{{ 37 fprintf(fid, '\n\n'); 38 fprintf(fid, '%s\n', '<!-- geometry -->'); 39 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Geometry parameters">','<section name="geometry" />'); 35 function createxml(self, fid)% {{{ 36 fprintf(fid, '\n\n'); 37 fprintf(fid, '%s\n', '<!-- geometry -->'); 38 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Geometry parameters">','<section name="geometry" />'); 40 39 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="surface" type="','path','" optional="','false','">',' <section name="geometry" />',' <help> surface elevation [m] </help>','</parameter>'); 41 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thickness" type="','path','" optional="','false','">',' <section name="geometry" />',' <help> ice thickness [m] </help>','</parameter>'); 42 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bed" type="','path','" optional="','false','">',' <section name="geometry" />',' <help> bed elevation [m] </help>','</parameter>'); 43 %fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bathymetry" type="',class(self.bathymetry),'" default="',convert2str(self.bathymetry),'">',' <section name="geometry" />',' <help> bathymetry elevation [m] </help>','</parameter>'); 44 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="hydrostatic_ratio" type="',class(self.hydrostatic_ratio),'" default="',convert2str(self.hydrostatic_ratio),'">',' <section name="geometry" />',' <help> coefficient for ice shelves; thickness correction: hydrostatic_ratio H_obs+ (1-hydrostatic_ratio) H_hydro </help>','</parameter>'); 45 fprintf(fid,'%s\n%s\n','</frame>'); 46 end % }}} 40 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thickness" type="','path','" optional="','false','">',' <section name="geometry" />',' <help> ice thickness [m] </help>','</parameter>'); 41 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bed" type="','path','" optional="','false','">',' <section name="geometry" />',' <help> bed elevation [m] </help>','</parameter>'); 42 %fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bathymetry" type="',class(self.bathymetry),'" default="',convert2str(self.bathymetry),'">',' <section name="geometry" />',' <help> bathymetry elevation [m] </help>','</parameter>'); 43 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="hydrostatic_ratio" type="',class(self.hydrostatic_ratio),'" default="',convert2str(self.hydrostatic_ratio),'">',' <section name="geometry" />',' <help> coefficient for ice shelves; thickness correction: hydrostatic_ratio H_obs+ (1-hydrostatic_ratio) H_hydro </help>','</parameter>'); 44 fprintf(fid,'%s\n%s\n','</frame>'); 45 end % }}} 46 function self = extrude(self,md) % {{{ 47 self.surface=project3d(md,'vector',self.surface,'type','node'); 48 self.thickness=project3d(md,'vector',self.thickness,'type','node'); 49 self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node'); 50 self.base=project3d(md,'vector',self.base,'type','node'); 51 self.bed=project3d(md,'vector',self.bed,'type','node'); 52 end % }}} 47 53 function self = geometry(varargin) % {{{ 48 54 switch nargin -
issm/trunk-jpl/src/m/classes/geometry.py
r19027 r19048 1 from project3d import project3d 1 2 from fielddisplay import fielddisplay 2 3 from EnumDefinitions import * … … 32 33 return string 33 34 #}}} 35 def extrude(self,md): # {{{ 36 self.surface=project3d(md,'vector',self.surface,'type','node') 37 self.thickness=project3d(md,'vector',self.thickness,'type','node') 38 self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node') 39 self.base=project3d(md,'vector',self.base,'type','node') 40 self.bed=project3d(md,'vector',self.bed,'type','node') 41 return self 42 #}}} 34 43 def setdefaultparameters(self): # {{{ 35 44 return self -
issm/trunk-jpl/src/m/classes/gia.m
r19040 r19048 11 11 end 12 12 methods 13 function createxml(self,fid) % {{{ 14 fprintf(fid, '<!-- gia -->\n'); 15 16 % gia solution parameters 17 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="gia parameters">','<section name="gia" />'); 18 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mantle_viscosity" type="',class(self.mantle_viscosity),'" default="',convert2str(self.mantle_viscosity),'">',' <section name="gia" />',' <help> mantle viscosity[Pa s] </help>',' </parameter>'); 19 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="lithosphere_thickness" type="',class(self.lithosphere_thickness),'" default="',convert2str(self.lithosphere_thickness),'">',' <section name="gia" />',' <help> lithosphere thickness (km) </help>',' </parameter>'); 20 %cross_section_shape drop-down (1 o r 2) 21 fprintf(fid,'%s\n%s\n%s\n%s\n',' <parameter key ="cross_section_shape" type="alternative" optional="false">',' <section name="gia" />',' <help> 1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore </help>'); 22 fprintf(fid,'%s\n',' <option value="1" type="string" default="true"> </option>'); 23 fprintf(fid,'%s\n%s\n',' <option value="2" type="string" default="false"> </option>','</parameter>'); 24 25 fprintf(fid,'%s\n%s\n','</frame>'); 26 27 end % }}} 13 function createxml(self,fid) % {{{ 14 fprintf(fid, '<!-- gia -->\n'); 15 16 % gia solution parameters 17 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="gia parameters">','<section name="gia" />'); 18 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mantle_viscosity" type="',class(self.mantle_viscosity),'" default="',convert2str(self.mantle_viscosity),'">',' <section name="gia" />',' <help> mantle viscosity[Pa s] </help>',' </parameter>'); 19 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="lithosphere_thickness" type="',class(self.lithosphere_thickness),'" default="',convert2str(self.lithosphere_thickness),'">',' <section name="gia" />',' <help> lithosphere thickness (km) </help>',' </parameter>'); 20 %cross_section_shape drop-down (1 o r 2) 21 fprintf(fid,'%s\n%s\n%s\n%s\n',' <parameter key ="cross_section_shape" type="alternative" optional="false">',' <section name="gia" />',' <help> 1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore </help>'); 22 fprintf(fid,'%s\n',' <option value="1" type="string" default="true"> </option>'); 23 fprintf(fid,'%s\n%s\n',' <option value="2" type="string" default="false"> </option>','</parameter>'); 24 25 fprintf(fid,'%s\n%s\n','</frame>'); 26 27 end % }}} 28 function self = extrude(self,md) % {{{ 29 self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node'); 30 self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node'); 31 end % }}} 28 32 function self = gia(varargin) % {{{ 29 33 switch nargin -
issm/trunk-jpl/src/m/classes/gia.py
r17497 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from checkfield import checkfield … … 30 31 return string 31 32 #}}} 33 def extrude(self,md): # {{{ 34 self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node') 35 self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node') 36 return self 37 #}}} 32 38 def setdefaultparameters(self): # {{{ 33 39 -
issm/trunk-jpl/src/m/classes/hydrologydc.m
r19040 r19048 37 37 end 38 38 methods 39 function self = extrude(self,md) % {{{ 40 self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1); 41 self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1); 42 self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1); 43 self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1); 44 if(self.isefficientlayer==1); 45 self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1); 46 end 47 end % }}} 39 48 % {{{ function self = hydrologydc(varargin) 40 49 function self = hydrologydc(varargin) … … 44 53 otherwise 45 54 error('constructor not supported'); 46 55 end 47 56 end 48 57 % }}} … … 57 66 function self = setdefaultparameters(self) 58 67 59 %Parameters from de Fleurian 201468 %Parameters from de Fleurian 2014 60 69 self.water_compressibility = 5.04e-10; 61 70 self.isefficientlayer = 1; … … 86 95 % {{{ function md = checkconsistency(self,md,solution,analyses) 87 96 function md = checkconsistency(self,md,solution,analyses) 88 %Early return97 %Early return 89 98 if ~ismember(HydrologyDCInefficientAnalysisEnum(),analyses) & ~ismember(HydrologyDCEfficientAnalysisEnum(),analyses), 90 99 return; … … 101 110 if self.sedimentlimit_flag==1, 102 111 md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0,'numel',1); 103 112 end 104 113 if self.transfer_flag==1, 105 114 md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0,'numel',1); 106 115 end 107 116 md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'timeseries',1); 108 117 … … 127 136 md = checkmessage(md,'Colapsing thickness for EPL larger than initial thickness'); 128 137 end 129 138 end 130 139 end 131 140 % }}} … … 147 156 if self.sedimentlimit_flag==1, 148 157 fielddisplay(self,'sedimentlimit','user defined upper limit for the inefficient layer [m]'); 149 158 end 150 159 fielddisplay(self,'transfer_flag',['what kind of transfer method is applied between the layers']); 151 160 disp(sprintf('%55s 0: no transfer',' ')); … … 153 162 if self.transfer_flag==1, 154 163 fielddisplay(self,'leakage_factor','user defined leakage factor [m]'); 155 164 end 156 165 fielddisplay(self,'basal_moulin_input','water flux at a given point [m3 s-1]'); 157 166 disp(sprintf(' - for the sediment layer')); … … 174 183 fielddisplay(self,'epl_conductivity','epl conductivity [m^2/s]'); 175 184 fielddisplay(self,'eplflip_lock','lock the epl activation to avoid fli-floping (default is 0, no stabilization)'); 176 185 end 177 186 178 187 end … … 191 200 if self.sedimentlimit_flag==1, 192 201 WriteData(fid,'object',self,'fieldname','sedimentlimit','format','Double'); 193 202 end 194 203 if self.transfer_flag==1, 195 204 WriteData(fid,'object',self,'fieldname','leakage_factor','format','Double'); 196 205 end 197 206 WriteData(fid,'object',self,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1) 198 207 … … 214 223 WriteData(fid,'object',self,'fieldname','epl_conductivity','format','Double'); 215 224 WriteData(fid,'object',self,'fieldname','eplflip_lock','format','Integer'); 216 217 end 218 % }}}219 225 end 226 end 227 % }}} 228 end 220 229 end -
issm/trunk-jpl/src/m/classes/hydrologydc.py
r19027 r19048 1 1 import numpy 2 from project3d import project3d 2 3 from fielddisplay import fielddisplay 3 4 from EnumDefinitions import * … … 47 48 self.setdefaultparameters() 48 49 #}}} 49 50 50 def __repr__(self): # {{{ 51 51 string=' hydrology Dual Porous Continuum Equivalent parameters:' … … 95 95 return string 96 96 #}}} 97 def extrude(self,md): # {{{ 98 self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1) 99 self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1) 100 self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1) 101 self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1) 102 self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1) 103 if self.isefficientlayer==1 : 104 self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1) 105 return self 106 #}}} 97 107 def setdefaultparameters(self): #{{{ 98 108 … … 125 135 return self 126 136 # }}} 127 128 137 def initialize(self,md): # {{{ 129 138 if numpy.all(numpy.isnan(self.basal_moulin_input)): -
issm/trunk-jpl/src/m/classes/hydrologyshreve.m
r19042 r19048 10 10 end 11 11 methods 12 13 14 15 16 17 18 12 function createxml(self,fid) % {{{ 13 fprintf(fid, '\n\n'); 14 fprintf(fid, '%s\n', '<!-- Hydrology -->'); 15 16 % Convergence criteria 17 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Hydrologyshreve solution parameters">','<section name="hydrologyshreve" />'); 18 19 19 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="spcwatercolumn" type="', class(self.spcwatercolumn),'" default="', convert2str(self.spcwatercolumn),'">', ' <section name="hydrologyshreve" />',' <help> water thickness constraints (NaN means no constraint) [m] </help>','</parameter>'); 20 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="stabilization" type="', class(self.stabilization),'" default="', convert2str(self.stabilization),'">', ' <section name="hydrologyshreve" />',' <help> artificial diffusivity (default is 1). can be more than 1 to increase diffusivity. </help>','</parameter>'); 21 fprintf(fid,'%s\n%s\n','</frame>'); 22 end % }}} 20 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n', '<parameter key ="stabilization" type="', class(self.stabilization),'" default="', convert2str(self.stabilization),'">', ' <section name="hydrologyshreve" />',' <help> artificial diffusivity (default is 1). can be more than 1 to increase diffusivity. </help>','</parameter>'); 21 fprintf(fid,'%s\n%s\n','</frame>'); 22 end % }}} 23 function self = extrude(self,md) % {{{ 24 end % }}} 23 25 function self = hydrologyshreve(varargin) % {{{ 24 26 switch nargin -
issm/trunk-jpl/src/m/classes/hydrologyshreve.py
r19027 r19048 27 27 return string 28 28 #}}} 29 def extrude(self,md): # {{{ 30 return self 31 #}}} 29 32 def setdefaultparameters(self): # {{{ 30 33 -
issm/trunk-jpl/src/m/classes/initialization.m
r19040 r19048 35 35 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="watercolumn" type="',class(self.watercolumn),'" default="',self.watercolumn,'">',' <section name="initialization" />',' <help> thickness of subglacial water [m] </help>','</parameter>'); 36 36 fprintf(fid,'%s\n%s\n','</frame>'); 37 end % }}} 38 function self = extrude(self,md) % {{{ 39 self.vx=project3d(md,'vector',self.vx,'type','node'); 40 self.vy=project3d(md,'vector',self.vy,'type','node'); 41 self.vz=project3d(md,'vector',self.vz,'type','node'); 42 self.vel=project3d(md,'vector',self.vel,'type','node'); 43 self.temperature=project3d(md,'vector',self.temperature,'type','node'); 44 self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node'); 45 self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node','layer',1); 46 self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1); 47 self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1); 48 self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1); 49 50 %Lithostatic pressure by default 51 self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z); 37 52 end % }}} 38 53 function self = initialization(varargin) % {{{ -
issm/trunk-jpl/src/m/classes/initialization.py
r18732 r19048 1 1 import numpy 2 from project3d import project3d 2 3 from fielddisplay import fielddisplay 3 4 from EnumDefinitions import * … … 48 49 return string 49 50 #}}} 51 def extrude(self,md): # {{{ 52 self.vx=project3d(md,'vector',self.vx,'type','node') 53 self.vy=project3d(md,'vector',self.vy,'type','node') 54 self.vz=project3d(md,'vector',self.vz,'type','node') 55 self.vel=project3d(md,'vector',self.vel,'type','node') 56 self.temperature=project3d(md,'vector',self.temperature,'type','node') 57 self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node') 58 self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node') 59 self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1) 60 self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1) 61 self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1) 62 63 #Lithostatic pressure by default 64 self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z.reshape(-1,1)) 65 return self 66 #}}} 50 67 def setdefaultparameters(self): # {{{ 51 68 return self -
issm/trunk-jpl/src/m/classes/inversion.m
r19040 r19048 84 84 error('constructor not supported'); 85 85 end 86 end % }}} 87 function self = extrude(self,md) % {{{ 88 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node'); 89 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node'); 90 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node'); 91 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node'); 92 if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end; 93 if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end; 94 if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end; 86 95 end % }}} 87 96 function self = setdefaultparameters(self) % {{{ -
issm/trunk-jpl/src/m/classes/inversion.py
r18994 r19048 1 1 import numpy 2 from project3d import project3d 2 3 from fielddisplay import fielddisplay 3 4 from EnumDefinitions import * … … 72 73 return string 73 74 #}}} 75 def extrude(self,md): # {{{ 76 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node') 77 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node') 78 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node') 79 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node') 80 if not numpy.any(numpy.isnan(self.cost_functions_coefficients)): 81 self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node') 82 if not numpy.any(numpy.isnan(self.min_parameters)): 83 self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node') 84 if not numpy.any(numpy.isnan(self.max_parameters)): 85 self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node') 86 return self 87 #}}} 74 88 def setdefaultparameters(self): # {{{ 75 89 -
issm/trunk-jpl/src/m/classes/inversionvalidation.m
r19042 r19048 22 22 end 23 23 methods 24 function self = extrude(self,md) % {{{ 25 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node'); 26 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node'); 27 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node'); 28 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node'); 29 if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end; 30 if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end; 31 if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end; 32 end % }}} 24 33 function self = inversionvalidation(varargin) % {{{ 25 34 switch nargin -
issm/trunk-jpl/src/m/classes/m1qn3inversion.m
r19040 r19048 27 27 end 28 28 methods 29 function self = extrude(self,md) % {{{ 30 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node'); 31 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node'); 32 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node'); 33 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node'); 34 if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end; 35 if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end; 36 if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end; 37 end % }}} 29 38 function self = m1qn3inversion(varargin) % {{{ 30 39 switch nargin -
issm/trunk-jpl/src/m/classes/m1qn3inversion.py
r19041 r19048 1 1 import numpy 2 from project3d import project3d 2 3 from fielddisplay import fielddisplay 3 4 from EnumDefinitions import * … … 94 95 return string 95 96 #}}} 97 def extrude(self,md): # {{{ 98 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node') 99 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node') 100 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node') 101 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node') 102 if not numpy.any(numpy.isnan(self.cost_functions_coefficients)): 103 self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node') 104 if not numpy.any(numpy.isnan(self.min_parameters)): 105 self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node') 106 if not numpy.any(numpy.isnan(self.max_parameters)): 107 self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node') 108 return self 109 #}}} 96 110 def setdefaultparameters(self): # {{{ 97 111 -
issm/trunk-jpl/src/m/classes/mask.m
r19040 r19048 22 22 end 23 23 methods 24 25 26 24 function createxml(self,fid) % {{{ 25 fprintf(fid, '\n\n'); 26 fprintf(fid, '%s\n', '<!-- mask -->'); 27 27 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="groundedice_levelset" type="',class(self.groundedice_levelset),'" default="',self.groundedice_levelset,'">',' <section name="mask" />',' <help> is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if &lt; 0 </help>','</parameter>'); 28 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="ice_levelset" type="',class(self.ice_levelset),'" default="',self.ice_levelset,'">',' <section name="mask" />',' <help> presence of ice if > 0, icefront position if = 0, no ice if &lt; 0 </help>','</parameter>'); 28 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="ice_levelset" type="',class(self.ice_levelset),'" default="',self.ice_levelset,'">',' <section name="mask" />',' <help> presence of ice if > 0, icefront position if = 0, no ice if &lt; 0 </help>','</parameter>'); 29 end % }}} 30 function self = extrude(self,md) % {{{ 31 self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node'); 32 self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node'); 29 33 end % }}} 30 34 function self = mask(varargin) % {{{ -
issm/trunk-jpl/src/m/classes/mask.py
r18652 r19048 1 1 import numpy 2 2 from fielddisplay import fielddisplay 3 from project3d import project3d 3 4 from EnumDefinitions import * 4 5 from checkfield import checkfield … … 28 29 return string 29 30 #}}} 31 def extrude(self,md): # {{{ 32 self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node') 33 self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node') 34 return self 35 #}}} 30 36 def setdefaultparameters(self): # {{{ 31 37 return self -
issm/trunk-jpl/src/m/classes/masstransport.m
r19040 r19048 58 58 error('constructor not supported'); 59 59 end 60 end % }}} 61 function self = extrude(self,md) % {{{ 62 self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node'); 60 63 end % }}} 61 64 function list = defaultoutputs(self,md) % {{{ -
issm/trunk-jpl/src/m/classes/masstransport.py
r19027 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from StringToEnum import StringToEnum … … 38 39 return string 39 40 #}}} 41 def extrude(self,md): # {{{ 42 self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node') 43 return self 44 #}}} 40 45 def defaultoutputs(self,md): # {{{ 41 46 -
issm/trunk-jpl/src/m/classes/matdamageice.m
r19040 r19048 63 63 64 64 65 end % }}} 66 function self = extrude(self,md) % {{{ 67 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node'); 68 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element'); 65 69 end % }}} 66 70 function self = matdamageice(varargin) % {{{ -
issm/trunk-jpl/src/m/classes/matdamageice.py
r17948 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import MaterialsEnum, MatdamageiceEnum, MaterialsRheologyLawEnum, MaterialsRhoSeawaterEnum 3 4 from StringToEnum import StringToEnum … … 63 64 return string 64 65 #}}} 66 def extrude(self,md): # {{{ 67 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node') 68 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element') 69 return self 70 #}}} 65 71 def setdefaultparameters(self): # {{{ 66 72 #ice density (kg/m^3) -
issm/trunk-jpl/src/m/classes/matice.m
r19040 r19048 70 70 71 71 72 end % }}} 73 function self = extrude(self,md) % {{{ 74 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node'); 75 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element'); 72 76 end % }}} 73 77 function self = matice(varargin) % {{{ -
issm/trunk-jpl/src/m/classes/matice.py
r19027 r19048 1 1 from fielddisplay import fielddisplay 2 from project3d import project3d 2 3 from EnumDefinitions import * 3 4 from StringToEnum import StringToEnum … … 63 64 return string 64 65 #}}} 66 def extrude(self,md): # {{{ 67 self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node') 68 self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element') 69 return self 70 #}}} 65 71 def setdefaultparameters(self): # {{{ 66 72 #ice density (kg/m^3) -
issm/trunk-jpl/src/m/classes/model.m
r19040 r19048 750 750 %Ok, now deal with the other fields from the 2d mesh: 751 751 752 %bedinfo and surface info 753 md.mesh.vertexonbase=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',1); 754 md.mesh.vertexonsurface=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',md.mesh.numberoflayers); 755 md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node'); 756 752 757 %lat long 753 758 md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node'); 754 759 md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node'); 755 760 756 %drag coefficient is limited to nodes that are on the bedrock. 757 if isa(md.friction,'friction'), 758 md.friction.coefficient=project3d(md,'vector',md.friction.coefficient,'type','node','layer',1); 759 md.friction.p=project3d(md,'vector',md.friction.p,'type','element'); 760 md.friction.q=project3d(md,'vector',md.friction.q,'type','element'); 761 elseif isa(md.friction,'frictionhydro'), 762 md.friction.q=project3d(md,'vector',md.friction.q,'type','element'); 763 md.friction.C=project3d(md,'vector',md.friction.C,'type','element'); 764 md.friction.As=project3d(md,'vector',md.friction.As,'type','element'); 765 md.friction.effective_pressure=project3d(md,'vector',md.friction.effective_pressure,'type','node','layer',1); 766 elseif isa(md.friction,'frictionwaterlayer'), 767 md.friction.coefficient=project3d(md,'vector',md.friction.coefficient,'type','node','layer',1); 768 md.friction.p=project3d(md,'vector',md.friction.p,'type','element'); 769 md.friction.q=project3d(md,'vector',md.friction.q,'type','element'); 770 md.friction.water_layer=project3d(md,'vector',md.friction.water_layer,'type','node','layer',1); 771 elseif isa(md.friction,'frictionweertman'), 772 md.friction.C=project3d(md,'vector',md.friction.C,'type','node','layer',1); 773 md.friction.m=project3d(md,'vector',md.friction.m,'type','element'); 774 end 775 776 %observations 777 md.inversion.vx_obs=project3d(md,'vector',md.inversion.vx_obs,'type','node'); 778 md.inversion.vy_obs=project3d(md,'vector',md.inversion.vy_obs,'type','node'); 779 md.inversion.vel_obs=project3d(md,'vector',md.inversion.vel_obs,'type','node'); 780 md.inversion.thickness_obs=project3d(md,'vector',md.inversion.thickness_obs,'type','node'); 761 md.geometry=extrude(md.geometry,md); 762 md.friction = extrude(md.friction,md); 763 md.inversion = extrude(md.inversion,md); 781 764 md.surfaceforcings = extrude(md.surfaceforcings,md); 782 md.balancethickness.thickening_rate=project3d(md,'vector',md.balancethickness.thickening_rate,'type','node'); 783 784 %results 785 if ~isnan(md.initialization.vx),md.initialization.vx=project3d(md,'vector',md.initialization.vx,'type','node');end; 786 if ~isnan(md.initialization.vy),md.initialization.vy=project3d(md,'vector',md.initialization.vy,'type','node');end; 787 if ~isnan(md.initialization.vz),md.initialization.vz=project3d(md,'vector',md.initialization.vz,'type','node');end; 788 if ~isnan(md.initialization.vel),md.initialization.vel=project3d(md,'vector',md.initialization.vel,'type','node');end; 789 if ~isnan(md.initialization.temperature),md.initialization.temperature=project3d(md,'vector',md.initialization.temperature,'type','node');end; 790 if ~isnan(md.initialization.waterfraction),md.initialization.waterfraction=project3d(md,'vector',md.initialization.waterfraction,'type','node');end; 791 if ~isnan(md.initialization.watercolumn),md.initialization.watercolumn=project3d(md,'vector',md.initialization.watercolumn,'type','node','layer',1);end; 792 if ~isnan(md.initialization.sediment_head),md.initialization.sediment_head=project3d(md,'vector',md.initialization.sediment_head,'type','node','layer',1);end; 793 if ~isnan(md.initialization.epl_head),md.initialization.epl_head=project3d(md,'vector',md.initialization.epl_head,'type','node','layer',1);end; 794 if ~isnan(md.initialization.epl_thickness),md.initialization.epl_thickness=project3d(md,'vector',md.initialization.epl_thickness,'type','node','layer',1);end; 795 796 %bedinfo and surface info 797 md.mesh.vertexonbase=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',1); 798 md.mesh.vertexonsurface=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',md.mesh.numberoflayers); 799 800 %elementstype 801 if ~isnan(md.flowequation.element_equation) 802 oldelements_type=md.flowequation.element_equation; 803 md.flowequation.element_equation=zeros(number_el3d,1); 804 md.flowequation.element_equation=project3d(md,'vector',oldelements_type,'type','element'); 805 end 806 807 %verticestype 808 if ~isnan(md.flowequation.vertex_equation) 809 oldvertices_type=md.flowequation.vertex_equation; 810 md.flowequation.vertex_equation=zeros(number_nodes3d,1); 811 md.flowequation.vertex_equation=project3d(md,'vector',oldvertices_type,'type','node'); 812 end 813 md.flowequation.borderSSA=project3d(md,'vector',md.flowequation.borderSSA,'type','node'); 814 md.flowequation.borderHO=project3d(md,'vector',md.flowequation.borderHO,'type','node'); 815 md.flowequation.borderFS=project3d(md,'vector',md.flowequation.borderFS,'type','node'); 816 817 %boundary conditions 818 md.stressbalance.spcvx=project3d(md,'vector',md.stressbalance.spcvx,'type','node'); 819 md.stressbalance.spcvy=project3d(md,'vector',md.stressbalance.spcvy,'type','node'); 820 md.stressbalance.spcvz=project3d(md,'vector',md.stressbalance.spcvz,'type','node'); 821 md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN); 822 if (length(md.initialization.temperature)==md.mesh.numberofvertices), 823 md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1); 824 if isprop(md.mesh,'vertexonsurface'), 825 pos=find(md.mesh.vertexonsurface); 826 md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface 827 end 828 end 829 md.masstransport.spcthickness=project3d(md,'vector',md.masstransport.spcthickness,'type','node'); 830 md.balancethickness.spcthickness=project3d(md,'vector',md.balancethickness.spcthickness,'type','node'); 831 md.damage.spcdamage=project3d(md,'vector',md.damage.spcdamage,'type','node'); 832 md.stressbalance.referential=project3d(md,'vector',md.stressbalance.referential,'type','node'); 833 md.stressbalance.loadingforce=project3d(md,'vector',md.stressbalance.loadingforce,'type','node'); 834 835 % Calving variables 836 if isa(md.calving,'calving'),md.calving.calvingrate=project3d(md,'vector',md.calving.calvingrate,'type','node');end; 837 if ~isnan(md.calving.meltingrate),md.calving.meltingrate=project3d(md,'vector',md.calving.meltingrate,'type','node');end; 838 if isa(md.calving,'calvinglevermann'),md.calving.coeff=project3d(md,'vector',md.calving.coeff,'type','node');end; 839 if isa(md.calving,'calvingpi'),md.calving.coeff=project3d(md,'vector',md.calving.coeff,'type','node');end; 840 841 % Hydrologydc variables 842 if isa(md.hydrology,'hydrologydc'); 843 md.hydrology.spcsediment_head=project3d(md,'vector',md.hydrology.spcsediment_head,'type','node','layer',1); 844 md.hydrology.mask_eplactive_node=project3d(md,'vector',md.hydrology.mask_eplactive_node,'type','node','layer',1); 845 md.hydrology.sediment_transmitivity=project3d(md,'vector',md.hydrology.sediment_transmitivity,'type','node','layer',1); 846 md.hydrology.basal_moulin_input=project3d(md,'vector',md.hydrology.basal_moulin_input,'type','node','layer',1); 847 if(md.hydrology.isefficientlayer==1); 848 md.hydrology.spcepl_head=project3d(md,'vector',md.hydrology.spcepl_head,'type','node','layer',1); 849 end 850 end 765 md.initialization = extrude(md.initialization,md); 766 767 md.flowequation.extrude(md); 768 md.stressbalance=extrude(md.stressbalance,md); 769 md.thermal.extrude(md); 770 md.masstransport.extrude(md); 771 md.calving=extrude(md.calving,md); 772 md.hydrology = extrude(md.hydrology,md); 851 773 852 774 %connectivity … … 861 783 end 862 784 863 %materials 864 md.materials.rheology_B=project3d(md,'vector',md.materials.rheology_B,'type','node'); 865 md.materials.rheology_n=project3d(md,'vector',md.materials.rheology_n,'type','element'); 866 867 %damage 868 md.damage.D=project3d(md,'vector',md.damage.D,'type','node'); 869 870 %parameters 871 md.geometry.surface=project3d(md,'vector',md.geometry.surface,'type','node'); 872 md.geometry.thickness=project3d(md,'vector',md.geometry.thickness,'type','node'); 873 md.gia.mantle_viscosity=project3d(md,'vector',md.gia.mantle_viscosity,'type','node'); 874 md.gia.lithosphere_thickness=project3d(md,'vector',md.gia.lithosphere_thickness,'type','node'); 875 md.geometry.hydrostatic_ratio=project3d(md,'vector',md.geometry.hydrostatic_ratio,'type','node'); 876 md.geometry.base=project3d(md,'vector',md.geometry.base,'type','node'); 877 md.geometry.bed=project3d(md,'vector',md.geometry.bed,'type','node'); 878 md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node'); 879 md.mask.groundedice_levelset=project3d(md,'vector',md.mask.groundedice_levelset,'type','node'); 880 md.mask.ice_levelset=project3d(md,'vector',md.mask.ice_levelset,'type','node'); 881 if ~isnan(md.inversion.cost_functions_coefficients),md.inversion.cost_functions_coefficients=project3d(md,'vector',md.inversion.cost_functions_coefficients,'type','node');end; 882 if ~isnan(md.inversion.min_parameters),md.inversion.min_parameters=project3d(md,'vector',md.inversion.min_parameters,'type','node');end; 883 if ~isnan(md.inversion.max_parameters),md.inversion.max_parameters=project3d(md,'vector',md.inversion.max_parameters,'type','node');end; 884 if ~isnan(md.qmu.partition),md.qmu.partition=project3d(md,'vector',md.qmu.partition','type','node');end 885 886 %Put lithostatic pressure if there is an existing pressure 887 if ~isnan(md.initialization.pressure), 888 md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z); 889 end 890 891 %special for thermal modeling: 892 md.basalforcings.groundedice_melting_rate=project3d(md,'vector',md.basalforcings.groundedice_melting_rate,'type','node','layer',1); 893 md.basalforcings.floatingice_melting_rate=project3d(md,'vector',md.basalforcings.floatingice_melting_rate,'type','node','layer',1); 894 if ~isnan(md.basalforcings.geothermalflux) 895 md.basalforcings.geothermalflux=project3d(md,'vector',md.basalforcings.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux 896 end 785 md.materials=extrude(md.materials,md); 786 md.damage=extrude(md.damage,md); 787 md.mask=extrude(md.mask,md); 788 md.qmu=extrude(md.qmu,md); 789 md.basalforcings=extrude(md.basalforcings,md); 897 790 898 791 %increase connectivity if less than 25: -
issm/trunk-jpl/src/m/classes/model.py
r18982 r19048 595 595 #Ok, now deal with the other fields from the 2d mesh: 596 596 597 #bedinfo and surface info 598 md.mesh.vertexonbase=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',1) 599 md.mesh.vertexonsurface=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',md.mesh.numberoflayers) 600 md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node') 601 597 602 #lat long 598 603 md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node') 599 604 md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node') 600 605 601 #drag coefficient is limited to nodes that are on the bedrock. 602 md.friction.coefficient=project3d(md,'vector',md.friction.coefficient,'type','node','layer',1) 603 604 #p and q (same deal, except for element that are on the bedrock: ) 605 md.friction.p=project3d(md,'vector',md.friction.p,'type','element') 606 md.friction.q=project3d(md,'vector',md.friction.q,'type','element') 607 608 #observations 609 md.inversion.vx_obs=project3d(md,'vector',md.inversion.vx_obs,'type','node') 610 md.inversion.vy_obs=project3d(md,'vector',md.inversion.vy_obs,'type','node') 611 md.inversion.vel_obs=project3d(md,'vector',md.inversion.vel_obs,'type','node') 612 md.inversion.thickness_obs=project3d(md,'vector',md.inversion.thickness_obs,'type','node') 606 md.geometry.extrude(md) 607 md.friction.extrude(md) 608 md.inversion.extrude(md) 613 609 md.surfaceforcings.extrude(md) 614 md.balancethickness.thickening_rate=project3d(md,'vector',md.balancethickness.thickening_rate,'type','node') 615 616 #results 617 if not numpy.any(numpy.isnan(md.initialization.vx)): 618 md.initialization.vx=project3d(md,'vector',md.initialization.vx,'type','node') 619 if not numpy.any(numpy.isnan(md.initialization.vy)): 620 md.initialization.vy=project3d(md,'vector',md.initialization.vy,'type','node') 621 if not numpy.any(numpy.isnan(md.initialization.vz)): 622 md.initialization.vz=project3d(md,'vector',md.initialization.vz,'type','node') 623 if not numpy.any(numpy.isnan(md.initialization.vel)): 624 md.initialization.vel=project3d(md,'vector',md.initialization.vel,'type','node') 625 if not numpy.any(numpy.isnan(md.initialization.temperature)): 626 md.initialization.temperature=project3d(md,'vector',md.initialization.temperature,'type','node') 627 if not numpy.any(numpy.isnan(md.initialization.waterfraction)): 628 md.initialization.waterfraction=project3d(md,'vector',md.initialization.waterfraction,'type','node') 629 if not numpy.any(numpy.isnan(md.initialization.watercolumn)): 630 md.initialization.watercolumn=project3d(md,'vector',md.initialization.watercolumn,'type','node') 631 if not numpy.any(numpy.isnan(md.initialization.sediment_head)): 632 md.initialization.sediment_head=project3d(md,'vector',md.initialization.sediment_head,'type','node','layer',1) 633 if not numpy.any(numpy.isnan(md.initialization.epl_head)): 634 md.initialization.epl_head=project3d(md,'vector',md.initialization.epl_head,'type','node','layer',1) 635 if not numpy.any(numpy.isnan(md.initialization.epl_thickness)): 636 md.initialization.epl_thickness=project3d(md,'vector',md.initialization.epl_thickness,'type','node','layer',1) 637 638 #bedinfo and surface info 639 md.mesh.vertexonbase=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',1) 640 md.mesh.vertexonsurface=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',md.mesh.numberoflayers) 641 642 #elementstype 643 if not numpy.any(numpy.isnan(md.flowequation.element_equation)): 644 oldelements_type=md.flowequation.element_equation 645 md.flowequation.element_equation=numpy.zeros(number_el3d,int) 646 md.flowequation.element_equation=project3d(md,'vector',oldelements_type,'type','element') 647 648 #verticestype 649 if not numpy.any(numpy.isnan(md.flowequation.vertex_equation)): 650 oldvertices_type=md.flowequation.vertex_equation 651 md.flowequation.vertex_equation=numpy.zeros(number_nodes3d,int) 652 md.flowequation.vertex_equation=project3d(md,'vector',oldvertices_type,'type','node') 653 654 md.flowequation.borderSSA=project3d(md,'vector',md.flowequation.borderSSA,'type','node') 655 md.flowequation.borderHO=project3d(md,'vector',md.flowequation.borderHO,'type','node') 656 md.flowequation.borderFS=project3d(md,'vector',md.flowequation.borderFS,'type','node') 657 658 #boundary conditions 659 md.stressbalance.spcvx=project3d(md,'vector',md.stressbalance.spcvx,'type','node') 660 md.stressbalance.spcvy=project3d(md,'vector',md.stressbalance.spcvy,'type','node') 661 md.stressbalance.spcvz=project3d(md,'vector',md.stressbalance.spcvz,'type','node') 662 md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',numpy.nan) 663 if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices: 664 md.thermal.spctemperature=numpy.nan*numpy.ones((md.mesh.numberofvertices,1)) 665 if hasattr(md.mesh,'vertexonsurface'): 666 pos=numpy.nonzero(md.mesh.vertexonsurface)[0] 667 md.thermal.spctemperature[pos]=md.initialization.temperature[pos] #impose observed temperature on surface 668 md.masstransport.spcthickness=project3d(md,'vector',md.masstransport.spcthickness,'type','node') 669 md.balancethickness.spcthickness=project3d(md,'vector',md.balancethickness.spcthickness,'type','node') 670 md.damage.spcdamage=project3d(md,'vector',md.damage.spcdamage,'type','node') 671 md.stressbalance.referential=project3d(md,'vector',md.stressbalance.referential,'type','node') 672 md.stressbalance.loadingforce=project3d(md,'vector',md.stressbalance.loadingforce,'type','node') 610 md.initialization.extrude(md) 611 md.flowequation.extrude(md) 612 613 md.stressbalance.extrude(md) 614 md.thermal.extrude(md) 615 md.masstransport.extrude(md) 673 616 674 617 # Calving variables 675 if isinstance(md.calving,calving): 676 md.calving.calvingrate=project3d(md,'vector',md.calving.calvingrate,'type','node') 677 if isinstance(md.calving,calvinglevermann): 678 md.calving.coeff=project3d(md,'vector',md.calving.coeff,'type','node') 679 #if isinstance(md.calving,calvingpi): 680 # md.calving.coeff=project3d(md,'vector',md.calving.coeff,'type','node') 681 if not numpy.any(numpy.isnan(md.calving.meltingrate)): 682 md.calving.meltingrate=project3d(md,'vector',md.calving.meltingrate,'type','node') 683 684 # Hydrologydc variables 685 if hasattr(md.hydrology,'hydrologydc'): 686 md.hydrology.spcsediment_head=project3d(md,'vector',md.hydrology.spcsediment_head,'type','node','layer',1) 687 md.hydrology.spcepl_head=project3d(md,'vector',md.hydrology.spcepl_head,'type','node','layer',1) 688 md.hydrology.mask_eplactive_node=project3d(md,'vector',md.hydrology.mask_eplactive_node,'type','node','layer',1) 689 md.hydrology.sediment_transmitivity=project3d(md,'vector',md.hydrology.sediment_transmitivity,'type','node','layer',1) 690 md.hydrology.basal_moulin_input=project3d(md,'vector',md.hydrology.basal_moulin_input,'type','node','layer',1) 691 if md.hydrology.isefficientlayer==1 : 692 md.hydrology.spcepl_head=project3d(md,'vector',md.hydrology.spcepl_head,'type','node','layer',1) 618 md.hydrology.extrude(md) 619 md.calving.extrude(md) 693 620 694 621 #connectivity … … 701 628 md.mesh.elementconnectivity[numpy.nonzero(md.mesh.elementconnectivity<0)]=0 702 629 703 #materials 704 md.materials.rheology_B=project3d(md,'vector',md.materials.rheology_B,'type','node') 705 md.materials.rheology_n=project3d(md,'vector',md.materials.rheology_n,'type','element') 706 707 #damage 708 md.damage.D=project3d(md,'vector',md.damage.D,'type','node') 709 710 #parameters 711 md.geometry.surface=project3d(md,'vector',md.geometry.surface,'type','node') 712 md.geometry.thickness=project3d(md,'vector',md.geometry.thickness,'type','node') 713 md.gia.mantle_viscosity=project3d(md,'vector',md.gia.mantle_viscosity,'type','node') 714 md.gia.lithosphere_thickness=project3d(md,'vector',md.gia.lithosphere_thickness,'type','node') 715 md.geometry.hydrostatic_ratio=project3d(md,'vector',md.geometry.hydrostatic_ratio,'type','node') 716 md.geometry.base=project3d(md,'vector',md.geometry.base,'type','node') 717 md.geometry.bed=project3d(md,'vector',md.geometry.bed,'type','node') 718 md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node') 719 md.mask.ice_levelset=project3d(md,'vector',md.mask.ice_levelset,'type','node') 720 md.mask.groundedice_levelset=project3d(md,'vector',md.mask.groundedice_levelset,'type','node') 721 if not numpy.any(numpy.isnan(md.inversion.cost_functions_coefficients)): 722 md.inversion.cost_functions_coefficients=project3d(md,'vector',md.inversion.cost_functions_coefficients,'type','node') 723 if not numpy.any(numpy.isnan(md.inversion.min_parameters)): 724 md.inversion.min_parameters=project3d(md,'vector',md.inversion.min_parameters,'type','node') 725 if not numpy.any(numpy.isnan(md.inversion.max_parameters)): 726 md.inversion.max_parameters=project3d(md,'vector',md.inversion.max_parameters,'type','node') 727 if not numpy.any(numpy.isnan(md.qmu.partition)): 728 md.qmu.partition=project3d(md,'vector',numpy.transpose(md.qmu.partition),'type','node') 729 730 #Put lithostatic pressure if there is an existing pressure 731 if not numpy.any(numpy.isnan(md.initialization.pressure)): 732 md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z.reshape(-1,1)) 733 734 #special for thermal modeling: 735 md.basalforcings.groundedice_melting_rate=project3d(md,'vector',md.basalforcings.groundedice_melting_rate,'type','node','layer',1) 736 md.basalforcings.floatingice_melting_rate=project3d(md,'vector',md.basalforcings.floatingice_melting_rate,'type','node','layer',1) 737 if not numpy.any(numpy.isnan(md.basalforcings.geothermalflux)): 738 md.basalforcings.geothermalflux=project3d(md,'vector',md.basalforcings.geothermalflux,'type','node','layer',1) #bedrock only gets geothermal flux 630 md.materials.extrude(md) 631 md.damage.extrude(md) 632 md.gia.extrude(md) 633 md.mask.extrude(md) 634 md.qmu.extrude(md) 635 md.basalforcings.extrude(md) 739 636 740 637 #increase connectivity if less than 25: -
issm/trunk-jpl/src/m/classes/qmu.m
r19040 r19048 24 24 end 25 25 methods 26 function createxml(self,fid) % {{{ 27 fprintf(fid, '<!-- qmu -->\n'); 28 29 % qmu solution parameters 30 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="qmu parameters">','<section name="qmu" />'); 31 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isdakota" type="',class(self.isdakota),'" default="',convert2str(self.isdakota),'">',' <section name="qmu" />',' <help> is qmu analysis activated? </help>',' </parameter>'); 32 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="variables" type="',class(self.variables),'" default="',convert2str(self.variables),'">',' <section name="qmu" />',' <help> (arrays of each variable class) </help>',' </parameter>'); 33 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="responses" type="',class(self.responses),'" default="',convert2str(self.responses),'">',' <section name="qmu" />',' <help> (arrays of each response class) </help>',' </parameter>'); 34 35 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="numberofresponses" type="',class(self.numberofresponses),'" default="',convert2str(self.numberofresponses),'">',' <section name="qmu" />',' <help> number of responses </help>',' </parameter>'); 36 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="params" type="',class(self.params),'" default="',convert2str(self.params),'">',' <section name="qmu" />',' <help> (array of method-independent parameters) </help>',' </parameter>'); 37 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="results" type="',class(self.results),'" default="',convert2str(self.results),'">',' <section name="qmu" />',' <help> (information from dakota files) </help>',' </parameter>'); 38 39 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="partition" type="',class(self.partition),'" default="',convert2str(self.partition),'">',' <section name="qmu" />',' <help> user provided mesh partitioning, defaults to metis if not specified </help>',' </parameter>'); 40 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="numberofpartitions" type="',class(self.numberofpartitions),'" default="',convert2str(self.numberofpartitions),'">',' <section name="qmu" />',' <help> number of partitions for semi-discrete qmu </help>',' </parameter>'); 41 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="variabledescriptors" type="',class(self.variabledescriptors),'" default="',convert2str(self.variabledescriptors),'">',' <section name="qmu" />',' <help> </help>',' </parameter>'); 42 43 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="responsedescriptors" type="',class(self.responsedescriptors),'" default="',convert2str(self.responsedescriptors),'">',' <section name="qmu" />',' <help> use an enthalpy formulation to include temperate ice (default is 0) </help>',' </parameter>'); 44 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="method" type="',class(self.method),'" default="',convert2str(self.method),'">',' <section name="qmu" />',' <help> array of dakota_method class </help>',' </parameter>'); 45 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mass_flux_profile_directory" type="',class(self.mass_flux_profile_directory),'" default="',convert2str(self.mass_flux_profile_directory),'">',' <section name="qmu" />',' <help> directory for mass flux profiles </help>',' </parameter>'); 46 47 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mass_flux_profiles" type="',class(self.mass_flux_profiles),'" default="',convert2str(self.mass_flux_profiles),'">',' <section name="qmu" />',' <help> </help>',' </parameter>'); 48 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mass_flux_segments" type="',class(self.mass_flux_segments),'" default="',convert2str(self.mass_flux_segments),'">',' <section name="qmu" />',' <help> </help>',' </parameter>'); 49 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="adjacency" type="',class(self.adjacency),'" default="',convert2str(self.adjacency),'">',' <section name="qmu" />',' <help> additional outputs requested </help>',' </parameter>'); 50 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="vertex_weight" type="',class(self.vertex_weight),'" default="',convert2str(self.vertex_weight),'">',' <section name="qmu" />',' <help> weight applied to each mesh vertex </help>',' </parameter>'); 51 52 fprintf(fid,'%s\n%s\n','</frame>'); 53 54 end % }}} 26 function createxml(self,fid) % {{{ 27 fprintf(fid, '<!-- qmu -->\n'); 28 29 % qmu solution parameters 30 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="qmu parameters">','<section name="qmu" />'); 31 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isdakota" type="',class(self.isdakota),'" default="',convert2str(self.isdakota),'">',' <section name="qmu" />',' <help> is qmu analysis activated? </help>',' </parameter>'); 32 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="variables" type="',class(self.variables),'" default="',convert2str(self.variables),'">',' <section name="qmu" />',' <help> (arrays of each variable class) </help>',' </parameter>'); 33 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="responses" type="',class(self.responses),'" default="',convert2str(self.responses),'">',' <section name="qmu" />',' <help> (arrays of each response class) </help>',' </parameter>'); 34 35 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="numberofresponses" type="',class(self.numberofresponses),'" default="',convert2str(self.numberofresponses),'">',' <section name="qmu" />',' <help> number of responses </help>',' </parameter>'); 36 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="params" type="',class(self.params),'" default="',convert2str(self.params),'">',' <section name="qmu" />',' <help> (array of method-independent parameters) </help>',' </parameter>'); 37 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="results" type="',class(self.results),'" default="',convert2str(self.results),'">',' <section name="qmu" />',' <help> (information from dakota files) </help>',' </parameter>'); 38 39 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="partition" type="',class(self.partition),'" default="',convert2str(self.partition),'">',' <section name="qmu" />',' <help> user provided mesh partitioning, defaults to metis if not specified </help>',' </parameter>'); 40 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="numberofpartitions" type="',class(self.numberofpartitions),'" default="',convert2str(self.numberofpartitions),'">',' <section name="qmu" />',' <help> number of partitions for semi-discrete qmu </help>',' </parameter>'); 41 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="variabledescriptors" type="',class(self.variabledescriptors),'" default="',convert2str(self.variabledescriptors),'">',' <section name="qmu" />',' <help> </help>',' </parameter>'); 42 43 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="responsedescriptors" type="',class(self.responsedescriptors),'" default="',convert2str(self.responsedescriptors),'">',' <section name="qmu" />',' <help> use an enthalpy formulation to include temperate ice (default is 0) </help>',' </parameter>'); 44 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="method" type="',class(self.method),'" default="',convert2str(self.method),'">',' <section name="qmu" />',' <help> array of dakota_method class </help>',' </parameter>'); 45 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mass_flux_profile_directory" type="',class(self.mass_flux_profile_directory),'" default="',convert2str(self.mass_flux_profile_directory),'">',' <section name="qmu" />',' <help> directory for mass flux profiles </help>',' </parameter>'); 46 47 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mass_flux_profiles" type="',class(self.mass_flux_profiles),'" default="',convert2str(self.mass_flux_profiles),'">',' <section name="qmu" />',' <help> </help>',' </parameter>'); 48 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="mass_flux_segments" type="',class(self.mass_flux_segments),'" default="',convert2str(self.mass_flux_segments),'">',' <section name="qmu" />',' <help> </help>',' </parameter>'); 49 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="adjacency" type="',class(self.adjacency),'" default="',convert2str(self.adjacency),'">',' <section name="qmu" />',' <help> additional outputs requested </help>',' </parameter>'); 50 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="vertex_weight" type="',class(self.vertex_weight),'" default="',convert2str(self.vertex_weight),'">',' <section name="qmu" />',' <help> weight applied to each mesh vertex </help>',' </parameter>'); 51 52 fprintf(fid,'%s\n%s\n','</frame>'); 53 54 end % }}} 55 function self = extrude(self,md) % {{{ 56 self.partition=project3d(md,'vector',self.partition','type','node'); 57 end % }}} 55 58 function self = qmu(varargin) % {{{ 56 59 switch nargin -
issm/trunk-jpl/src/m/classes/qmu.py
r17480 r19048 1 1 import numpy 2 from project3d import project3d 2 3 from collections import OrderedDict 3 4 from fielddisplay import fielddisplay … … 37 38 38 39 #}}} 40 def __repr__(self): # {{{ 41 s =' qmu parameters:\n' 42 43 s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?') 44 for i,variable in enumerate(self.variables.iteritems()): 45 s+=" variables%s: (arrays of each variable class)\n" % \ 46 string_dim(self.variables,i) 47 fnames=vars(variable) 48 maxlen=0 49 for fname in fnames: 50 maxlen=max(maxlen,len(fname)) 51 52 for fname in fnames: 53 s+="' %-*s: [%ix%i] '%s'\n" % \ 54 (maxlen+1,fname,size(getattr(variable,fname)),type(getattr(variable,fname))) 55 56 for i,response in enumerate(self.responses.iteritems()): 57 s+=" responses%s: (arrays of each response class)\n" % \ 58 string_dim(self.responses,i) 59 fnames=vars(response) 60 maxlen=0 61 for fname in fnames: 62 maxlen=max(maxlen,len(fname)) 63 64 for fname in fnames: 65 s+=" %-*s: [%ix%i] '%s'\n" % \ 66 (maxlen+1,fname,size(getattr(response,fname)),type(getattr(response,fname))) 67 68 s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses') 69 70 for i,method in enumerate(self.method.iteritems()): 71 if isinstance(method,'dakota_method'): 72 s+=" method%s : '%s'\n" % \ 73 (string_dim(method,i),method.method) 74 75 for i,param in enumerate(self.params.iteritems()): 76 s+=" params%s: (array of method-independent parameters)\n" % \ 77 string_dim(self.params,i) 78 fnames=vars(param) 79 maxlen=0 80 for fname in fnames: 81 maxlen=max(maxlen,len(fname)) 82 83 for fname in fnames: 84 s+=" %-*s: %s\n" % \ 85 (maxlen+1,fname,any2str(getattr(param,fname))) 86 87 for i,result in enumerate(self.results.iteritems()): 88 s+=" results%s: (information from dakota files)\n" % \ 89 string_dim(self.results,i) 90 fnames=vars(result) 91 maxlen=0 92 for fname in fnames: 93 maxlen=max(maxlen,len(fname)) 94 95 for fname in fnames: 96 s+=" %-*s: [%ix%i] '%s'\n" % \ 97 (maxlen+1,fname,size(getattr(result,fname)),type(getattr(result,fname))) 98 99 s+="%s\n" % fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified') 100 s+="%s\n" % fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu') 101 s+="%s\n" % fielddisplay(self,'variabledescriptors','') 102 s+="%s\n" % fielddisplay(self,'responsedescriptors','') 103 s+="%s\n" % fielddisplay(self,'method','array of dakota_method class') 104 s+="%s\n" % fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles') 105 s+="%s\n" % fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles') 106 s+="%s\n" % fielddisplay(self,'mass_flux_segments','') 107 s+="%s\n" % fielddisplay(self,'adjacency','') 108 s+="%s\n" % fielddisplay(self,'vertex_weight','weight applied to each mesh vertex') 109 110 return s 111 # }}} 112 def extrude(self,md): # {{{ 113 self.partition=project3d(md,'vector',numpy.transpose(self.partition),'type','node') 114 return self 115 #}}} 39 116 def setdefaultparameters(self): # {{{ 40 117 return self … … 62 139 return md 63 140 # }}} 64 def __repr__(self): # {{{65 s =' qmu parameters:\n'66 67 s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?')68 for i,variable in enumerate(self.variables.iteritems()):69 s+=" variables%s: (arrays of each variable class)\n" % \70 string_dim(self.variables,i)71 fnames=vars(variable)72 maxlen=073 for fname in fnames:74 maxlen=max(maxlen,len(fname))75 76 for fname in fnames:77 s+="' %-*s: [%ix%i] '%s'\n" % \78 (maxlen+1,fname,size(getattr(variable,fname)),type(getattr(variable,fname)))79 80 for i,response in enumerate(self.responses.iteritems()):81 s+=" responses%s: (arrays of each response class)\n" % \82 string_dim(self.responses,i)83 fnames=vars(response)84 maxlen=085 for fname in fnames:86 maxlen=max(maxlen,len(fname))87 88 for fname in fnames:89 s+=" %-*s: [%ix%i] '%s'\n" % \90 (maxlen+1,fname,size(getattr(response,fname)),type(getattr(response,fname)))91 92 s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses')93 94 for i,method in enumerate(self.method.iteritems()):95 if isinstance(method,'dakota_method'):96 s+=" method%s : '%s'\n" % \97 (string_dim(method,i),method.method)98 99 for i,param in enumerate(self.params.iteritems()):100 s+=" params%s: (array of method-independent parameters)\n" % \101 string_dim(self.params,i)102 fnames=vars(param)103 maxlen=0104 for fname in fnames:105 maxlen=max(maxlen,len(fname))106 107 for fname in fnames:108 s+=" %-*s: %s\n" % \109 (maxlen+1,fname,any2str(getattr(param,fname)))110 111 for i,result in enumerate(self.results.iteritems()):112 s+=" results%s: (information from dakota files)\n" % \113 string_dim(self.results,i)114 fnames=vars(result)115 maxlen=0116 for fname in fnames:117 maxlen=max(maxlen,len(fname))118 119 for fname in fnames:120 s+=" %-*s: [%ix%i] '%s'\n" % \121 (maxlen+1,fname,size(getattr(result,fname)),type(getattr(result,fname)))122 123 s+="%s\n" % fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified')124 s+="%s\n" % fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu')125 s+="%s\n" % fielddisplay(self,'variabledescriptors','')126 s+="%s\n" % fielddisplay(self,'responsedescriptors','')127 s+="%s\n" % fielddisplay(self,'method','array of dakota_method class')128 s+="%s\n" % fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles')129 s+="%s\n" % fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles')130 s+="%s\n" % fielddisplay(self,'mass_flux_segments','')131 s+="%s\n" % fielddisplay(self,'adjacency','')132 s+="%s\n" % fielddisplay(self,'vertex_weight','weight applied to each mesh vertex')133 134 return s135 # }}}136 141 def marshall(self,md,fid): # {{{ 137 142 WriteData(fid,'object',self,'fieldname','isdakota','format','Boolean') -
issm/trunk-jpl/src/m/classes/stressbalance.m
r19040 r19048 70 70 fprintf(fid,'%s\n%s\n','</frame>'); 71 71 end % }}} 72 function self = extrude(self,md) % {{{ 73 self.spcvx=project3d(md,'vector',self.spcvx,'type','node'); 74 self.spcvy=project3d(md,'vector',self.spcvy,'type','node'); 75 self.spcvz=project3d(md,'vector',self.spcvz,'type','node'); 76 self.referential=project3d(md,'vector',self.referential,'type','node'); 77 self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node'); 78 79 end % }}} 72 80 function self = stressbalance(varargin) % {{{ 73 81 switch nargin -
issm/trunk-jpl/src/m/classes/stressbalance.py
r19027 r19048 2 2 import sys 3 3 import copy 4 from project3d import project3d 4 5 from fielddisplay import fielddisplay 5 6 from EnumDefinitions import * … … 75 76 return string 76 77 #}}} 78 def extrude(self,md): # {{{ 79 self.spcvx=project3d(md,'vector',self.spcvx,'type','node') 80 self.spcvy=project3d(md,'vector',self.spcvy,'type','node') 81 self.spcvz=project3d(md,'vector',self.spcvz,'type','node') 82 self.referential=project3d(md,'vector',self.referential,'type','node') 83 self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node') 84 85 return self 86 #}}} 77 87 def setdefaultparameters(self): # {{{ 78 88 #maximum of non-linear iterations. -
issm/trunk-jpl/src/m/classes/taoinversion.m
r19040 r19048 29 29 end 30 30 methods 31 function self = extrude(self,md) % {{{ 32 self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node'); 33 self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node'); 34 self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node'); 35 self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node'); 36 if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end; 37 if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end; 38 if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end; 39 end % }}} 31 40 function self = taoinversion(varargin) % {{{ 32 41 switch nargin -
issm/trunk-jpl/src/m/classes/thermal.m
r19040 r19048 18 18 end 19 19 methods 20 function createxml(self,fid) % {{{ 21 fprintf(fid, '<!-- thermal -->\n'); 22 23 % thermal solution parameters 24 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Thermal solution parameters">','<section name="thermal" />'); 25 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="spctemperature" type="',class(self.spctemperature),'" default="',convert2str(self.spctemperature),'">',' <section name="thermal" />',' <help> temperature constraints (NaN means no constraint) [K] </help>',' </parameter>'); 26 27 % penalty_threshold drop-down (0, 1, or 2) 28 fprintf(fid,'%s\n%s\n%s\n%s\n',' <parameter key ="penalty_threshold" type="alternative" optional="false">',' <section name="thermal" />',' <help> 0: no, 1: artificial_diffusivity, 2: SUPG </help>'); 29 fprintf(fid,'%s\n',' <option value="0" type="string" default="true"> </option>'); 30 fprintf(fid,'%s\n',' <option value="1" type="string" default="false"> </option>'); 31 fprintf(fid,'%s\n%s\n',' <option value="2" type="string" default="false"> </option>','</parameter>'); 20 function createxml(self,fid) % {{{ 21 fprintf(fid, '<!-- thermal -->\n'); 32 22 33 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="stabilization" type="',class(self.stabilization),'" default="',convert2str(self.stabilization),'">',' <section name="thermal" />',' <help> maximum number of non linear iterations </help>',' </parameter>'); 34 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="reltol" type="',class(self.reltol),'" default="',convert2str(self.reltol),'">',' <section name="steadystate" />',' <help> relative tolerance criterion [K] </help>',' </parameter>'); 35 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="maxiter" type="',class(self.maxiter),'" default="',convert2str(self.maxiter),'">',' <section name="thermal" />',' <help> stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>',' </parameter>'); 36 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="penalty_lock" type="',class(self.penalty_lock),'" default="',convert2str(self.penalty_lock),'">',' <section name="thermal" />',' <help> threshold to declare convergence of thermal solution (default is 0) </help>',' </parameter>'); 37 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="penalty_factor" type="',class(self.penalty_factor),'" default="',convert2str(self.penalty_factor),'">',' <section name="thermal" />',' <help> scaling exponent (default is 3) </help>',' </parameter>'); 38 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isenthalpy" type="',class(self.isenthalpy),'" default="',convert2str(self.isenthalpy),'">',' <section name="thermal" />',' <help> use an enthalpy formulation to include temperate ice (default is 0) </help>',' </parameter>'); 39 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isdynamicbasalspc" type="',class(self.isdynamicbasalspc),'" default="',convert2str(self.isdynamicbasalspc),'">',' <section name="thermal" />',' <help> enable dynamic setting of basal forcing. recommended for enthalpy formulation (default is 0) </help>',' </parameter>'); 40 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">',' <section name="thermal" />',' <help> additional outputs requested </help>',' </parameter>'); 41 fprintf(fid,'%s\n%s\n','</frame>'); 42 43 end % }}} 23 % thermal solution parameters 24 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Thermal solution parameters">','<section name="thermal" />'); 25 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="spctemperature" type="',class(self.spctemperature),'" default="',convert2str(self.spctemperature),'">',' <section name="thermal" />',' <help> temperature constraints (NaN means no constraint) [K] </help>',' </parameter>'); 26 27 % penalty_threshold drop-down (0, 1, or 2) 28 fprintf(fid,'%s\n%s\n%s\n%s\n',' <parameter key ="penalty_threshold" type="alternative" optional="false">',' <section name="thermal" />',' <help> 0: no, 1: artificial_diffusivity, 2: SUPG </help>'); 29 fprintf(fid,'%s\n',' <option value="0" type="string" default="true"> </option>'); 30 fprintf(fid,'%s\n',' <option value="1" type="string" default="false"> </option>'); 31 fprintf(fid,'%s\n%s\n',' <option value="2" type="string" default="false"> </option>','</parameter>'); 32 33 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="stabilization" type="',class(self.stabilization),'" default="',convert2str(self.stabilization),'">',' <section name="thermal" />',' <help> maximum number of non linear iterations </help>',' </parameter>'); 34 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="reltol" type="',class(self.reltol),'" default="',convert2str(self.reltol),'">',' <section name="steadystate" />',' <help> relative tolerance criterion [K] </help>',' </parameter>'); 35 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="maxiter" type="',class(self.maxiter),'" default="',convert2str(self.maxiter),'">',' <section name="thermal" />',' <help> stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>',' </parameter>'); 36 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="penalty_lock" type="',class(self.penalty_lock),'" default="',convert2str(self.penalty_lock),'">',' <section name="thermal" />',' <help> threshold to declare convergence of thermal solution (default is 0) </help>',' </parameter>'); 37 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="penalty_factor" type="',class(self.penalty_factor),'" default="',convert2str(self.penalty_factor),'">',' <section name="thermal" />',' <help> scaling exponent (default is 3) </help>',' </parameter>'); 38 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isenthalpy" type="',class(self.isenthalpy),'" default="',convert2str(self.isenthalpy),'">',' <section name="thermal" />',' <help> use an enthalpy formulation to include temperate ice (default is 0) </help>',' </parameter>'); 39 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isdynamicbasalspc" type="',class(self.isdynamicbasalspc),'" default="',convert2str(self.isdynamicbasalspc),'">',' <section name="thermal" />',' <help> enable dynamic setting of basal forcing. recommended for enthalpy formulation (default is 0) </help>',' </parameter>'); 40 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">',' <section name="thermal" />',' <help> additional outputs requested </help>',' </parameter>'); 41 fprintf(fid,'%s\n%s\n','</frame>'); 42 43 end % }}} 44 function self = extrude(self,md) % {{{ 45 self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN); 46 if (length(md.initialization.temperature)==md.mesh.numberofvertices), 47 self.spctemperature=NaN(md.mesh.numberofvertices,1); 48 pos=find(md.mesh.vertexonsurface); 49 self.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface 50 end 51 end % }}} 44 52 function self = thermal(varargin) % {{{ 45 53 switch nargin -
issm/trunk-jpl/src/m/classes/thermal.py
r19027 r19048 1 1 import numpy 2 from project3d import project3d 2 3 from fielddisplay import fielddisplay 3 4 from EnumDefinitions import * … … 43 44 return string 44 45 #}}} 46 def extrude(self,md): # {{{ 47 self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',numpy.nan) 48 if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices: 49 self.spctemperature=numpy.nan*numpy.ones((md.mesh.numberofvertices,1)) 50 pos=numpy.nonzero(md.mesh.vertexonsurface)[0] 51 self.spctemperature[pos]=md.initialization.temperature[pos] #impose observed temperature on surface 52 return self 53 #}}} 45 54 def defaultoutputs(self,md): # {{{ 46 55 -
issm/trunk-jpl/src/m/dev/issmversion.m
r18375 r19048 17 17 disp(['Compiled on ' IssmConfig('HOST_VENDOR') ' ' IssmConfig('HOST_OS') ' ' IssmConfig('HOST_ARCH') ' by ' IssmConfig('USER_NAME')]); 18 18 disp([' ']); 19 disp(['Copyright (c) 2009-201 4California Institute of Technology']);19 disp(['Copyright (c) 2009-2015 California Institute of Technology']); 20 20 disp([' ']); 21 21 disp([' to get started type: issmdoc']);
Note:
See TracChangeset
for help on using the changeset viewer.