allen_cahn_2D module#

Solving 2D Allen-Cahn eqations in 2D with homogenous boundary conditions

  • Consturct V_n := span { phi_{n}}, where phi_{n} is n-th order Polynomial such that phi_{n} = 0 at the boundaries

  • Consturct phi_{n} = L_{n+2} - L_{n} , where L_{n} is n-th order Legendre Polynomial

  • The Quad can be computed as difference of two quad, using linearity as,

    Consider ( f , phi_{j} ) = ( f , L_{j+2} ) - ( f , L_{j} )

  • For mass matrix : in the above quad rule plug : f = L_{k+2} - L_{k}

  • For 2D Quad, constrct : phi_{ij} = phi_i o phi_j

    Consider, (f (x, y ), phi_{ij} ) = ( f (x) o f(y) , phi_{ij} ) = ( f(x) , phi_{i}) o ( f(y) , phi_{j})

Created on Sat Sep 2 15:24:54 2023

@author: Pavan Pranjivan Mehta

allen_cahn_2D.eval_A(epi, M, K, dt)#

Computes A = M + dt * episilon * episilon * K

Parameters#

Nint

max degree of the polynomial

Knumpy araray

2D Stiffness matrix of dim = (N^2 x N^2)

Mnumpy araray

2D Mass matrix of dim = (N^2 x N^2)

dtfloat

time step

epifloat

diffusion constant, episilon

Returns#

A = M + dt * episilon * episilon * K

A: numpy array float, dim = (N^2 x N^2)

A = M + dt * episilon * episilon * K

allen_cahn_2D.eval_b(coeff_old, N, M, dt)#

Computes b = M [ eta_coeff - f_prime (eta_coeff) ]

Parameters#

Nint

max degree of the polynomial

coeff_oldnumpy araray

coeffecients of eta at time-step k obtained as reuslt of L2 Projection

Mnumpy araray

Mass matrix of dim = (N^2 x N^2)

dtfloat

time step

Returns#

b = M [ eta_coeff - f_prime (eta_coeff) ]

b: numpy array float, dim = (N^2)

b = M [ eta_coeff - f_prime (eta_coeff) ]

Notes#

f = eta**2 ( eta - 1 )**2 f_prime = 4 eta**3 - 6 eta**2 + 2 eta

allen_cahn_2D.initial_valueX(x)#

Computes Initial value in 1D

Parameters#

xfloat or numpy array

spatial points in [-1, 1] in “x” or “y” direction

Returns#

Initial value: numpy array

Notes#

Available functions: random, sin (x * pi) and runge in [0, 1]

allen_cahn_2D.initial_value(x, y)#

Computes Initial value in 2D

Parameters#

xfloat or numpy array

spatial points in [0, 1] in “x” direction

y: float or numpy array

spatial points in [0, 1] in “y” direction

Returns#

Initial value: numpy array

Coputes 2D intial value from of 1D valuues

allen_cahn_2D.function_projection_2d(degree, M)#

Computes Coeffcients from L2 projection of Initial value

Parameters#

degreeint

max degree of the polynomial

Mnumpy araray

Mass matrix of dim = (N^2 x N^2)

Returns#

Coeffcients: numpy array

Coeffcients from L2 projection of initial value basis = homogenous basis using legendre polynomials

allen_cahn_2D.construct_sol(coeff, x, y, N, M)#

Constructs function value, f(x) as;

f(x) = coeff_0 * P_0 + coeff_1 * P_1 + coeff_3 * P_2 + …

where, P_n is basis function of n-th degree

Parameters#

Nint

max degreo of the polynomial

M2D numpy array

2D mass matrix of dim = N^2 x N^2

coeffnumpy araray

coeffecients of eta obtained as reuslt of L2 Projection

xfloat or numpy array

spatial points in [-1, 1] in “x” direction

yfloat or numpy array

spatial points in [-1, 1] in “y” direction

Returns#

f(x): numpy array

function value upon expansion over basis basis = homogenous basis using legendre polynomials

allen_cahn_2D.solver(N)#

Solve Allen-Cahn eqaution in 2D

Parameters#

Nint

max degree of the polynomial

Returns#

None