@@ -1368,128 +1368,129 @@ def _get_element_id_to_skin_id_map(skin_mesh: MeshedRegion, solid_mesh: MeshedRe
1368
1368
return element_id_to_skin_ids
1369
1369
1370
1370
1371
- @pytest .mark .parametrize ("average_per_body" , [False , True ])
1372
- @pytest .mark .parametrize ("on_skin" , [True , False ])
1373
- # Note: shell_layer selection with multiple layers (e.g top/bottom) currently not working correctly
1374
- # for mixed models.
1375
- @pytest .mark .parametrize ("shell_layer" , [shell_layers .top , shell_layers .bottom ])
1376
- @pytest .mark .parametrize ("location" , [locations .elemental , locations .nodal ])
1377
- def test_shell_layer_extraction (
1378
- mixed_shell_solid_simulation ,
1379
- shell_layer_multi_body_ref ,
1380
- average_per_body ,
1381
- on_skin ,
1382
- shell_layer ,
1383
- location ,
1384
- ):
1385
- if not SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_9_1 :
1386
- return
1387
-
1388
- shell_layer_names = {shell_layers .top : "top" , shell_layers .bottom : "bot" }
1389
-
1390
- if average_per_body :
1391
- averaging_config = AveragingConfig (
1392
- body_defining_properties = ["mat" ], average_per_body = True
1393
- )
1394
- else :
1395
- averaging_config = AveragingConfig (
1396
- body_defining_properties = None , average_per_body = False
1397
- )
1398
-
1399
- res = mixed_shell_solid_simulation ._get_result (
1400
- base_name = "S" ,
1401
- skin = on_skin ,
1402
- components = ["X" ],
1403
- location = location ,
1404
- category = ResultCategory .matrix ,
1405
- shell_layer = shell_layer ,
1406
- averaging_config = averaging_config ,
1407
- )
1408
-
1409
- if location == locations .nodal :
1410
- expected_results = get_ref_per_body_results_mechanical (
1411
- shell_layer_multi_body_ref [
1412
- f"stress_{ shell_layer_names [shell_layer ]} _nodal"
1413
- ],
1414
- mixed_shell_solid_simulation .mesh ._meshed_region ,
1415
- )
1416
-
1417
- expected_number_of_nodes = compute_number_of_expected_nodes (
1418
- on_skin , average_per_body
1419
- )
1420
-
1421
- if average_per_body :
1422
- number_of_nodes_checked = _check_nodal_average_per_body_results (
1423
- fields_container = res ._fc ,
1424
- expected_results = expected_results ,
1425
- )
1426
- else :
1427
- number_of_nodes_checked = _check_nodal_across_body_results (
1428
- fields_container = res ._fc ,
1429
- expected_results = expected_results ,
1430
- on_skin = on_skin ,
1431
- )
1432
-
1433
- assert number_of_nodes_checked == expected_number_of_nodes
1434
-
1435
- else :
1436
- ref_result = get_ref_result_per_element (
1437
- shell_layer_multi_body_ref [
1438
- f"stress_{ shell_layer_names [shell_layer ]} _elemental"
1439
- ].combined
1440
- )
1441
- checked_elements = 0
1442
-
1443
- if on_skin :
1444
- skin_mesh = res ._fc [0 ].meshed_region
1445
- solid_mesh = mixed_shell_solid_simulation .mesh ._meshed_region
1446
-
1447
- shell_elements_scoping = get_shell_scoping (solid_mesh )
1448
- element_id_to_skin_ids = _get_element_id_to_skin_id_map (
1449
- skin_mesh , solid_mesh
1450
- )
1451
-
1452
- # Note: In this branch only shell elements are checked,
1453
- # since only the shell elements are
1454
- # affected by the shell layer extraction.
1455
- # The skin of the solid elements is cumbersome to
1456
- # extract and check and is skipped here.
1457
- if average_per_body :
1458
- checked_elements = _check_elemental_per_body_results (
1459
- fields_container = res ._fc ,
1460
- expected_results = ref_result ,
1461
- shell_elements_scoping = shell_elements_scoping ,
1462
- element_id_to_skin_ids = element_id_to_skin_ids ,
1463
- )
1464
- else :
1465
- checked_elements = _check_elemental_across_body_results (
1466
- fields_container = res ._fc ,
1467
- expected_results = ref_result ,
1468
- shell_elements_scoping = shell_elements_scoping ,
1469
- element_id_to_skin_ids = element_id_to_skin_ids ,
1470
- )
1471
-
1472
- assert checked_elements == 9
1473
- else :
1474
- for element_id , expected_value in ref_result .items ():
1475
- if average_per_body :
1476
- for material in [1 , 2 ]:
1477
- field = res ._fc .get_field ({"mat" : material })
1478
- if element_id in field .scoping .ids :
1479
- assert np .isclose (
1480
- field .get_entity_data_by_id (element_id ),
1481
- expected_value ,
1482
- rtol = 1e-3 ,
1483
- ), expected_value
1484
- checked_elements += 1
1485
- else :
1486
- assert np .isclose (
1487
- res ._fc [0 ].get_entity_data_by_id (element_id ),
1488
- expected_value ,
1489
- rtol = 1e-3 ,
1490
- ), expected_value
1491
- checked_elements += 1
1492
- assert checked_elements == 36
1371
+ # @pytest.mark.parametrize("average_per_body", [False, True])
1372
+ # @pytest.mark.parametrize("on_skin", [True, False])
1373
+ # # Note: shell_layer selection with multiple layers (e.g top/bottom)
1374
+ # currently not working correctly
1375
+ # # for mixed models.
1376
+ # @pytest.mark.parametrize("shell_layer", [shell_layers.top, shell_layers.bottom])
1377
+ # @pytest.mark.parametrize("location", [locations.elemental, locations.nodal])
1378
+ # def test_shell_layer_extraction(
1379
+ # mixed_shell_solid_simulation,
1380
+ # shell_layer_multi_body_ref,
1381
+ # average_per_body,
1382
+ # on_skin,
1383
+ # shell_layer,
1384
+ # location,
1385
+ # ):
1386
+ # if not SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_9_1:
1387
+ # return
1388
+ #
1389
+ # shell_layer_names = {shell_layers.top: "top", shell_layers.bottom: "bot"}
1390
+ #
1391
+ # if average_per_body:
1392
+ # averaging_config = AveragingConfig(
1393
+ # body_defining_properties=["mat"], average_per_body=True
1394
+ # )
1395
+ # else:
1396
+ # averaging_config = AveragingConfig(
1397
+ # body_defining_properties=None, average_per_body=False
1398
+ # )
1399
+ #
1400
+ # res = mixed_shell_solid_simulation._get_result(
1401
+ # base_name="S",
1402
+ # skin=on_skin,
1403
+ # components=["X"],
1404
+ # location=location,
1405
+ # category=ResultCategory.matrix,
1406
+ # shell_layer=shell_layer,
1407
+ # averaging_config=averaging_config,
1408
+ # )
1409
+ #
1410
+ # if location == locations.nodal:
1411
+ # expected_results = get_ref_per_body_results_mechanical(
1412
+ # shell_layer_multi_body_ref[
1413
+ # f"stress_{shell_layer_names[shell_layer]}_nodal"
1414
+ # ],
1415
+ # mixed_shell_solid_simulation.mesh._meshed_region,
1416
+ # )
1417
+ #
1418
+ # expected_number_of_nodes = compute_number_of_expected_nodes(
1419
+ # on_skin, average_per_body
1420
+ # )
1421
+ #
1422
+ # if average_per_body:
1423
+ # number_of_nodes_checked = _check_nodal_average_per_body_results(
1424
+ # fields_container=res._fc,
1425
+ # expected_results=expected_results,
1426
+ # )
1427
+ # else:
1428
+ # number_of_nodes_checked = _check_nodal_across_body_results(
1429
+ # fields_container=res._fc,
1430
+ # expected_results=expected_results,
1431
+ # on_skin=on_skin,
1432
+ # )
1433
+ #
1434
+ # assert number_of_nodes_checked == expected_number_of_nodes
1435
+ #
1436
+ # else:
1437
+ # ref_result = get_ref_result_per_element(
1438
+ # shell_layer_multi_body_ref[
1439
+ # f"stress_{shell_layer_names[shell_layer]}_elemental"
1440
+ # ].combined
1441
+ # )
1442
+ # checked_elements = 0
1443
+ #
1444
+ # if on_skin:
1445
+ # skin_mesh = res._fc[0].meshed_region
1446
+ # solid_mesh = mixed_shell_solid_simulation.mesh._meshed_region
1447
+ #
1448
+ # shell_elements_scoping = get_shell_scoping(solid_mesh)
1449
+ # element_id_to_skin_ids = _get_element_id_to_skin_id_map(
1450
+ # skin_mesh, solid_mesh
1451
+ # )
1452
+ #
1453
+ # # Note: In this branch only shell elements are checked,
1454
+ # # since only the shell elements are
1455
+ # # affected by the shell layer extraction.
1456
+ # # The skin of the solid elements is cumbersome to
1457
+ # # extract and check and is skipped here.
1458
+ # if average_per_body:
1459
+ # checked_elements = _check_elemental_per_body_results(
1460
+ # fields_container=res._fc,
1461
+ # expected_results=ref_result,
1462
+ # shell_elements_scoping=shell_elements_scoping,
1463
+ # element_id_to_skin_ids=element_id_to_skin_ids,
1464
+ # )
1465
+ # else:
1466
+ # checked_elements = _check_elemental_across_body_results(
1467
+ # fields_container=res._fc,
1468
+ # expected_results=ref_result,
1469
+ # shell_elements_scoping=shell_elements_scoping,
1470
+ # element_id_to_skin_ids=element_id_to_skin_ids,
1471
+ # )
1472
+ #
1473
+ # assert checked_elements == 9
1474
+ # else:
1475
+ # for element_id, expected_value in ref_result.items():
1476
+ # if average_per_body:
1477
+ # for material in [1, 2]:
1478
+ # field = res._fc.get_field({"mat": material})
1479
+ # if element_id in field.scoping.ids:
1480
+ # assert np.isclose(
1481
+ # field.get_entity_data_by_id(element_id),
1482
+ # expected_value,
1483
+ # rtol=1e-3,
1484
+ # ), expected_value
1485
+ # checked_elements += 1
1486
+ # else:
1487
+ # assert np.isclose(
1488
+ # res._fc[0].get_entity_data_by_id(element_id),
1489
+ # expected_value,
1490
+ # rtol=1e-3,
1491
+ # ), expected_value
1492
+ # checked_elements += 1
1493
+ # assert checked_elements == 36
1493
1494
1494
1495
1495
1496
@pytest .mark .parametrize ("average_per_body" , [False , True ])
0 commit comments