Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 1021
%typeset_mode True
import numpy as np
var('x, y, xi, eta') var('x_0, x_1, x_2, x_3, x_4, x_5, x_6, x_7,' 'y_0, y_1, y_2, y_3, y_4, y_5, y_6, y_7') assume(x_0, 'constant') assume(x_1, 'constant') assume(x_2, 'constant') assume(x_3, 'constant') assume(x_4, 'constant') assume(x_5, 'constant') assume(x_6, 'constant') assume(x_7, 'constant') assume(y_0, 'constant') assume(y_1, 'constant') assume(y_2, 'constant') assume(y_3, 'constant') assume(y_4, 'constant') assume(y_5, 'constant') assume(y_6, 'constant') assume(y_7, 'constant')
(x, y, xi, eta) (x_0, x_1, x_2, x_3, x_4, x_5, x_6, x_7, y_0, y_1, y_2, y_3, y_4, y_5, y_6, y_7)
N_2 = (-1.0 / 4.0) * (1 - xi) * (1 - eta) * (1 + xi + eta) N_3 = (1.0 / 2.0) * (1 - eta) * (1 - xi**2) N_4 = (-1.0 / 4.0) * (1 + xi) * (1 - eta) * (1 - xi + eta) N_5 = (1.0 / 2.0) * (1 + xi) * (1 - eta**2) N_6 = (-1.0 / 4.0) * (1 + xi) * (1 + eta) * (1 - xi - eta) N_7 = (1.0 / 2.0) * (1 + eta) * (1 - xi**2) N_0 = (-1.0 / 4.0) * (1 - xi) * (1 + eta) * (1 + xi - eta) N_1 = (1.0 / 2.0) * (1 - xi) * (1 - eta**2) print(N_0) print(N_1) print(N_2) print(N_3) print(N_4) print(N_5) print(N_6) print(N_7) N_0 = -(eta - xi - 1)*(eta + 1)*(0.250000000000000*xi - 0.250000000000000) N_1 = -(eta^2 - 1)*(-0.500000000000000*xi + 0.500000000000000) N_2 = -(eta + xi + 1)*(eta - 1)*(0.250000000000000*xi - 0.250000000000000) N_3 = -(xi^2 - 1)*(-0.500000000000000*eta + 0.500000000000000) N_4 = -(eta - xi + 1)*(eta - 1)*(-0.250000000000000*xi - 0.250000000000000) N_5 = -(eta^2 - 1)*(0.500000000000000*xi + 0.500000000000000) N_6 = -(eta + xi - 1)*(eta + 1)*(-0.250000000000000*xi - 0.250000000000000) N_7 = -(xi^2 - 1)*(0.500000000000000*eta + 0.500000000000000)
-(eta - xi - 1)*(eta + 1)*(0.250000000000000*xi - 0.250000000000000) -(eta^2 - 1)*(-0.500000000000000*xi + 0.500000000000000) -(eta + xi + 1)*(eta - 1)*(0.250000000000000*xi - 0.250000000000000) -(xi^2 - 1)*(-0.500000000000000*eta + 0.500000000000000) -(eta - xi + 1)*(eta - 1)*(-0.250000000000000*xi - 0.250000000000000) -(eta^2 - 1)*(0.500000000000000*xi + 0.500000000000000) -(eta + xi - 1)*(eta + 1)*(-0.250000000000000*xi - 0.250000000000000) -(xi^2 - 1)*(0.500000000000000*eta + 0.500000000000000)
def isoparam_x(x_nodes, xi_, eta_): x = N_0(xi = xi_, eta = eta_) * x_nodes[0] + N_1(xi = xi_, eta = eta_) * x_nodes[1] + N_2(xi = xi_, eta = eta_) * x_nodes[2] + N_3(xi = xi_, eta = eta_) * x_nodes[3] + N_4(xi = xi_, eta = eta_) * x_nodes[4] + N_5(xi = xi_, eta = eta_) * x_nodes[5] + N_6(xi = xi_, eta = eta_) * x_nodes[6] + N_7(xi = xi_, eta = eta_) * x_nodes[7] return x def isoparam_y(y_nodes, xi, eta): return isoparam_x(y_nodes, xi, eta)
# Generate test values for unit tests in 2D wave equation solver. x_nodes = np.array([0., 0.2, 0., 0.5, 1., 0.8, 1., 0.5]) y_nodes = np.array([1., 0.5, 0., 0.2, 0., 0.5, 1., 0.8]) # xi = 2 * np.random.rand(10) - 1 # eta = 2 * np.random.rand(10) - 1 xi = np.array([-0.71565335, -0.6604077, -0.87006188, -0.59216134, 0.73777285]) eta = np.array([-0.76986362, 0.62167345, -0.38380703, 0.85833585, 0.92388897]) print xi print eta
[-0.71565335 -0.6604077 -0.87006188 -0.59216134 0.73777285] [-0.76986362 0.62167345 -0.38380703 0.85833585 0.92388897]
x = np.zeros([xi.size, eta.size]) y = np.zeros([xi.size, eta.size]) Xi, Eta = np.meshgrid(xi, eta) for eta_idx in np.arange(eta.size): for xi_idx in np.arange(xi.size): x[eta_idx, xi_idx] = isoparam_x(x_nodes, xi[xi_idx], eta[eta_idx]) y[eta_idx, xi_idx] = isoparam_y(y_nodes, xi[xi_idx], eta[eta_idx])
print(x)
[[ 0.20047188 0.22359428 0.13584604 0.25215798 0.80878597] [ 0.22998716 0.2508311 0.1717295 0.27658015 0.77835843] [ 0.26421973 0.28242104 0.21334805 0.3049056 0.7430678 ] [ 0.17985384 0.20456788 0.11077948 0.23509776 0.83004127] [ 0.16313183 0.18913674 0.09044955 0.22126127 0.84728013]]
print(y)
[[ 0.19018229 0.20188751 0.15248238 0.2150496 0.18523221] [ 0.75018125 0.74072916 0.78062435 0.73010062 0.7541785 ] [ 0.34554379 0.3513793 0.32674892 0.35794112 0.34307598] [ 0.84542176 0.83237139 0.88745412 0.81769672 0.8509407 ] [ 0.87180243 0.85775537 0.9170449 0.84195996 0.87774287]]