348 RBEvaluationReaderNumber & rb_evaluation_reader,
349 bool read_error_bound_data)
352 unsigned int n_bfs = rb_evaluation_reader.getNBfs();
357 auto parameter_ranges =
358 rb_evaluation_reader.getParameterRanges();
359 auto discrete_parameters_list =
360 rb_evaluation_reader.getDiscreteParameters();
364 discrete_parameters_list);
371 if (read_error_bound_data)
376 unsigned int Q_f_hat = n_F_terms*(n_F_terms+1)/2;
378 auto fq_innerprods_list = rb_evaluation_reader.getFqInnerprods();
379 libmesh_error_msg_if(fq_innerprods_list.size() != Q_f_hat,
380 "Size error while reading Fq representor norm data from buffer.");
382 for (
unsigned int i=0; i < Q_f_hat; ++i)
388 auto fq_aq_innerprods_list = rb_evaluation_reader.getFqAqInnerprods();
389 libmesh_error_msg_if(fq_aq_innerprods_list.size() != n_F_terms*n_A_terms*n_bfs,
390 "Size error while reading Fq-Aq representor norm data from buffer.");
392 for (
unsigned int q_f=0; q_f<n_F_terms; ++q_f)
393 for (
unsigned int q_a=0; q_a<n_A_terms; ++q_a)
394 for (
unsigned int i=0; i<n_bfs; ++i)
396 unsigned int offset = q_f*n_A_terms*n_bfs + q_a*n_bfs + i;
398 load_scalar_value(fq_aq_innerprods_list[offset]);
404 unsigned int Q_a_hat = n_A_terms*(n_A_terms+1)/2;
405 auto aq_aq_innerprods_list = rb_evaluation_reader.getAqAqInnerprods();
406 libmesh_error_msg_if(aq_aq_innerprods_list.size() != Q_a_hat*n_bfs*n_bfs,
407 "Size error while reading Aq-Aq representor norm data from buffer.");
409 for (
unsigned int i=0; i<Q_a_hat; ++i)
410 for (
unsigned int j=0; j<n_bfs; ++j)
411 for (
unsigned int l=0; l<n_bfs; ++l)
413 unsigned int offset = i*n_bfs*n_bfs + j*n_bfs + l;
415 load_scalar_value(aq_aq_innerprods_list[offset]);
422 auto output_innerprod_outer = rb_evaluation_reader.getOutputDualInnerprods();
424 libmesh_error_msg_if(output_innerprod_outer.size() != n_outputs,
425 "Incorrect number of outputs detected in the buffer");
427 for (
unsigned int output_id=0; output_id<n_outputs; ++output_id)
431 unsigned int Q_l_hat = n_output_terms*(n_output_terms+1)/2;
432 auto output_innerprod_inner = output_innerprod_outer[output_id];
434 libmesh_error_msg_if(output_innerprod_inner.size() != Q_l_hat,
435 "Incorrect number of output terms detected in the buffer");
437 for (
unsigned int q=0; q<Q_l_hat; ++q)
440 load_scalar_value(output_innerprod_inner[q]);
449 auto output_vector_outer = rb_evaluation_reader.getOutputVectors();
451 libmesh_error_msg_if(output_vector_outer.size() != n_outputs,
452 "Incorrect number of outputs detected in the buffer");
454 for (
unsigned int output_id=0; output_id<n_outputs; ++output_id)
458 auto output_vector_middle = output_vector_outer[output_id];
459 libmesh_error_msg_if(output_vector_middle.size() != n_output_terms,
460 "Incorrect number of output terms detected in the buffer");
462 for (
unsigned int q_l=0; q_l<n_output_terms; ++q_l)
464 auto output_vectors_inner_list = output_vector_middle[q_l];
466 libmesh_error_msg_if(output_vectors_inner_list.size() != n_bfs,
467 "Incorrect number of output terms detected in the buffer");
469 for (
unsigned int j=0; j<n_bfs; ++j)
472 load_scalar_value(output_vectors_inner_list[j]);
480 auto rb_fq_vectors_outer_list = rb_evaluation_reader.getRbFqVectors();
481 libmesh_error_msg_if(rb_fq_vectors_outer_list.size() != n_F_terms,
482 "Incorrect number of Fq vectors detected in the buffer");
484 for (
unsigned int q_f=0; q_f<n_F_terms; ++q_f)
486 auto rb_fq_vectors_inner_list = rb_fq_vectors_outer_list[q_f];
487 libmesh_error_msg_if(rb_fq_vectors_inner_list.size() != n_bfs,
488 "Incorrect Fq vector size detected in the buffer");
490 for (
unsigned int i=0; i < n_bfs; ++i)
493 load_scalar_value(rb_fq_vectors_inner_list[i]);
497 auto rb_Aq_matrices_outer_list = rb_evaluation_reader.getRbAqMatrices();
498 libmesh_error_msg_if(rb_Aq_matrices_outer_list.size() != n_A_terms,
499 "Incorrect number of Aq matrices detected in the buffer");
501 for (
unsigned int q_a=0; q_a<n_A_terms; ++q_a)
503 auto rb_Aq_matrices_inner_list = rb_Aq_matrices_outer_list[q_a];
504 libmesh_error_msg_if(rb_Aq_matrices_inner_list.size() != n_bfs*n_bfs,
505 "Incorrect Aq matrix size detected in the buffer");
507 for (
unsigned int i=0; i<n_bfs; ++i)
508 for (
unsigned int j=0; j<n_bfs; ++j)
510 unsigned int offset = i*n_bfs+j;
512 load_scalar_value(rb_Aq_matrices_inner_list[offset]);
520 auto rb_inner_product_matrix_list =
521 rb_evaluation_reader.getRbInnerProductMatrix();
523 libmesh_error_msg_if(rb_inner_product_matrix_list.size() != n_bfs*n_bfs,
524 "Size error while reading the inner product matrix.");
526 for (
unsigned int i=0; i<n_bfs; ++i)
527 for (
unsigned int j=0; j<n_bfs; ++j)
529 unsigned int offset = i*n_bfs + j;
531 load_scalar_value(rb_inner_product_matrix_list[offset]);
538 RBEvaluationReaderNumber & rb_eval_reader,
539 TransRBEvaluationReaderNumber & trans_rb_eval_reader,
540 bool read_error_bound_data)
544 read_error_bound_data);
546 trans_rb_eval.
set_delta_t( trans_rb_eval_reader.getDeltaT() );
549 trans_rb_eval.
set_time_step( trans_rb_eval_reader.getTimeStep() );
551 unsigned int n_bfs = rb_eval_reader.getNBfs();
557 unsigned int n_M_terms = trans_theta_expansion.
get_n_M_terms();
561 auto rb_L2_matrix_list =
562 trans_rb_eval_reader.getRbL2Matrix();
564 libmesh_error_msg_if(rb_L2_matrix_list.size() != n_bfs*n_bfs,
565 "Size error while reading the L2 matrix.");
567 for (
unsigned int i=0; i<n_bfs; ++i)
568 for (
unsigned int j=0; j<n_bfs; ++j)
570 unsigned int offset = i*n_bfs + j;
572 load_scalar_value(rb_L2_matrix_list[offset]);
578 auto rb_Mq_matrices_outer_list = trans_rb_eval_reader.getRbMqMatrices();
580 libmesh_error_msg_if(rb_Mq_matrices_outer_list.size() != n_M_terms,
581 "Incorrect number of Mq matrices detected in the buffer");
583 for (
unsigned int q_m=0; q_m < n_M_terms; ++q_m)
585 auto rb_Mq_matrices_inner_list = rb_Mq_matrices_outer_list[q_m];
586 libmesh_error_msg_if(rb_Mq_matrices_inner_list.size() != n_bfs*n_bfs,
587 "Incorrect Mq matrix size detected in the buffer");
589 for (
unsigned int i=0; i<n_bfs; ++i)
590 for (
unsigned int j=0; j<n_bfs; ++j)
592 unsigned int offset = i*n_bfs+j;
594 load_scalar_value(rb_Mq_matrices_inner_list[offset]);
601 auto initial_l2_errors_reader =
602 trans_rb_eval_reader.getInitialL2Errors();
603 libmesh_error_msg_if(initial_l2_errors_reader.size() != n_bfs,
604 "Incorrect number of initial L2 error terms detected in the buffer");
606 auto initial_conditions_outer_list =
607 trans_rb_eval_reader.getInitialConditions();
608 libmesh_error_msg_if(initial_conditions_outer_list.size() != n_bfs,
609 "Incorrect number of outer initial conditions detected in the buffer");
611 for (
unsigned int i=0; i<n_bfs; i++)
614 initial_l2_errors_reader[i];
616 auto initial_conditions_inner_list = initial_conditions_outer_list[i];
617 libmesh_error_msg_if(initial_conditions_inner_list.size() != (i+1),
618 "Incorrect number of inner initial conditions detected in the buffer");
620 for (
unsigned int j=0; j<=i; j++)
623 load_scalar_value(initial_conditions_inner_list[j]);
629 if (read_error_bound_data)
633 auto fq_mq_innerprods_list = trans_rb_eval_reader.getFqMqInnerprods();
634 libmesh_error_msg_if(fq_mq_innerprods_list.size() != n_F_terms*n_M_terms*n_bfs,
635 "Size error while reading Fq-Mq representor data from buffer.");
637 for (
unsigned int q_f=0; q_f<n_F_terms; ++q_f)
638 for (
unsigned int q_m=0; q_m<n_M_terms; ++q_m)
639 for (
unsigned int i=0; i<n_bfs; ++i)
641 unsigned int offset = q_f*n_M_terms*n_bfs + q_m*n_bfs + i;
643 load_scalar_value(fq_mq_innerprods_list[offset]);
650 unsigned int Q_m_hat = n_M_terms*(n_M_terms+1)/2;
651 auto mq_mq_innerprods_list = trans_rb_eval_reader.getMqMqInnerprods();
652 libmesh_error_msg_if(mq_mq_innerprods_list.size() != Q_m_hat*n_bfs*n_bfs,
653 "Size error while reading Mq-Mq representor data from buffer.");
655 for (
unsigned int i=0; i<Q_m_hat; ++i)
656 for (
unsigned int j=0; j<n_bfs; ++j)
657 for (
unsigned int l=0; l<n_bfs; ++l)
659 unsigned int offset = i*n_bfs*n_bfs + j*n_bfs + l;
661 load_scalar_value(mq_mq_innerprods_list[offset]);
667 auto aq_mq_innerprods_list =
668 trans_rb_eval_reader.getAqMqInnerprods();
669 libmesh_error_msg_if(aq_mq_innerprods_list.size() != n_A_terms*n_M_terms*n_bfs*n_bfs,
670 "Size error while reading Aq-Mq representor data from buffer.");
672 for (
unsigned int q_a=0; q_a<n_A_terms; q_a++)
673 for (
unsigned int q_m=0; q_m<n_M_terms; q_m++)
674 for (
unsigned int i=0; i<n_bfs; i++)
675 for (
unsigned int j=0; j<n_bfs; j++)
677 unsigned int offset =
678 q_a*(n_M_terms*n_bfs*n_bfs) + q_m*(n_bfs*n_bfs) + i*n_bfs + j;
681 load_scalar_value(aq_mq_innerprods_list[offset]);
690 RBEIMEvaluationReaderNumber & rb_eim_evaluation_reader)
693 unsigned int n_bfs = rb_eim_evaluation_reader.getNBfs();
700 auto interpolation_matrix_list = rb_eim_evaluation_reader.getInterpolationMatrix();
702 libmesh_error_msg_if(interpolation_matrix_list.size() != n_bfs*(n_bfs+1)/2,
703 "Size error while reading the eim inner product matrix.");
705 for (
unsigned int i=0; i<n_bfs; ++i)
706 for (
unsigned int j=0; j<=i; ++j)
708 unsigned int offset = i*(i+1)/2 + j;
710 i,j, load_scalar_value(interpolation_matrix_list[offset]));
719 if (rb_eim_evaluation_reader.getInterpolationXyz().size() > n_bfs)
721 auto error_indicator_data_list = rb_eim_evaluation_reader.getEimErrorIndicatorInterpData();
723 libmesh_error_msg_if(error_indicator_data_list.size() != n_bfs,
724 "Size error while reading the eim error indicator data.");
727 for (
unsigned int i=0; i<n_bfs; ++i)
728 eim_error_indicator_data(i) = load_scalar_value(error_indicator_data_list[i]);
740 if (rb_eim_evaluation_reader.getInterpolationXyz().size() > n_bfs)
743 auto parameter_ranges =
744 rb_eim_evaluation_reader.getParameterRanges();
745 auto discrete_parameters_list =
746 rb_eim_evaluation_reader.getDiscreteParameters();
750 discrete_parameters_list);
754 auto interpolation_points_list =
755 rb_eim_evaluation_reader.getInterpolationXyz();
757 libmesh_error_msg_if(interpolation_points_list.size() != n_bfs,
758 "Size error while reading the eim interpolation points.");
760 for (
unsigned int i=0; i<n_bfs; ++i)
770 auto interpolation_points_comp_list =
771 rb_eim_evaluation_reader.getInterpolationComp();
773 libmesh_error_msg_if(interpolation_points_comp_list.size() != n_bfs,
774 "Size error while reading the eim interpolation components.");
776 for (
unsigned int i=0; i<n_bfs; ++i)
784 auto interpolation_points_subdomain_id_list =
785 rb_eim_evaluation_reader.getInterpolationSubdomainId();
787 libmesh_error_msg_if(interpolation_points_subdomain_id_list.size() != n_bfs,
788 "Size error while reading the eim interpolation subdomain IDs.");
790 for (
unsigned int i=0; i<n_bfs; ++i)
801 auto interpolation_points_boundary_id_list =
802 rb_eim_evaluation_reader.getInterpolationBoundaryId();
804 libmesh_error_msg_if(interpolation_points_boundary_id_list.size() != n_bfs,
805 "Size error while reading the eim interpolation boundary IDs.");
807 for (
unsigned int i=0; i<n_bfs; ++i)
815 auto interpolation_points_elem_id_list =
816 rb_eim_evaluation_reader.getInterpolationElemId();
818 libmesh_error_msg_if(interpolation_points_elem_id_list.size() != n_bfs,
819 "Size error while reading the eim interpolation element IDs.");
821 for (
unsigned int i=0; i<n_bfs; ++i)
830 auto interpolation_points_node_id_list =
831 rb_eim_evaluation_reader.getInterpolationNodeId();
833 libmesh_error_msg_if(interpolation_points_node_id_list.size() != n_bfs,
834 "Size error while reading the eim interpolation node IDs.");
836 for (
unsigned int i=0; i<n_bfs; ++i)
845 auto interpolation_points_side_index_list =
846 rb_eim_evaluation_reader.getInterpolationSideIndex();
848 libmesh_error_msg_if(interpolation_points_side_index_list.size() != n_bfs,
849 "Size error while reading the eim interpolation side indices.");
851 for (
unsigned int i=0; i<n_bfs; ++i)
859 auto interpolation_points_qp_list =
860 rb_eim_evaluation_reader.getInterpolationQp();
862 libmesh_error_msg_if(interpolation_points_qp_list.size() != n_bfs,
863 "Size error while reading the eim interpolation qps.");
865 for (
unsigned int i=0; i<n_bfs; ++i)
871 unsigned int n_elems = rb_eim_evaluation_reader.getNElems();
872 bool build_elem_id_to_local_index_map =
false;
875 auto interpolation_points_list_outer =
876 rb_eim_evaluation_reader.getInterpolationJxWAllQp();
878 if (interpolation_points_list_outer.size() > 0)
882 libmesh_error_msg_if(interpolation_points_list_outer.size() != n_elems,
883 "Size error while reading the eim JxW values.");
885 for (
unsigned int i=0; i<n_elems; ++i)
887 auto interpolation_points_list_inner = interpolation_points_list_outer[i];
889 std::vector<Real> JxW(interpolation_points_list_inner.size());
890 for (
unsigned int j=0; j<JxW.size(); j++)
892 JxW[j] = interpolation_points_list_inner[j];
908 build_elem_id_to_local_index_map =
true;
910 auto interpolation_points_elem_id_list =
911 rb_eim_evaluation_reader.getInterpolationElemId();
912 std::set<dof_id_type> added_elem_id;
914 libmesh_error_msg_if(interpolation_points_list_outer.size() != n_bfs,
915 "Size error while reading the eim JxW values.");
917 for (
unsigned int i=0; i<n_bfs; ++i)
919 dof_id_type elem_id = interpolation_points_elem_id_list[i];
920 if (
const auto lookup = added_elem_id.find(elem_id); lookup == added_elem_id.end())
922 added_elem_id.emplace(elem_id);
924 auto interpolation_points_list_inner = interpolation_points_list_outer[i];
925 std::vector<Real> JxW(interpolation_points_list_inner.size());
926 for (
unsigned int j=0; j<JxW.size(); j++)
928 JxW[j] = interpolation_points_list_inner[j];
939 auto interpolation_points_list_outer =
940 rb_eim_evaluation_reader.getInterpolationPhiValuesAllQp();
942 if (interpolation_points_list_outer.size() > 0)
946 libmesh_error_msg_if(interpolation_points_list_outer.size() != n_elems,
947 "Size error while reading the eim phi_i all qp values.");
949 for (
unsigned int i=0; i<n_elems; ++i)
951 auto interpolation_points_list_middle = interpolation_points_list_outer[i];
953 std::vector<std::vector<Real>> phi_i_all_qp(interpolation_points_list_middle.size());
956 auto interpolation_points_list_inner = interpolation_points_list_middle[j];
958 phi_i_all_qp[j].resize(interpolation_points_list_inner.size());
960 phi_i_all_qp[j][k] = interpolation_points_list_inner[k];
970 auto interpolation_points_elem_id_list =
971 rb_eim_evaluation_reader.getInterpolationElemId();
972 std::set<dof_id_type> added_elem_id;
974 libmesh_error_msg_if(interpolation_points_list_outer.size() != n_bfs,
975 "Size error while reading the eim JxW values.");
977 for (
unsigned int i=0; i<n_bfs; ++i)
979 dof_id_type elem_id = interpolation_points_elem_id_list[i];
980 if (
const auto lookup = added_elem_id.find(elem_id); lookup == added_elem_id.end())
982 added_elem_id.emplace(elem_id);
984 auto interpolation_points_list_middle = interpolation_points_list_outer[i];
985 std::vector<std::vector<Real>> phi_i_all_qp(interpolation_points_list_middle.size());
988 auto interpolation_points_list_inner = interpolation_points_list_middle[j];
990 phi_i_all_qp[j].resize(interpolation_points_list_inner.size());
992 phi_i_all_qp[j][k] = interpolation_points_list_inner[k];
1003 auto elem_id_to_local_index_list =
1004 rb_eim_evaluation_reader.getElemIdToLocalIndex();
1006 if (elem_id_to_local_index_list.size() > 0)
1008 libmesh_error_msg_if(elem_id_to_local_index_list.size() != n_elems,
1009 "Size error while reading the eim elem id to local index map.");
1011 for (
unsigned int i=0; i<n_elems; ++i)
1018 else if (build_elem_id_to_local_index_map)
1020 auto interpolation_points_elem_id_list =
1021 rb_eim_evaluation_reader.getInterpolationElemId();
1022 std::set<dof_id_type> added_elem_id;
1023 unsigned int local_index = 0;
1025 libmesh_error_msg_if(interpolation_points_elem_id_list.size() != n_bfs,
1026 "Size error while creating the eim elem id to local index map.");
1028 for (
unsigned int i=0; i<n_bfs; ++i)
1030 dof_id_type elem_id = interpolation_points_elem_id_list[i];
1031 if (
const auto lookup = added_elem_id.find(elem_id); lookup == added_elem_id.end())
1033 added_elem_id.emplace(elem_id);
1043 auto elem_center_dxyzdxi =
1044 rb_eim_evaluation_reader.getInterpolationDxyzDxiElem();
1046 if (elem_center_dxyzdxi.size() > 0)
1050 libmesh_error_msg_if(elem_center_dxyzdxi.size() != n_elems,
1051 "Size error while reading the eim elem center tangent derivative dxyzdxi.");
1053 Point dxyzdxi_buffer;
1056 load_point(elem_center_dxyzdxi[i], dxyzdxi_buffer);
1065 auto interpolation_points_elem_id_list =
1066 rb_eim_evaluation_reader.getInterpolationElemId();
1067 std::set<dof_id_type> added_elem_id;
1069 libmesh_error_msg_if(elem_center_dxyzdxi.size() != n_bfs,
1070 "Size error while reading the eim elem center tangent derivative dxyzdxi.");
1072 Point dxyzdxi_buffer;
1073 for (
unsigned int i=0; i<n_bfs; ++i)
1075 dof_id_type elem_id = interpolation_points_elem_id_list[i];
1076 if (
const auto lookup = added_elem_id.find(elem_id); lookup == added_elem_id.end())
1078 added_elem_id.emplace(elem_id);
1080 load_point(elem_center_dxyzdxi[i], dxyzdxi_buffer);
1090 auto elem_center_dxyzdeta =
1091 rb_eim_evaluation_reader.getInterpolationDxyzDetaElem();
1093 if (elem_center_dxyzdeta.size() > 0)
1097 libmesh_error_msg_if(elem_center_dxyzdeta.size() != n_elems,
1098 "Size error while reading the eim elem center tangent derivative dxyzdeta.");
1100 Point dxyzdeta_buffer;
1103 load_point(elem_center_dxyzdeta[i], dxyzdeta_buffer);
1112 auto interpolation_points_elem_id_list =
1113 rb_eim_evaluation_reader.getInterpolationElemId();
1114 std::set<dof_id_type> added_elem_id;
1116 libmesh_error_msg_if(elem_center_dxyzdeta.size() != n_bfs,
1117 "Size error while reading the eim elem center tangent derivative dxyzdeta.");
1119 Point dxyzdeta_buffer;
1120 for (
unsigned int i=0; i<n_bfs; ++i)
1122 dof_id_type elem_id = interpolation_points_elem_id_list[i];
1123 if (
const auto lookup = added_elem_id.find(elem_id); lookup == added_elem_id.end())
1125 added_elem_id.emplace(elem_id);
1127 load_point(elem_center_dxyzdeta[i], dxyzdeta_buffer);
1137 auto interpolation_points_qrule_order_list =
1138 rb_eim_evaluation_reader.getInterpolationQruleOrder();
1140 if (interpolation_points_qrule_order_list.size() > 0)
1144 libmesh_error_msg_if(interpolation_points_qrule_order_list.size() != n_elems,
1145 "Size error while reading the eim elem qrule order.");
1147 for (
unsigned int i=0; i<n_elems; ++i)
1157 auto interpolation_points_elem_id_list =
1158 rb_eim_evaluation_reader.getInterpolationElemId();
1159 std::set<dof_id_type> added_elem_id;
1161 libmesh_error_msg_if(interpolation_points_qrule_order_list.size() != n_bfs,
1162 "Size error while reading the eim elem qrule order.");
1164 for (
unsigned int i=0; i<n_bfs; ++i)
1166 dof_id_type elem_id = interpolation_points_elem_id_list[i];
1167 if (
const auto lookup = added_elem_id.find(elem_id); lookup == added_elem_id.end())
1169 added_elem_id.emplace(elem_id);
1180 auto interpolation_points_elem_type_list =
1181 rb_eim_evaluation_reader.getInterpolationElemType();
1183 if (interpolation_points_elem_type_list.size() > 0)
1185 libmesh_error_msg_if(interpolation_points_elem_type_list.size() != n_bfs,
1186 "Size error while reading the eim interpolation element types.");
1188 for (
unsigned int i=0; i<n_bfs; ++i)
1197 auto interpolation_points_property_list =
1198 rb_eim_evaluation_reader.getPropertyMap();
1200 if (interpolation_points_property_list.size() > 0)
1202 unsigned int n_properties = interpolation_points_property_list.size();
1203 for (
unsigned int i=0; i<n_properties; ++i)
1205 std::string property_name = interpolation_points_property_list[i].getName();
1206 const auto entity_ids_list = interpolation_points_property_list[i].getEntityIds();
1207 std::set<dof_id_type> entity_ids_set;
1208 for (
unsigned int j=0; j<entity_ids_list.size(); ++j)
1210 entity_ids_set.insert(
static_cast<dof_id_type>(entity_ids_list[j]));
1219 auto interpolation_points_list_outer =
1220 rb_eim_evaluation_reader.getInterpolationXyzPerturb();
1222 libmesh_error_msg_if(interpolation_points_list_outer.size() != n_bfs,
1223 "Size error while reading the eim interpolation points.");
1225 for (
unsigned int i=0; i<n_bfs; ++i)
1227 auto interpolation_points_list_inner = interpolation_points_list_outer[i];
1229 std::vector<Point> perturbs(interpolation_points_list_inner.size());
1230 for (
unsigned int j=0; j<perturbs.size(); j++)
1232 load_point(interpolation_points_list_inner[j], perturbs[j]);
1241 auto eim_rhs_list_outer =
1242 rb_eim_evaluation_reader.getEimSolutionsForTrainingSet();
1245 eim_solutions.clear();
1246 eim_solutions.resize(eim_rhs_list_outer.size());
1248 for (
auto i :
make_range(eim_rhs_list_outer.size()))
1250 auto eim_rhs_list_inner = eim_rhs_list_outer[i];
1255 values(j) = load_scalar_value(eim_rhs_list_inner[j]);
1257 eim_solutions[i] = values;
1264 auto interpolation_points_list_outer =
1265 rb_eim_evaluation_reader.getInterpolationPhiValues();
1267 libmesh_error_msg_if(interpolation_points_list_outer.size() != n_bfs,
1268 "Size error while reading the eim interpolation points.");
1270 for (
unsigned int i=0; i<n_bfs; ++i)
1272 auto interpolation_points_list_inner = interpolation_points_list_outer[i];
1274 std::vector<Real> phi_i_qp(interpolation_points_list_inner.size());
1275 for (
unsigned int j=0; j<phi_i_qp.size(); j++)
1277 phi_i_qp[j] = interpolation_points_list_inner[j];
1286 auto interpolation_points_list_outer =
1287 rb_eim_evaluation_reader.getInterpolationSpatialIndices();
1289 for (
unsigned int i=0; i<interpolation_points_list_outer.size(); ++i)
1291 auto interpolation_points_list_inner = interpolation_points_list_outer[i];
1293 std::vector<unsigned int> spatial_indices(interpolation_points_list_inner.size());
1294 for (
unsigned int j=0; j<spatial_indices.size(); j++)
1296 spatial_indices[j] = interpolation_points_list_inner[j];