Esempio n. 1
0
    def get_free_energy_for_minimize(grid_points):
        """
        Calculates total elastic energy for given radius and pressure.
        """
        global free_energy_elastic_stretching, \
        free_energy_elastic_bending, \
        free_energy_elastic_tail, \
        free_energy_external, \
        current_volume
        
        u_coef = grid_points[:N_COEF_U]
        h_coef = grid_points[N_COEF_U:]
        
        u = Chebyshev(u_coef, domain=[0, radius])
        h = Chebyshev(h_coef, domain=[0, radius])
        r = Chebyshev([radius/2, radius/2], domain=[0, radius])
                
        dh_dr = h.deriv(m=1)
        d2h_dr2 = h.deriv(m=2)
        du_dr = u.deriv(m=1)
        
        current_volume = get_volume_from_h_coefs(h, radius)
        
        psi_str_to_integrate = \
        (du_dr ** 2 + du_dr * dh_dr ** 2 \
         + 0.25 * dh_dr ** 4 \
         + (u // r) ** 2) * r
        
        free_energy_elastic_stretching = np.pi * YOUNGS_MODULUS \
        * (psi_str_to_integrate.integ()(radius) \
           - psi_str_to_integrate.integ()(0.0))
        
        free_energy_elastic_tail = np.pi * YOUNGS_MODULUS * u(radius) ** 2
        
        psi_bend_to_integrate = \
        (d2h_dr2 ** 2 + (dh_dr // r) ** 2) * r
        
        free_energy_elastic_bending = RIGIDITY * np.pi \
        * (psi_bend_to_integrate.integ()(radius) \
           - psi_bend_to_integrate.integ()(0.0))
        
#        free_energy_elastic_bending = 0.0
        
        free_energy_external = -current_volume * pressure        

        return free_energy_elastic_stretching \
               + free_energy_elastic_bending \
               + free_energy_elastic_tail \
               + free_energy_external
Esempio n. 2
0
 def h_constraint_der_zero(grid_points):
     """
     Boundary condition h'(0) = 0.
     """
     h_coef = grid_points[N_COEF_U:]
     h = Chebyshev(h_coef, domain=[0, radius])
     return h.deriv(m=1)(0.0)
Esempio n. 3
0
 def _derivative(c, m):
     cheb = Chebyshev(c)
     dcheb = cheb.deriv(m=m)
     return dcheb.coef
 def _derivative(c, m):
     cheb = Chebyshev(c)
     dcheb = cheb.deriv(m=m)
     return dcheb.coef