def find_icelines(self):
Tf = self.param['<STR_LIT>']<EOL>Ts = self.state['<STR_LIT>']<EOL>lat_bounds = self.domains['<STR_LIT>'].axes['<STR_LIT>'].bounds<EOL>self.noice = np.where(Ts >= Tf, True, False)<EOL>self.ice = np.where(Ts < Tf, True, False)<EOL>self.ice_area = global_mean(self.ice * np.ones_like(self.Ts))<EOL>if self.ice.all():<EOL><INDENT>self.icelat = np.array([-<NUM_LIT:0.>, <NUM_LIT:0.>])<EOL><DEDENT>elif self.noice.all():<EOL><INDENT>self.icelat = np.array([-<NUM_LIT>, <NUM_LIT>])<EOL><DEDENT>else:  <EOL><INDENT>boundary_indices = np.where(np.diff(self.ice.squeeze()))[<NUM_LIT:0>]+<NUM_LIT:1><EOL>if boundary_indices.size == <NUM_LIT:1>:<EOL><INDENT>if self.ice[<NUM_LIT:0>] == True:   <EOL><INDENT>boundary_indices = np.append(boundary_indices, self.ice.size)<EOL><DEDENT>elif  self.ice[-<NUM_LIT:1>] == True:   <EOL><INDENT>boundary_indices = np.insert(boundary_indices,<NUM_LIT:0> ,<NUM_LIT:0>)<EOL><DEDENT><DEDENT>if boundary_indices.size == <NUM_LIT:1>:<EOL><INDENT>if self.ice[<NUM_LIT:0>] == True:   <EOL><INDENT>boundary_indices = np.append(boundary_indices, self.ice.size)<EOL><DEDENT>elif  self.ice[-<NUM_LIT:1>] == True:   <EOL><INDENT>boundary_indices = np.insert(boundary_indices,<NUM_LIT:0> ,<NUM_LIT:0>)<EOL><DEDENT><DEDENT>self.icelat = lat_bounds[boundary_indices]<EOL><DEDENT>
Finds iceline according to the surface temperature.

        This method is called by the private function
        :func:`~climlab.surface.albedo.Iceline._compute`
        and updates following attributes according to the freezing temperature
        ``self.param['Tf']`` and the surface temperature ``self.param['Ts']``:

        **Object attributes** \n

        :ivar Field noice:      a Field of booleans which are ``True`` where
                                :math:`T_s \\ge T_f`
        :ivar Field ice:        a Field of booleans which are ``True`` where
                                :math:`T_s < T_f`
        :ivar array icelat:     an array with two elements indicating the
                                ice-edge latitudes
        :ivar float ice_area:   fractional area covered by ice (0 - 1)
        :ivar dict diagnostics: keys ``'icelat'`` and ``'ice_area'`` are updated