use super::*;
use crate::fem::block::{
element::{
composite::localization::test::{
setup_for_test_composite_element_with_constitutive_model,
setup_for_test_composite_surface_element_with_constitutive_model,
test_composite_localization_element,
},
linear::surface::test::{
setup_for_test_finite_element_block_with_elastic_constitutive_model,
setup_for_test_finite_element_with_elastic_constitutive_model,
},
},
test::test_finite_element_block,
};
const D: usize = 30;
const E: usize = 4;
fn get_connectivity() -> Connectivity<E, N> {
[
[1, 5, 4, 16, 20, 19, 6, 7, 9, 21, 22, 24],
[4, 3, 0, 19, 18, 15, 8, 10, 11, 23, 25, 26],
[5, 1, 2, 20, 16, 17, 6, 12, 13, 21, 27, 28],
[3, 4, 5, 18, 19, 20, 8, 7, 14, 23, 22, 29],
]
}
fn get_coordinates_block() -> NodalCoordinatesBlock {
NodalCoordinatesBlock::new(&[
[0.50255857, 0.24347417, -0.01615211],
[-0.49942154, 0.26094478, 0.00416315],
[-0.50759508, -0.25724750, -0.00599802],
[0.49289393, -0.23468213, 0.00699716],
[0.01579151, 0.25376321, -0.01834600],
[-0.00883798, -0.23920464, -0.01280460],
[-0.26988463, -0.00257442, -0.00873978],
[-0.00771332, 0.01914662, 0.00953987],
[0.26484067, -0.01948331, 0.01835137],
[-0.25308186, 0.25771941, -0.01380911],
[0.50834657, -0.01583413, 0.01780817],
[0.23008039, 0.25421365, 0.00361367],
[-0.51641813, 0.00163187, 0.00276274],
[-0.23039358, -0.24000316, -0.01582590],
[0.26513732, -0.23561404, -0.00743661],
[0.50842270, 0.26881443, 0.01983390],
[-0.48069686, 0.25571890, -0.01976750],
[-0.51436448, -0.24251337, -0.01184794],
[0.51641935, -0.25062896, 0.01178048],
[0.00617594, 0.26697957, -0.00101055],
[0.01663657, -0.26921294, -0.00171786],
[-0.23589937, 0.00107257, 0.01023294],
[-0.00685220, 0.01063963, 0.00358080],
[0.23680031, 0.01264953, 0.01477911],
[-0.24138476, 0.25920237, -0.01562145],
[0.49751986, 0.01590411, -0.00847248],
[0.23183119, 0.26866829, -0.00683692],
[-0.49078100, -0.01555533, 0.00133412],
[-0.26674660, -0.24334801, -0.01123147],
[0.25780943, -0.23445127, 0.01898350],
])
}
fn get_reference_coordinates() -> ReferenceNodalCoordinates<N> {
ReferenceNodalCoordinates::new([
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 0.0],
[0.5, 0.5, 0.0],
[0.0, 0.5, 0.0],
[0.5, 0.0, 0.0],
[0.5, 0.5, 0.0],
[0.0, 0.5, 0.0],
[0.5, 0.0, 0.0],
])
}
fn get_reference_coordinates_block() -> ReferenceNodalCoordinatesBlock {
ReferenceNodalCoordinatesBlock::new(&[
[0.50, 0.25, 0.00],
[-0.50, 0.25, 0.00],
[-0.50, -0.25, 0.00],
[0.50, -0.25, 0.00],
[0.00, 0.25, 0.00],
[0.00, -0.25, 0.00],
[-0.25, 0.00, 0.00],
[0.00, 0.00, 0.00],
[0.25, 0.00, 0.00],
[-0.25, 0.25, 0.00],
[0.50, 0.00, 0.00],
[0.25, 0.25, 0.00],
[-0.50, 0.00, 0.00],
[-0.25, -0.25, 0.00],
[0.25, -0.25, 0.00],
[0.50, 0.25, 0.00],
[-0.50, 0.25, 0.00],
[-0.50, -0.25, 0.00],
[0.50, -0.25, 0.00],
[0.00, 0.25, 0.00],
[0.00, -0.25, 0.00],
[-0.25, 0.00, 0.00],
[0.00, 0.00, 0.00],
[0.25, 0.00, 0.00],
[-0.25, 0.25, 0.00],
[0.50, 0.00, 0.00],
[0.25, 0.25, 0.00],
[-0.50, 0.00, 0.00],
[-0.25, -0.25, 0.00],
[0.25, -0.25, 0.00],
])
}
fn get_velocities_block() -> NodalVelocitiesBlock {
NodalVelocitiesBlock::new(&[
[0.01431412, 0.01804358, 0.07496300],
[0.09962419, 0.04549100, 0.02328813],
[0.07403234, 0.03900588, 0.02604932],
[0.08251378, 0.00446619, 0.06083218],
[0.07505936, 0.06427368, 0.00360294],
[0.03396493, 0.05562344, 0.08084064],
[0.03920721, 0.09974366, 0.00835274],
[0.06322438, 0.04215104, 0.07457214],
[0.00214199, 0.01956594, 0.09590513],
[0.00158532, 0.05293008, 0.04495069],
[0.02439420, 0.05474652, 0.06894332],
[0.04635582, 0.02833468, 0.05637430],
[0.08323779, 0.09134513, 0.00270436],
[0.04526144, 0.09675598, 0.07204048],
[0.09081726, 0.05236692, 0.06802666],
[0.08887790, 0.04621419, 0.01521392],
[0.02594481, 0.03407545, 0.09746018],
[0.02060314, 0.03239568, 0.09716370],
[0.00317384, 0.01425607, 0.09150469],
[0.03201858, 0.09884590, 0.04427266],
[0.09162680, 0.02950793, 0.06983756],
[0.03955233, 0.00967575, 0.00726536],
[0.00362971, 0.04974553, 0.03535663],
[0.04301489, 0.05819536, 0.07788356],
[0.02063973, 0.03599813, 0.00392894],
[0.04542459, 0.03250225, 0.00345714],
[0.01380998, 0.08523858, 0.00614054],
[0.00438224, 0.02015492, 0.03752064],
[0.09450938, 0.07154234, 0.02198726],
[0.09789419, 0.04941774, 0.02401724],
])
}
const TEST_SOLVE: bool = false;
fn get_dirichlet_places<'a>() -> [&'a [usize]; 10] {
panic!()
}
fn get_dirichlet_values(_x: Scalar) -> [Scalar; 10] {
panic!()
}
test_composite_localization_element!(Wedge);
test_finite_element_block!(Wedge);