code: def calc_max_flexural_wavelength(self):
      
      if np.isscalar(self.D):
        Dmax = self.D
      else:
        Dmax = self.D.max()
      # This is an approximation if there is fill that evolves with iterations 
      # (e.g., water), but should be good enough that this won't do much to it
      alpha = (4*Dmax/(self.drho*self.g))**.25 # 2D flexural parameter
      self.maxFlexuralWavelength = 2*np.pi*alpha
      self.maxFlexuralWavelength_ncells_x = int(np.ceil(self.maxFlexuralWavelength / self.dx))
      self.maxFlexuralWavelength_ncells_y = int(np.ceil(self.maxFlexuralWavelength / self.dy))
docs: Returns the approximate maximum flexural wavelength
      This is important when padding of the grid is required: in Flexure (this 
      code), grids are padded out to one maximum flexural wavelength, but in any 
      case, the flexural wavelength is a good characteristic distance for any 
      truncation limit