def test_multimesh_2(): m = MeshTri() m1 = MeshTri.init_refdom() m2 = MeshTri.init_refdom().scaled((-1., -1.)).translated(( 1., 1., )) M = m1 @ m2 E = [ElementTriP1(), ElementTriP1()] basis1 = list(map(Basis, M, E)) basis2 = Basis(m, ElementTriP1()) M1 = asm(mass, basis1) M2 = asm(mass, basis2) assert_array_almost_equal(M1.toarray(), M2.toarray())
def check_equivalence(self, ec, ev): X = np.array([[0.125, 0.1111], [0.0555, 0.6]]) m = MeshTri.init_refdom() mapping = MappingAffine(m) for k in range(6): for i in [0, 1]: # accessing i'th component looks slightly different assert_array_equal( ev.gbasis(mapping, X, k)[0].f[i], ec.gbasis(mapping, X, k)[i].f) for j in [0, 1]: assert_array_equal( ev.gbasis(mapping, X, k)[0].df[i][j], ec.gbasis(mapping, X, k)[i].df[j])
elem.doflocs, elem1.doflocs, ) @pytest.mark.parametrize( "m1, m2, lenright", [ ( MeshTri().refined(3), MeshTri().translated((1., 0.)).refined(2), 1., ), ( MeshTri.init_refdom().refined(3).with_boundaries( {'right': lambda x: x[0] + x[1] == 1} ), MeshTri().translated((1., 0.)).refined(2), np.sqrt(2), ) ] ) def test_mortar_basis(m1, m2, lenright): # some sanity checks for MortarBasis e = ElementTriP1() mort = MappingMortar.init_2D(m1, m2, m1.boundaries['right'], m2.boundaries['left'], [0., 1.])