Source code for svcco.implicit.core.a_matrix

import numpy as np
import numba as nb
from .m_matrix import M
from .n_matrix import N

[docs]@nb.jit(nopython=True) def A(surface): n = surface.shape[0] d = surface.shape[1] M_matrix = M(surface) N_matrix = N(surface) A_matrix = np.zeros(((n+1)*4,(n+1)*4)) A_matrix[:n*4,:n*4] = M_matrix A_matrix[:n*4,n*4:] = N_matrix A_matrix[n*4:,:n*4] = N_matrix.T A_inv = np.linalg.inv(A_matrix) M_inv = A_inv[:n*4,:n*4] N_inv = A_inv[:n*4,n*4:] K00 = np.zeros((n,n)) K01 = np.zeros((n,n*d)) K11 = np.zeros((n*d,n*d)) K00[:,:] = M_inv[:n,:n] K01[:,:] = M_inv[:n,n:] K11[:,:] = M_inv[n:,n:] return A_inv,K00,K01,K11