| 988 | } // endDataRedistribution |
| 989 | |
| 990 | void |
| 991 | IMPMethod::initializeLevelData(Pointer<BasePatchHierarchy<NDIM>> hierarchy, |
| 992 | int level_number, |
| 993 | double init_data_time, |
| 994 | bool can_be_refined, |
| 995 | bool initial_time, |
| 996 | Pointer<BasePatchLevel<NDIM>> old_level, |
| 997 | bool allocate_data) |
| 998 | { |
| 999 | const int finest_hier_level = hierarchy->getFinestLevelNumber(); |
| 1000 | d_l_data_manager->setPatchHierarchy(hierarchy); |
| 1001 | d_l_data_manager->setPatchLevels(0, finest_hier_level); |
| 1002 | d_l_data_manager->initializeLevelData( |
| 1003 | hierarchy, level_number, init_data_time, can_be_refined, initial_time, old_level, allocate_data); |
| 1004 | if (initial_time && d_l_data_manager->levelContainsLagrangianData(level_number)) |
| 1005 | { |
| 1006 | d_l_data_manager->createLData("Grad_U", level_number, NDIM * NDIM, /*manage_data*/ true); |
| 1007 | Pointer<LData> F_data = d_l_data_manager->createLData("F", |
| 1008 | level_number, |
| 1009 | NDIM * NDIM, |
| 1010 | /*manage_data*/ true); |
| 1011 | Pointer<LData> tau_data = d_l_data_manager->createLData("tau", level_number, NDIM * NDIM, /*manage_data*/ true); |
| 1012 | if (d_silo_writer) |
| 1013 | { |
| 1014 | d_silo_writer->registerVariableData("F0", F_data, 0 * NDIM, NDIM, level_number); |
| 1015 | d_silo_writer->registerVariableData("F1", F_data, 1 * NDIM, NDIM, level_number); |
| 1016 | #if (NDIM == 3) |
| 1017 | d_silo_writer->registerVariableData("F2", F_data, 2 * NDIM, NDIM, level_number); |
| 1018 | #endif |
| 1019 | d_silo_writer->registerVariableData("tau0", tau_data, 0 * NDIM, NDIM, level_number); |
| 1020 | d_silo_writer->registerVariableData("tau1", tau_data, 1 * NDIM, NDIM, level_number); |
| 1021 | #if (NDIM == 3) |
| 1022 | d_silo_writer->registerVariableData("tau2", tau_data, 2 * NDIM, NDIM, level_number); |
| 1023 | #endif |
| 1024 | } |
| 1025 | |
| 1026 | // Initialize the deformation gradient and Kirchhoff stress. |
| 1027 | const Pointer<LMesh> mesh = d_l_data_manager->getLMesh(level_number); |
| 1028 | const std::vector<LNode*>& local_nodes = mesh->getLocalNodes(); |
| 1029 | boost::multi_array_ref<double, 2>& F_array = *F_data->getLocalFormVecArray(); |
| 1030 | boost::multi_array_ref<double, 2>& tau_array = *tau_data->getLocalFormVecArray(); |
| 1031 | for (const auto& node_idx : local_nodes) |
| 1032 | { |
| 1033 | const int idx = node_idx->getLocalPETScIndex(); |
| 1034 | for (int i = 0; i < NDIM; ++i) |
| 1035 | { |
| 1036 | for (int j = 0; j < NDIM; ++j) |
| 1037 | { |
| 1038 | F_array[idx][NDIM * i + j] = (i == j ? 1.0 : 0.0); |
| 1039 | tau_array[idx][NDIM * i + j] = 0.0; |
| 1040 | } |
| 1041 | } |
| 1042 | } |
| 1043 | } |
| 1044 | return; |
| 1045 | } // initializeLevelData |
| 1046 | |
| 1047 | void |
nothing calls this directly
no test coverage detected