code: def BC_0Slope0Shear(self):
      i=0
      
      
      if self.BC_W == '0Slope0Shear':
        i=0
        self.l2[i] = np.nan
        self.l1[i] = np.nan
        self.c0[i] += 0
        self.r1[i] += self.l1_coeff_i[i]
        self.r2[i] += self.l2_coeff_i[i]
        i=1
        self.l2[i] = np.nan
        self.l1[i] += 0
        self.c0[i] += 0
        self.r1[i] += 0
        self.r2[i] += self.l2_coeff_i[i]
      if self.BC_E == '0Slope0Shear':
        i=-2
        self.l2[i] += self.r2_coeff_i[i]
        self.l1[i] += 0
        self.c0[i] += 0
        self.r1[i] += 0
        self.r2[i] = np.nan
        i=-1
        self.l2[i] += self.r2_coeff_i[i]
        self.l1[i] += self.r1_coeff_i[i]
        self.c0[i] += 0
        self.r1[i] = np.nan
        self.r2[i] = np.nan
docs: This boundary condition is esentially a Neumann 0-gradient boundary 
      condition with that 0-gradient state extended over a longer part of 
      the grid such that the third derivative also equals 0.
      
      This boundary condition has more of a geometric meaning than a physical 
      meaning. It produces a state in which the boundaries have to have all 
      gradients in deflection go to 0 (i.e. approach constant values) while 
      not specifying what those values must be.
      
      This uses a 0-curvature boundary condition for elastic thickness 
      that extends outside of the computational domain.