Changeset 17071


Ignore:
Timestamp:
01/08/14 16:01:49 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: initialize forcings by class itself instead of boundary condition method

Location:
issm/trunk-jpl/src/m
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.m

    r16318 r17071  
    2929%No ice front: do nothing
    3030
    31 %Create zeros basal melting rate and surface mass balance if not specified
    32 if (isnan(md.surfaceforcings.precipitation) & (md.surfaceforcings.ispdd==1)),
    33         md.surfaceforcings.precipitation=zeros(md.mesh.numberofvertices,1);
    34         disp('      no surfaceforcings.precipitation specified: values set as zero');
    35 end
    36 if (isnan(md.surfaceforcings.mass_balance) & (md.surfaceforcings.ispdd==0)),
    37         md.surfaceforcings.mass_balance=zeros(md.mesh.numberofvertices,1);
    38         disp('      no surfaceforcings.mass_balance specified: values set as zero');
    39 end
    40 if isnan(md.basalforcings.melting_rate),
    41         md.basalforcings.melting_rate=zeros(md.mesh.numberofvertices,1);
    42         disp('      no basalforcings.melting_rate specified: values set as zero');
    43 end
     31%Initialize surface and basal forcings
     32md.surfaceforcings = initialize(md.surfaceforcings,md);
     33md.basalforcings   = initialize(md.basalforcings,md);
     34
     35%Deal with other boundary conditions
    4436if isnan(md.balancethickness.thickening_rate),
    4537        md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
    4638        disp('      no balancethickness.thickening_rate specified: values set as zero');
    4739end
    48 
    4940md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
    5041md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.py

    r16318 r17071  
    3434        #No ice front -> do nothing
    3535
    36         #Create zeros basal melting rate and surface mass balance if not specified
    37         if numpy.all(numpy.isnan(md.surfaceforcings.precipitation)) and (md.surfaceforcings.ispdd==1):
    38                 md.surfaceforcings.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
    39                 print "      no surfaceforcings.precipitation specified: values set as zero"
    40         if numpy.all(numpy.isnan(md.surfaceforcings.mass_balance)) and (md.surfaceforcings.ispdd==0):
    41                 md.surfaceforcings.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
    42                 print "      no surfaceforcings.mass_balance specified: values set as zero"
    43         if numpy.all(numpy.isnan(md.basalforcings.melting_rate)):
    44                 md.basalforcings.melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
    45                 print "      no basalforcings.melting_rate specified: values set as zero"
     36        #Create zeros basalforcings and surfaceforcings
     37        md.surfaceforcings.initialize(md)
     38        md.basalforcings.initialize(md)
     39
     40        #Deal with other boundary conditions
    4641        if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
    4742                md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
    4843                print "      no balancethickness.thickening_rate specified: values set as zero"
    49 
    5044        md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
    5145        md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.m

    r16318 r17071  
    6262end
    6363
    64 %Create zeros basalforcings and surfaceforcings
    65 if (isnan(md.surfaceforcings.precipitation) & (md.surfaceforcings.ispdd==1)),
    66         md.surfaceforcings.precipitation=zeros(md.mesh.numberofvertices,1);
    67         disp('      no surfaceforcings.precipitation specified: values set as zero');
    68 end
    69 if (isnan(md.surfaceforcings.mass_balance) & (md.surfaceforcings.ispdd==0)),
    70                 md.surfaceforcings.mass_balance=zeros(md.mesh.numberofvertices,1);
    71                 disp('      no surfaceforcings.mass_balance specified: values set as zero');
    72 end
    73 if isnan(md.basalforcings.melting_rate),
    74         md.basalforcings.melting_rate=zeros(md.mesh.numberofvertices,1);
    75         disp('      no basalforcings.melting_rate specified: values set as zero');
    76 end
     64%Initialize surface and basal forcings
     65md.surfaceforcings = initialize(md.surfaceforcings,md);
     66md.basalforcings   = initialize(md.basalforcings,md);
     67
     68%Deal with other boundary conditions
    7769if isnan(md.balancethickness.thickening_rate),
    7870        md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
    7971        disp('      no balancethickness.thickening_rate specified: values set as zero');
    8072end
    81 
    8273md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
    8374md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py

    r16318 r17071  
    7777
    7878        #Create zeros basalforcings and surfaceforcings
    79         if numpy.all(numpy.isnan(md.surfaceforcings.precipitation)) and (md.surfaceforcings.ispdd==1):
    80                 md.surfaceforcings.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
    81                 print "      no surfaceforcings.precipitation specified: values set as zero"
    82         if numpy.all(numpy.isnan(md.surfaceforcings.mass_balance)) and (md.surfaceforcings.ispdd==0):
    83                 md.surfaceforcings.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
    84                 print "      no surfaceforcings.mass_balance specified: values set as zero"
    85         if numpy.all(numpy.isnan(md.basalforcings.melting_rate)):
    86                 md.basalforcings.melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
    87                 print "      no basalforcings.melting_rate specified: values set as zero"
     79        md.surfaceforcings.initialize(md)
     80        md.basalforcings.initialize(md)
     81
     82        #Deal with other boundary conditions
    8883        if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
    8984                md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
    9085                print "      no balancethickness.thickening_rate specified: values set as zero"
    91 
    9286        md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
    9387        md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
  • issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.m

    r16318 r17071  
    7878md.hydrology.spcwatercolumn(pos,1)=1;
    7979
    80 %Create zeros basalforcings and surfaceforcings
    81 if (isnan(md.surfaceforcings.precipitation) & (md.surfaceforcings.ispdd==1)),
    82         md.surfaceforcings.precipitation=zeros(md.mesh.numberofvertices,1);
    83         disp('      no surfaceforcings.precipitation specified: values set as zero');
    84 end
    85 if (isnan(md.surfaceforcings.mass_balance) & (md.surfaceforcings.ispdd==0)),
    86         md.surfaceforcings.mass_balance=zeros(md.mesh.numberofvertices,1);
    87         disp('      no surfaceforcings.mass_balance specified: values set as zero');
    88 end
    89 if isnan(md.basalforcings.melting_rate),
    90         md.basalforcings.melting_rate=zeros(md.mesh.numberofvertices,1);
    91         disp('      no basalforcings.melting_rate specified: values set as zero');
    92 end
     80%Initialize surface and basal forcings
     81md.surfaceforcings = initialize(md.surfaceforcings,md);
     82md.basalforcings   = initialize(md.basalforcings,md);
     83
     84%Deal with other boundary conditions
    9385if isnan(md.balancethickness.thickening_rate),
    9486        md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
  • issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py

    r16318 r17071  
    8282
    8383        #Create zeros basalforcings and surfaceforcings
    84         if numpy.all(numpy.isnan(md.surfaceforcings.precipitation)) and (md.surfaceforcings.ispdd==1):
    85                 md.surfaceforcings.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
    86                 print "      no surfaceforcings.precipitation specified: values set as zero"
    87         if numpy.all(numpy.isnan(md.surfaceforcings.mass_balance)) and (md.surfaceforcings.ispdd==0):
    88                 md.surfaceforcings.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
    89                 print "      no surfaceforcings.mass_balance specified: values set as zero"
    90         if numpy.all(numpy.isnan(md.basalforcings.melting_rate)):
    91                 md.basalforcings.melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
    92                 print "      no basalforcings.melting_rate specified: values set as zero"
     84        md.surfaceforcings.initialize(md)
     85        md.basalforcings.initialize(md)
     86
     87        #Deal with other boundary conditions
    9388        if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
    9489                md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
  • issm/trunk-jpl/src/m/classes/basalforcings.m

    r16764 r17071  
    1818                                        error('constructor not supported');
    1919                        end
     20                end % }}}
     21                function self = initialize(self,md) % {{{
     22
     23                        if isnan(self.melting_rate),
     24                                self.melting_rate=zeros(md.mesh.numberofvertices,1);
     25                                disp('      no basalforcings.melting_rate specified: values set as zero');
     26                        end
     27
    2028                end % }}}
    2129                function obj = setdefaultparameters(obj) % {{{
  • issm/trunk-jpl/src/m/classes/basalforcings.py

    r16764 r17071  
    3030                return string
    3131                #}}}
     32        def initialize(self,md): # {{{
     33
     34                if numpy.all(numpy.isnan(self.melting_rate)):
     35                        self.melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
     36                        print "      no basalforcings.melting_rate specified: values set as zero"
     37
     38                return self
     39        #}}}
    3240        def setdefaultparameters(self): # {{{
    3341                return self
  • issm/trunk-jpl/src/m/classes/surfaceforcings.m

    r16764 r17071  
    3232                                        error('constructor not supported');
    3333                        end
     34                end % }}}
     35                function self = initialize(self,md) % {{{
     36
     37                        if (isnan(self.precipitation) & (self.ispdd==1)),
     38                                self.precipitation=zeros(md.mesh.numberofvertices,1);
     39                                disp('      no surfaceforcings.precipitation specified: values set as zero');
     40                        end
     41                        if (isnan(self.mass_balance) & (self.ispdd==0)),
     42                                self.mass_balance=zeros(md.mesh.numberofvertices,1);
     43                                disp('      no surfaceforcings.mass_balance specified: values set as zero');
     44                        end
     45
    3446                end % }}}
    3547                function obj = setdefaultparameters(obj) % {{{
  • issm/trunk-jpl/src/m/classes/surfaceforcings.py

    r16764 r17071  
    5959                return string
    6060                #}}}
     61        def initialize(self,md): # {{{
     62
     63                if numpy.all(numpy.isnan(self.precipitation)) and (self.ispdd==1):
     64                        self.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
     65                        print "      no surfaceforcings.precipitation specified: values set as zero"
     66                if numpy.all(numpy.isnan(self.mass_balance)) and (self.ispdd==0):
     67                        self.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
     68                        print "      no surfaceforcings.mass_balance specified: values set as zero"
     69
     70                return self
     71        #}}}
    6172        def setdefaultparameters(self): # {{{
    6273                 
Note: See TracChangeset for help on using the changeset viewer.