flavio 0.5.0

flavio welcomes you
Documentation
use super::*;
use crate::fem::block::{
    element::linear::{
        localization::test::{
            setup_for_test_linear_surface_element_with_constitutive_model,
            test_linear_localization_element,
        },
        surface::test::{
            setup_for_test_finite_element_block_with_elastic_constitutive_model,
            setup_for_test_finite_element_with_elastic_constitutive_model,
            setup_for_test_linear_element_with_constitutive_model,
        },
    },
    test::test_finite_element_block,
};

const D: usize = 32;
const E: usize = 18;

fn get_connectivity() -> Connectivity<E, N> {
    [
        [6, 4, 8, 22, 20, 24],
        [8, 15, 6, 24, 31, 22],
        [15, 8, 9, 31, 24, 25],
        [9, 14, 15, 25, 30, 31],
        [14, 9, 7, 30, 25, 23],
        [7, 10, 14, 23, 26, 30],
        [5, 6, 15, 21, 22, 31],
        [15, 13, 5, 31, 29, 21],
        [13, 15, 14, 29, 31, 30],
        [14, 12, 13, 30, 28, 29],
        [12, 14, 10, 28, 30, 26],
        [10, 11, 12, 26, 27, 28],
        [1, 5, 13, 17, 21, 29],
        [13, 3, 1, 29, 19, 17],
        [3, 13, 12, 19, 29, 28],
        [12, 2, 3, 28, 18, 19],
        [2, 12, 11, 18, 28, 27],
        [11, 0, 2, 27, 16, 18],
    ]
}

fn get_coordinates_block() -> NodalCoordinatesBlock {
    NodalCoordinatesBlock::new(&[
        [0.52493242, 0.46007179, -0.01313593],
        [-0.49249732, 0.45861313, 0.00692950],
        [0.13681751, 0.49739797, -0.03913867],
        [-0.16906010, 0.45570952, 0.04155203],
        [-0.50784484, -0.51557480, 0.02400643],
        [-0.52697789, 0.15806322, -0.02101903],
        [-0.50460505, -0.20384408, 0.04339776],
        [0.50284742, -0.52930851, 0.01780512],
        [-0.12117202, -0.47170986, -0.01554877],
        [0.17068755, -0.48362566, 0.04805858],
        [0.49315351, -0.21084858, 0.00677581],
        [0.51913636, 0.18622272, -0.02365121],
        [0.13880631, 0.18701065, 0.02217795],
        [-0.17167971, 0.12074383, 0.01228280],
        [0.18742507, -0.18877085, -0.03995387],
        [-0.20089730, -0.17737422, 0.03563169],
        [0.53224136, 0.47503067, 0.96814942],
        [-0.52879305, 0.48946303, 1.01865459],
        [0.17381915, 0.48720033, 0.96261128],
        [-0.13847523, 0.46435300, 0.99918085],
        [-0.50177781, -0.45903988, 0.95547808],
        [-0.52394573, 0.11984925, 1.03092470],
        [-0.47797934, -0.16358887, 0.99753093],
        [0.46629365, -0.53002434, 0.96840737],
        [-0.20840967, -0.47733345, 0.97379936],
        [0.12606825, -0.47465160, 0.97819479],
        [0.49362273, -0.21543374, 0.96389391],
        [0.47883486, 0.17160061, 1.03083090],
        [0.15057969, 0.17550796, 1.00824486],
        [-0.13764710, 0.17932179, 1.00134590],
        [0.18300281, -0.17029714, 0.97287949],
        [-0.14469107, -0.12224519, 0.99747609],
    ])
}

fn get_reference_coordinates() -> ReferenceNodalCoordinates<N> {
    ReferenceNodalCoordinates::new([
        [0.0, 0.0, 0.0],
        [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],
    ])
}

fn get_reference_coordinates_block() -> ReferenceNodalCoordinatesBlock {
    ReferenceNodalCoordinatesBlock::new(&[
        [0.5, 0.5, 0.0],
        [-0.5, 0.5, 0.0],
        [1.0 / 6.0, 0.5, 0.0],
        [-1.0 / 6.0, 0.5, 0.0],
        [-0.5, -0.5, 0.0],
        [-0.5, 1.0 / 6.0, 0.0],
        [-0.5, -1.0 / 6.0, 0.0],
        [0.5, -0.5, 0.0],
        [-1.0 / 6.0, -0.5, 0.0],
        [1.0 / 6.0, -0.5, 0.0],
        [0.5, -1.0 / 6.0, 0.0],
        [0.5, 1.0 / 6.0, 0.0],
        [1.0 / 6.0, 1.0 / 6.0, 0.0],
        [-1.0 / 6.0, 1.0 / 6.0, 0.0],
        [1.0 / 6.0, -1.0 / 6.0, 0.0],
        [-1.0 / 6.0, -1.0 / 6.0, 0.0],
        [0.5, 0.5, 0.0],
        [-0.5, 0.5, 0.0],
        [1.0 / 6.0, 0.5, 0.0],
        [-1.0 / 6.0, 0.5, 0.0],
        [-0.5, -0.5, 0.0],
        [-0.5, 1.0 / 6.0, 0.0],
        [-0.5, -1.0 / 6.0, 0.0],
        [0.5, -0.5, 0.0],
        [-1.0 / 6.0, -0.5, 0.0],
        [1.0 / 6.0, -0.5, 0.0],
        [0.5, -1.0 / 6.0, 0.0],
        [0.5, 1.0 / 6.0, 0.0],
        [1.0 / 6.0, 1.0 / 6.0, 0.0],
        [-1.0 / 6.0, 1.0 / 6.0, 0.0],
        [1.0 / 6.0, -1.0 / 6.0, 0.0],
        [-1.0 / 6.0, -1.0 / 6.0, 0.0],
    ])
}

fn get_velocities_block() -> NodalVelocitiesBlock {
    NodalVelocitiesBlock::new(&[
        [-0.06433848, -0.01926187, -0.03743756],
        [-0.0870451, -0.04597518, -0.03565326],
        [0.04400981, -0.09000301, 0.04678533],
        [0.00173760, -0.08503324, -0.07858199],
        [-0.05268299, -0.04592905, 0.00647059],
        [-0.03494861, -0.00688540, -0.07195594],
        [0.03256779, -0.05282913, -0.08925343],
        [-0.07227557, 0.01213563, 0.00693205],
        [0.08459964, 0.05677483, 0.01987572],
        [-0.02275489, -0.07373460, -0.08081551],
        [-0.03142081, -0.08566530, 0.06210498],
        [-0.06069344, 0.03923413, 0.06299218],
        [0.06499705, -0.07443175, -0.00382237],
        [-0.06030412, -0.08955708, -0.04993707],
        [0.02621134, -0.06516815, -0.01265165],
        [-0.03223677, 0.01629867, 0.08890064],
        [-0.00062922, 0.09861261, -0.02108821],
        [0.00093658, 0.01677123, 0.07564730],
        [-0.03366722, -0.00382467, -0.01066520],
        [0.03326620, -0.05894294, -0.09974025],
        [-0.08501372, -0.00149077, 0.05720255],
        [-0.04737467, 0.05557303, 0.03014414],
        [0.04400757, 0.02143862, 0.08174897],
        [-0.09654050, -0.01515334, -0.02669490],
        [0.04375730, -0.09169403, 0.07701589],
        [0.08591825, -0.00565911, 0.02977132],
        [0.05940797, 0.04279079, -0.01290276],
        [-0.05899700, 0.01084053, -0.07248295],
        [0.00876680, -0.06769134, 0.00247064],
        [-0.03368043, -0.07116854, 0.09420690],
        [-0.01459746, -0.06751504, -0.07558666],
        [-0.08412322, -0.09261289, -0.04835088],
    ])
}

const TEST_SOLVE: bool = false;

fn get_dirichlet_places<'a>() -> [&'a [usize]; 10] {
    panic!()
}

fn get_dirichlet_values(_x: Scalar) -> [Scalar; 10] {
    panic!()
}

test_linear_localization_element!(Wedge);
test_finite_element_block!(Wedge);