Source code for statmechcrack.tests.test_boundary

"""A module for testing boundary behavior.

"""

import unittest
import numpy as np

from .test_zero import random_crack_model


[docs] class Boundary(unittest.TestCase): """Class to test boundary behavior. """
[docs] def main(self): """Main function for module-level testing functionality. """ self.test_boundary_nondimensional_force() self.test_boundary_nondimensional_end_separation() self.test_boundary_relative_nondimensional_gibbs_free_energy() self.test_boundary_relative_nondimensional_helmholtz_free_energy() self.test_boundary_relative_nondimensional_reaction_rate_coefficient()
[docs] def test_boundary_nondimensional_force(self): """Function to test asymptotic behavior of the nondimensional force. """ rgn = np.random.rand() model = random_crack_model(varepsilon=800) compare = model.p_0(rgn, [1, 1])[0] self.assertAlmostEqual( model.p(rgn)[0], compare, delta=np.abs(1e-1*compare) ) model = random_crack_model(N=100, varepsilon=800) compare = 3*model.kappa/model.N**3*(rgn - 1) self.assertAlmostEqual( model.p(rgn)[0], compare, delta=np.abs(1e-1*compare) )
[docs] def test_boundary_nondimensional_end_separation(self): """Function to test asymptotic behavior of the nondimensional end separation. """ rgn = np.random.rand() model = random_crack_model(varepsilon=800) compare = model.v_0(rgn, [1, 1])[0] self.assertAlmostEqual( model.v(rgn)[0], compare, delta=np.abs(1e-1*compare) ) model = random_crack_model(N=100, varepsilon=800) compare = 1 + model.N**3/3/model.kappa*rgn self.assertAlmostEqual( model.v(rgn)[0], compare, delta=np.abs(1e-1*compare) )
[docs] def test_boundary_relative_nondimensional_helmholtz_free_energy(self): """Function to test asymptotic behavior of the relative nondimensional Helmholtz free energy. """ rgn = np.random.rand() model = random_crack_model(varepsilon=800) compare = model.beta_A_0(rgn, [1, 1])[0] self.assertAlmostEqual( model.beta_A(rgn)[0], compare, delta=np.abs(1e-1*compare) ) model = random_crack_model(N=100, varepsilon=800) compare = 3*model.kappa/2/model.N**3*(rgn - 1)**2 self.assertAlmostEqual( model.beta_A(rgn)[0], compare, delta=np.abs(1e-1*compare) )
[docs] def test_boundary_relative_nondimensional_gibbs_free_energy(self): """Function to test asymptotic behavior of the relative nondimensional Gibbs free energy. """ rgn = np.random.rand() model = random_crack_model(varepsilon=800) compare = model.beta_G_0(rgn, [1, 1])[0] self.assertAlmostEqual( model.beta_G(rgn)[0], compare, delta=np.abs(1e-1*compare) ) model = random_crack_model(N=100, varepsilon=800) compare = -model.N**3/6/model.kappa*rgn**2 - rgn self.assertAlmostEqual( model.beta_G(rgn)[0], compare, delta=np.abs(1e-1*compare) )
[docs] def test_boundary_relative_nondimensional_reaction_rate_coefficient(self): """Function to test asymptotic behavior of the relative nondimensional reaction rate coefficient. """ rgn = np.random.rand() model = random_crack_model(varepsilon=800) compare = model.k_0(rgn, [1, 1], ensemble='isometric')[0] self.assertAlmostEqual( model.k(rgn, ensemble='isometric')[0], compare, delta=np.abs(1e-0*compare) ) compare = model.k_0(rgn, [1, 1], ensemble='isotensional')[0] self.assertAlmostEqual( model.k(rgn, ensemble='isotensional')[0], compare, delta=np.abs(1e-0*compare) ) model = random_crack_model(N=100, varepsilon=800) compare = np.exp(2*model.kappa/model.alpha/model.N**2*(rgn - 1)) self.assertAlmostEqual( model.k(rgn, ensemble='isometric')[0], compare, delta=np.abs(1e-0*compare) ) model = random_crack_model(N=100, varepsilon=800) rgn = 3*model.kappa/model.N**3*np.random.rand() compare = np.exp(2*model.N/3/model.alpha*rgn) self.assertAlmostEqual( model.k(rgn, ensemble='isotensional')[0], compare, delta=np.abs(1e-0*compare) )
if __name__ == '__main__': unittest.main()