34#include <Domain/MetaMat/MetaMat>
73 unsigned n_sfbw = n_lobw + n_upbw;
75 unsigned n_multiplier = 0;
82 bool nonviscous =
false;
94 SpMat<T> reference_load;
96 uvec auxiliary_encoding;
97 Col<T> auxiliary_lambda;
98 Col<T> auxiliary_resistance;
99 Col<T> auxiliary_load;
100 SpMat<T> auxiliary_stiffness;
102 SpCol<T> trial_constraint_resistance;
103 SpCol<T> current_constraint_resistance;
113 T nonviscous_energy{0};
114 T complementary_energy{0};
117 Col<T> trial_load_factor;
119 Col<T> trial_settlement;
120 Col<T> trial_resistance;
121 Col<T> trial_damping_force;
122 Col<T> trial_nonviscous_force;
123 Col<T> trial_inertial_force;
124 Col<T> trial_displacement;
125 Col<T> trial_velocity;
126 Col<T> trial_acceleration;
127 Col<T> trial_temperature;
129 Col<T> incre_load_factor;
131 Col<T> incre_settlement;
132 Col<T> incre_resistance;
133 Col<T> incre_damping_force;
134 Col<T> incre_nonviscous_force;
135 Col<T> incre_inertial_force;
136 Col<T> incre_displacement;
137 Col<T> incre_velocity;
138 Col<T> incre_acceleration;
139 Col<T> incre_temperature;
141 Col<T> current_load_factor;
143 Col<T> current_settlement;
144 Col<T> current_resistance;
145 Col<T> current_damping_force;
146 Col<T> current_nonviscous_force;
147 Col<T> current_inertial_force;
148 Col<T> current_displacement;
149 Col<T> current_velocity;
150 Col<T> current_acceleration;
151 Col<T> current_temperature;
153 Col<T> pre_load_factor;
155 Col<T> pre_settlement;
156 Col<T> pre_resistance;
157 Col<T> pre_damping_force;
158 Col<T> pre_nonviscous_force;
159 Col<T> pre_inertial_force;
160 Col<T> pre_displacement;
162 Col<T> pre_acceleration;
163 Col<T> pre_temperature;
165 shared_ptr<MetaMat<T>> global_mass =
nullptr;
166 shared_ptr<MetaMat<T>> global_damping =
nullptr;
167 shared_ptr<MetaMat<T>> global_nonviscous =
nullptr;
168 shared_ptr<MetaMat<T>> global_stiffness =
nullptr;
169 shared_ptr<MetaMat<T>> global_geometry =
nullptr;
171 std::vector<std::mutex> global_mutex{20};
177 unique_ptr<MetaMat<T>> get_basic_container();
178 unique_ptr<MetaMat<T>> get_matrix_container();
180 void assemble_matrix_helper(shared_ptr<
MetaMat<T>>&,
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
188 [[nodiscard]]
unsigned get_size()
const;
217 [[nodiscard]] std::pair<unsigned, unsigned>
get_bandwidth()
const;
403 const shared_ptr<MetaMat<T>>&
get_mass()
const;
668 void assemble_mass(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
669 void assemble_damping(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
672 void assemble_geometry(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
684 , storage_type(
SS) {}
687 if(D == n_size)
return;
689 access::rw(initialized) =
false;
696 if(n_elem > std::numeric_limits<la_it>::max())
throw std::invalid_argument(
"too many elements");
702 if(B == nlgeom)
return;
704 access::rw(initialized) =
false;
710 if(B == nonviscous)
return;
712 access::rw(initialized) =
false;
730 if(AT == analysis_type)
return;
732 access::rw(initialized) =
false;
738 if(
SS == storage_type)
return;
740 access::rw(initialized) =
false;
748 if(L == n_lobw &&
U == n_upbw)
return;
752 access::rw(initialized) =
false;
774 reference_dof.clear();
776 if(initialized || n_size == 0)
return 0;
783 switch(analysis_type) {
785 initialize_displacement();
789 initialize_stiffness();
795 initialize_resistance();
796 initialize_displacement();
797 initialize_stiffness();
798 initialize_geometry();
802 initialize_resistance();
803 initialize_damping_force();
804 initialize_nonviscous_force();
805 initialize_inertial_force();
806 initialize_displacement();
807 initialize_velocity();
808 initialize_acceleration();
810 initialize_damping();
811 initialize_nonviscous();
812 initialize_stiffness();
813 initialize_geometry();
819 initialize_auxiliary_resistance();
821 access::rw(initialized) =
true;
827 if(n_rfld == 0)
return;
829 trial_load_factor.zeros(n_rfld);
830 incre_load_factor.zeros(n_rfld);
831 current_load_factor.zeros(n_rfld);
833 reference_load.zeros(n_size, n_rfld);
837 trial_load.zeros(n_size);
838 incre_load.zeros(n_size);
839 current_load.zeros(n_size);
843 trial_settlement.zeros(n_size);
844 incre_settlement.zeros(n_size);
845 current_settlement.zeros(n_size);
849 trial_resistance.zeros(n_size);
850 incre_resistance.zeros(n_size);
851 current_resistance.zeros(n_size);
855 trial_damping_force.zeros(n_size);
856 incre_damping_force.zeros(n_size);
857 current_damping_force.zeros(n_size);
861 trial_nonviscous_force.zeros(n_size);
862 incre_nonviscous_force.zeros(n_size);
863 current_nonviscous_force.zeros(n_size);
867 trial_inertial_force.zeros(n_size);
868 incre_inertial_force.zeros(n_size);
869 current_inertial_force.zeros(n_size);
873 trial_displacement.zeros(n_size);
874 incre_displacement.zeros(n_size);
875 current_displacement.zeros(n_size);
879 trial_velocity.zeros(n_size);
880 incre_velocity.zeros(n_size);
881 current_velocity.zeros(n_size);
885 trial_acceleration.zeros(n_size);
886 incre_acceleration.zeros(n_size);
887 current_acceleration.zeros(n_size);
891 trial_temperature.zeros(n_size);
892 incre_temperature.zeros(n_size);
893 current_temperature.zeros(n_size);
897 trial_constraint_resistance.zeros(n_size);
898 current_constraint_resistance.zeros(n_size);
906 if(!nonviscous)
return;
908 global_nonviscous = get_matrix_container();
916 global_geometry = get_matrix_container();
920 eigenvalue.zeros(n_size);
921 eigenvector.zeros(n_size, n_size);
932 auxiliary_encoding.zeros(n_multiplier);
933 auxiliary_resistance.zeros(n_multiplier);
934 auxiliary_load.zeros(n_multiplier);
935 auxiliary_stiffness.zeros(n_size, n_multiplier);
1029 auto se = std::async([&] {
if(!trial_resistance.empty() && !incre_displacement.empty()) strain_energy += .5 * dot(trial_resistance + current_resistance, incre_displacement); });
1030 auto ke = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) kinetic_energy = .5 * dot(global_mass * trial_velocity, trial_velocity); });
1031 auto ve = std::async([&] {
if(!trial_damping_force.empty() && !incre_displacement.empty()) viscous_energy += .5 * dot(trial_damping_force + current_damping_force, incre_displacement); });
1032 auto ne = std::async([&] {
if(!trial_nonviscous_force.empty() && !incre_displacement.empty()) nonviscous_energy += .5 * dot(trial_nonviscous_force + current_nonviscous_force, incre_displacement); });
1033 auto ce = std::async([&] {
if(!trial_displacement.empty() && !incre_resistance.empty()) complementary_energy += .5 * dot(trial_displacement + current_displacement, incre_resistance); });
1034 auto mm = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) momentum = global_mass * trial_velocity; });
1045 strain_energy =
T(0);
1046 kinetic_energy =
T(0);
1047 viscous_energy =
T(0);
1048 nonviscous_energy =
T(0);
1049 complementary_energy =
T(0);
1059 commit_load_factor();
1061 commit_settlement();
1062 commit_resistance();
1063 commit_damping_force();
1064 commit_nonviscous_force();
1065 commit_inertial_force();
1066 commit_displacement();
1068 commit_acceleration();
1069 commit_temperature();
1070 commit_auxiliary_resistance();
1074 current_time = trial_time;
1079 if(trial_load_factor.is_empty())
return;
1080 current_load_factor = trial_load_factor;
1081 incre_load_factor.zeros();
1085 if(trial_load.is_empty())
return;
1086 current_load = trial_load;
1091 if(trial_settlement.is_empty())
return;
1092 current_settlement = trial_settlement;
1093 incre_settlement.zeros();
1097 if(trial_resistance.is_empty())
return;
1098 current_resistance = trial_resistance;
1099 incre_resistance.zeros();
1103 if(trial_damping_force.is_empty())
return;
1104 current_damping_force = trial_damping_force;
1105 incre_damping_force.zeros();
1109 if(trial_nonviscous_force.is_empty())
return;
1110 current_nonviscous_force = trial_nonviscous_force;
1111 incre_nonviscous_force.zeros();
1115 if(trial_inertial_force.is_empty())
return;
1116 current_inertial_force = trial_inertial_force;
1117 incre_inertial_force.zeros();
1121 if(trial_displacement.is_empty())
return;
1122 current_displacement = trial_displacement;
1123 incre_displacement.zeros();
1127 if(trial_velocity.is_empty())
return;
1128 current_velocity = trial_velocity;
1129 incre_velocity.zeros();
1133 if(trial_acceleration.is_empty())
return;
1134 current_acceleration = trial_acceleration;
1135 incre_acceleration.zeros();
1139 if(trial_temperature.is_empty())
return;
1140 current_temperature = trial_temperature;
1141 incre_temperature.zeros();
1145 if(trial_constraint_resistance.is_empty())
return;
1146 current_constraint_resistance = trial_constraint_resistance;
1151 commit_pre_load_factor();
1153 commit_pre_settlement();
1154 commit_pre_resistance();
1155 commit_pre_damping_force();
1156 commit_pre_nonviscous_force();
1157 commit_pre_inertial_force();
1158 commit_pre_displacement();
1159 commit_pre_velocity();
1160 commit_pre_acceleration();
1161 commit_pre_temperature();
1167 if(!current_load_factor.is_empty()) pre_load_factor = current_load_factor;
1171 if(!current_load.is_empty()) pre_load = current_load;
1175 if(!current_settlement.is_empty()) pre_settlement = current_settlement;
1179 if(!current_resistance.is_empty()) pre_resistance = current_resistance;
1183 if(!current_damping_force.is_empty()) pre_damping_force = current_damping_force;
1187 if(!current_nonviscous_force.is_empty()) pre_nonviscous_force = current_nonviscous_force;
1191 if(!current_inertial_force.is_empty()) pre_inertial_force = current_inertial_force;
1195 if(!current_displacement.is_empty()) pre_displacement = current_displacement;
1199 if(!current_velocity.is_empty()) pre_velocity = current_velocity;
1203 if(!current_acceleration.is_empty()) pre_acceleration = current_acceleration;
1207 if(!current_temperature.is_empty()) pre_temperature = current_temperature;
1211 access::rw(initialized) =
false;
1218 clear_load_factor();
1222 clear_damping_force();
1223 clear_nonviscous_force();
1224 clear_inertial_force();
1225 clear_displacement();
1227 clear_acceleration();
1228 clear_temperature();
1229 clear_auxiliary_resistance();
1235 if(!pre_load_factor.is_empty()) pre_load_factor.zeros();
1236 if(!trial_load_factor.is_empty()) trial_load_factor.zeros();
1237 if(!incre_load_factor.is_empty()) incre_load_factor.zeros();
1238 if(!current_load_factor.is_empty()) current_load_factor.zeros();
1242 if(!pre_load.is_empty()) pre_load.zeros();
1243 if(!trial_load.is_empty()) trial_load.zeros();
1244 if(!incre_load.is_empty()) incre_load.zeros();
1245 if(!current_load.is_empty()) current_load.zeros();
1249 if(!pre_settlement.is_empty()) pre_settlement.zeros();
1250 if(!trial_settlement.is_empty()) trial_settlement.zeros();
1251 if(!incre_settlement.is_empty()) incre_settlement.zeros();
1252 if(!current_settlement.is_empty()) current_settlement.zeros();
1256 if(!pre_resistance.is_empty()) pre_resistance.zeros();
1257 if(!trial_resistance.is_empty()) trial_resistance.zeros();
1258 if(!incre_resistance.is_empty()) incre_resistance.zeros();
1259 if(!current_resistance.is_empty()) current_resistance.zeros();
1263 if(!pre_damping_force.is_empty()) pre_damping_force.zeros();
1264 if(!trial_damping_force.is_empty()) trial_damping_force.zeros();
1265 if(!incre_damping_force.is_empty()) incre_damping_force.zeros();
1266 if(!current_damping_force.is_empty()) current_damping_force.zeros();
1270 if(!pre_nonviscous_force.is_empty()) pre_nonviscous_force.zeros();
1271 if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force.zeros();
1272 if(!incre_nonviscous_force.is_empty()) incre_nonviscous_force.zeros();
1273 if(!current_nonviscous_force.is_empty()) current_nonviscous_force.zeros();
1277 if(!pre_inertial_force.is_empty()) pre_inertial_force.zeros();
1278 if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros();
1279 if(!incre_inertial_force.is_empty()) incre_inertial_force.zeros();
1280 if(!current_inertial_force.is_empty()) current_inertial_force.zeros();
1284 if(!pre_displacement.is_empty()) pre_displacement.zeros();
1285 if(!trial_displacement.is_empty()) trial_displacement.zeros();
1286 if(!incre_displacement.is_empty()) incre_displacement.zeros();
1287 if(!current_displacement.is_empty()) current_displacement.zeros();
1291 if(!pre_velocity.is_empty()) pre_velocity.zeros();
1292 if(!trial_velocity.is_empty()) trial_velocity.zeros();
1293 if(!incre_velocity.is_empty()) incre_velocity.zeros();
1294 if(!current_velocity.is_empty()) current_velocity.zeros();
1298 if(!pre_acceleration.is_empty()) pre_acceleration.zeros();
1299 if(!trial_acceleration.is_empty()) trial_acceleration.zeros();
1300 if(!incre_acceleration.is_empty()) incre_acceleration.zeros();
1301 if(!current_acceleration.is_empty()) current_acceleration.zeros();
1305 if(!pre_temperature.is_empty()) pre_temperature.zeros();
1306 if(!trial_temperature.is_empty()) trial_temperature.zeros();
1307 if(!incre_temperature.is_empty()) incre_temperature.zeros();
1308 if(!current_temperature.is_empty()) current_temperature.zeros();
1312 if(!trial_constraint_resistance.is_empty()) trial_constraint_resistance.zeros();
1313 if(!current_constraint_resistance.is_empty()) current_constraint_resistance.zeros();
1320 reset_load_factor();
1324 reset_damping_force();
1325 reset_nonviscous_force();
1326 reset_inertial_force();
1327 reset_displacement();
1329 reset_acceleration();
1330 reset_temperature();
1331 reset_auxiliary_resistance();
1335 trial_time = current_time;
1340 if(trial_load_factor.is_empty())
return;
1341 trial_load_factor = current_load_factor;
1342 incre_load_factor.zeros();
1346 if(trial_load.is_empty())
return;
1347 trial_load = current_load;
1352 if(trial_settlement.is_empty())
return;
1353 trial_settlement = current_settlement;
1354 incre_settlement.zeros();
1358 if(trial_resistance.is_empty())
return;
1359 trial_resistance = current_resistance;
1360 incre_resistance.zeros();
1364 if(trial_damping_force.is_empty())
return;
1365 trial_damping_force = current_damping_force;
1366 incre_damping_force.zeros();
1370 if(trial_nonviscous_force.is_empty())
return;
1371 trial_nonviscous_force = current_nonviscous_force;
1372 incre_nonviscous_force.zeros();
1376 if(trial_inertial_force.is_empty())
return;
1377 trial_inertial_force = current_inertial_force;
1378 incre_inertial_force.zeros();
1382 if(trial_displacement.is_empty())
return;
1383 trial_displacement = current_displacement;
1384 incre_displacement.zeros();
1388 if(trial_velocity.is_empty())
return;
1389 trial_velocity = current_velocity;
1390 incre_velocity.zeros();
1394 if(trial_acceleration.is_empty())
return;
1395 trial_acceleration = current_acceleration;
1396 incre_acceleration.zeros();
1400 if(trial_temperature.is_empty())
return;
1401 trial_temperature = current_temperature;
1402 incre_temperature.zeros();
1406 if(trial_constraint_resistance.is_empty())
return;
1407 trial_constraint_resistance = current_constraint_resistance;
1411 if(!eigenvalue.is_empty()) eigenvalue.zeros();
1412 if(!eigenvector.is_empty()) eigenvector.zeros();
1416 if(global_mass !=
nullptr) global_mass->zeros();
1420 if(global_damping !=
nullptr) global_damping->zeros();
1424 if(global_nonviscous !=
nullptr) global_nonviscous->zeros();
1428 if(global_stiffness !=
nullptr) global_stiffness->zeros();
1432 if(global_geometry !=
nullptr) global_geometry->zeros();
1437 auxiliary_load.reset();
1438 auxiliary_stiffness.set_size(n_size, 0);
1439 auxiliary_resistance.reset();
1440 auxiliary_encoding.reset();
1444 global_mass =
nullptr;
1445 global_damping =
nullptr;
1446 global_nonviscous =
nullptr;
1447 global_stiffness =
nullptr;
1448 global_geometry =
nullptr;
1452 if(ER.is_empty())
return;
1453 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_resistance(EI(I)) += ER(I);
1457 if(ER.is_empty())
return;
1458 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_damping_force(EI(I)) += ER(I);
1462 if(ER.is_empty())
return;
1463 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_nonviscous_force(EI(I)) += ER(I);
1467 if(ER.is_empty())
return;
1468 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_inertial_force(EI(I)) += ER(I);
1472 if(EM.is_empty())
return;
1475 for(
const auto [g_row, g_col, l_row, l_col] : MAP) GM->unsafe_at(g_row, g_col) += EM(l_row, l_col);
1477 for(
auto I = 0llu; I < EI.n_elem; ++I)
1478 for(
auto J = 0llu; J < EI.n_elem; ++J) GM->unsafe_at(EI(J), EI(I)) += EM(J, I);
1481template<sp_d T>
void Factory<T>::assemble_mass(
const Mat<T>& EM,
const uvec& EI,
const std::vector<MappingDOF>& MAP) { this->assemble_matrix_helper(global_mass, EM, EI, MAP); }
1483template<sp_d T>
void Factory<T>::assemble_damping(
const Mat<T>& EC,
const uvec& EI,
const std::vector<MappingDOF>& MAP) { this->assemble_matrix_helper(global_damping, EC, EI, MAP); }
1485template<sp_d T>
void Factory<T>::assemble_nonviscous(
const Mat<T>& EC,
const uvec& EI,
const std::vector<MappingDOF>& MAP) { this->assemble_matrix_helper(global_nonviscous, EC, EI, MAP); }
1487template<sp_d T>
void Factory<T>::assemble_stiffness(
const Mat<T>& EK,
const uvec& EI,
const std::vector<MappingDOF>& MAP) { this->assemble_matrix_helper(global_stiffness, EK, EI, MAP); }
1489template<sp_d T>
void Factory<T>::assemble_geometry(
const Mat<T>& EG,
const uvec& EI,
const std::vector<MappingDOF>& MAP) { this->assemble_matrix_helper(global_geometry, EG, EI, MAP); }
1492 if(EK.is_empty())
return;
1493 for(
auto I = EK.begin(); I != EK.end(); ++I) global_stiffness->at(EI(I.row()), EI(I.col())) += *I;
1497 suanpan_info(
"A Factory object with size of {}.\n", n_size);
1501 switch(storage_type) {
1502#ifdef SUANPAN_DISTRIBUTED
1504 return std::make_unique<FullMatCluster<T>>(n_size, n_size);
1506 return std::make_unique<FullSymmMatCluster<T>>(n_size, n_size);
1508 return std::make_unique<BandMatCluster<T>>(n_size, n_lobw, n_upbw);
1510 return std::make_unique<BandSymmMatCluster<T>>(n_size, n_lobw);
1516 return std::make_unique<SparseMatClusterMUMPS<T>>(n_size, n_size, n_elem);
1522 return std::make_unique<SparseSymmMatClusterMUMPS<T>>(n_size, n_size, n_elem);
1528 return std::make_unique<FullMat<T>>(n_size, n_size);
1534 return std::make_unique<BandMat<T>>(n_size, n_lobw, n_upbw);
1536 return std::make_unique<BandSymmMat<T>>(n_size, n_lobw);
1538 return std::make_unique<SymmPackMat<T>>(n_size);
1541#pragma GCC diagnostic push
1542#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
1544#pragma GCC diagnostic pop
1557 return std::make_unique<SparseMatSuperLU<T>>(n_size, n_size, n_elem);
1560 throw std::invalid_argument(
"need a proper storage scheme");
1565 auto global_mat = get_basic_container();
1567 global_mat->set_solver_setting(setting);
1898 incre_time = trial_time - current_time;
1902 trial_load_factor = L;
1903 incre_load_factor = trial_load_factor - current_load_factor;
1908 incre_load = trial_load - current_load;
1912 trial_settlement =
S;
1913 incre_settlement = trial_settlement - current_settlement;
1917 trial_resistance = R;
1918 incre_resistance = trial_resistance - current_resistance;
1922 trial_damping_force = R;
1923 incre_damping_force = trial_damping_force - current_damping_force;
1927 trial_nonviscous_force = R;
1928 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
1932 trial_inertial_force = R;
1933 incre_inertial_force = trial_inertial_force - current_inertial_force;
1937 trial_displacement = D;
1938 incre_displacement = trial_displacement - current_displacement;
1943 incre_velocity = trial_velocity - current_velocity;
1947 trial_acceleration =
A;
1948 incre_acceleration = trial_acceleration - current_acceleration;
1952 trial_temperature =
M;
1953 incre_temperature = trial_temperature - current_temperature;
1958 trial_time = current_time + incre_time;
1962 incre_load_factor = L;
1963 trial_load_factor = current_load_factor + incre_load_factor;
1968 trial_load = current_load + incre_load;
1972 incre_settlement =
S;
1973 trial_settlement = current_settlement + incre_settlement;
1977 incre_resistance = R;
1978 trial_resistance = current_resistance + incre_resistance;
1982 incre_damping_force = R;
1983 trial_damping_force = current_damping_force + incre_damping_force;
1987 incre_nonviscous_force = R;
1988 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
1992 incre_inertial_force = R;
1993 trial_inertial_force = current_inertial_force + incre_inertial_force;
1997 incre_displacement = D;
1998 trial_displacement = current_displacement + incre_displacement;
2003 trial_velocity = current_velocity + incre_velocity;
2007 incre_acceleration =
A;
2008 trial_acceleration = current_acceleration + incre_acceleration;
2012 incre_temperature =
M;
2013 trial_temperature = current_temperature + incre_temperature;
2017 trial_time = current_time =
M;
2022 trial_load_factor = current_load_factor = L;
2023 incre_load_factor.zeros();
2027 trial_load = current_load = L;
2032 trial_settlement = current_settlement =
S;
2033 incre_settlement.zeros();
2037 trial_resistance = current_resistance = R;
2038 incre_resistance.zeros();
2042 trial_damping_force = current_damping_force = R;
2043 incre_damping_force.zeros();
2047 trial_nonviscous_force = current_nonviscous_force = R;
2048 incre_nonviscous_force.zeros();
2052 trial_inertial_force = current_inertial_force = R;
2053 incre_inertial_force.zeros();
2057 trial_displacement = current_displacement = D;
2058 incre_displacement.zeros();
2062 trial_velocity = current_velocity =
V;
2063 incre_velocity.zeros();
2067 trial_acceleration = current_acceleration =
A;
2068 incre_acceleration.zeros();
2072 trial_temperature = current_temperature =
M;
2073 incre_temperature.zeros();
2078 incre_time = trial_time - current_time;
2082 trial_load_factor += L;
2083 incre_load_factor = trial_load_factor - current_load_factor;
2088 incre_load = trial_load - current_load;
2092 trial_settlement +=
S;
2093 incre_settlement = trial_settlement - current_settlement;
2097 trial_resistance += R;
2098 incre_resistance = trial_resistance - current_resistance;
2102 trial_damping_force += R;
2103 incre_damping_force = trial_damping_force - current_damping_force;
2107 trial_nonviscous_force += R;
2108 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
2112 trial_inertial_force += R;
2113 incre_inertial_force = trial_inertial_force - current_inertial_force;
2117 trial_displacement += D;
2118 incre_displacement = trial_displacement - current_displacement;
2122 trial_velocity +=
V;
2123 incre_velocity = trial_velocity - current_velocity;
2127 trial_acceleration +=
A;
2128 incre_acceleration = trial_acceleration - current_acceleration;
2132 trial_temperature +=
M;
2133 incre_temperature = trial_temperature - current_temperature;
2138 trial_time = current_time + incre_time;
2142 incre_load_factor += L;
2143 trial_load_factor = current_load_factor + incre_load_factor;
2148 trial_load = current_load + incre_load;
2152 incre_settlement +=
S;
2153 trial_settlement = current_settlement + incre_settlement;
2157 incre_resistance += R;
2158 trial_resistance = current_resistance + incre_resistance;
2162 incre_damping_force += R;
2163 trial_damping_force = current_damping_force + incre_damping_force;
2167 incre_nonviscous_force += R;
2168 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
2172 incre_inertial_force += R;
2173 trial_inertial_force = current_inertial_force + incre_inertial_force;
2177 incre_displacement += D;
2178 trial_displacement = current_displacement + incre_displacement;
2182 incre_velocity +=
V;
2183 trial_velocity = current_velocity + incre_velocity;
2187 incre_acceleration +=
A;
2188 trial_acceleration = current_acceleration + incre_acceleration;
2192 incre_temperature +=
M;
2193 trial_temperature = current_temperature + incre_temperature;
2197 trial_time = current_time +=
M;
2202 trial_load_factor = current_load_factor += L;
2203 incre_load_factor.zeros();
2207 trial_load = current_load += L;
2212 trial_settlement = current_settlement +=
S;
2213 incre_settlement.zeros();
2217 trial_resistance = current_resistance += R;
2218 incre_resistance.zeros();
2222 trial_damping_force = current_damping_force += R;
2223 incre_damping_force.zeros();
2227 trial_nonviscous_force = current_nonviscous_force += R;
2228 incre_nonviscous_force.zeros();
2232 trial_inertial_force = current_inertial_force += R;
2233 incre_inertial_force.zeros();
2237 trial_displacement = current_displacement += D;
2238 incre_displacement.zeros();
2242 trial_velocity = current_velocity +=
V;
2243 incre_velocity.zeros();
2247 trial_acceleration = current_acceleration +=
A;
2248 incre_acceleration.zeros();
2252 trial_temperature = current_temperature +=
M;
2253 incre_temperature.zeros();
void reset(const ExternalMaterialData *data, int *info)
Definition ElasticExternal.cpp:74
A BandMatMAGMA class that holds matrices.
Definition BandMatMAGMA.hpp:37
A BandMatSpike class that holds matrices.
Definition BandMatSpike.hpp:47
A Factory class.
Definition Factory.hpp:69
const bool initialized
Definition Factory.hpp:183
A FullMatCUDA class that holds matrices.
Definition FullMatCUDA.hpp:38
A SparseMatCUDA class that holds matrices.
Definition SparseMatCUDA.hpp:43
A SparseMatClusterLIS class that holds matrices.
Definition SparseMatClusterLIS.hpp:36
A SparseMatClusterPARDISO class that holds matrices.
A SparseMatFGMRES class that holds matrices.
Definition SparseMatFGMRES.hpp:38
A SparseMatMAGMA class that holds matrices.
Definition SparseMatMAGMA.hpp:283
A SparseMatPARDISO class that holds matrices.
void set_pre_inertial_force(const Col< T > &)
Definition Factory.hpp:1694
T & modify_trial_time()
Definition Factory.hpp:1800
void set_eigenvalue(const Col< T > &)
Definition Factory.hpp:950
void clear_acceleration()
Definition Factory.hpp:1297
void initialize_load()
Definition Factory.hpp:836
shared_ptr< MetaMat< T > > & modify_stiffness()
Definition Factory.hpp:1578
Col< T > & modify_trial_inertial_force()
Definition Factory.hpp:1814
Col< T > & modify_trial_nonviscous_force()
Definition Factory.hpp:1812
void commit_temperature()
Definition Factory.hpp:1138
bool is_sparse() const
Definition Factory.hpp:745
void update_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:2046
void set_incre_velocity(const Col< T > &)
Definition Factory.hpp:1650
uword get_entry() const
Definition Factory.hpp:699
void set_incre_temperature(const Col< T > &)
Definition Factory.hpp:1654
void assemble_stiffness(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1487
void print() const
Definition Factory.hpp:1496
void clear_resistance()
Definition Factory.hpp:1255
void initialize_auxiliary_resistance()
Definition Factory.hpp:896
void clear_load_factor()
Definition Factory.hpp:1234
void set_incre_acceleration(const Col< T > &)
Definition Factory.hpp:1652
int initialize()
Definition Factory.hpp:773
Col< T > & modify_incre_load()
Definition Factory.hpp:1828
const Col< T > & get_current_acceleration() const
Definition Factory.hpp:1772
void update_incre_damping_force_by(const Col< T > &)
Definition Factory.hpp:2161
const Col< T > & get_pre_damping_force() const
Definition Factory.hpp:1786
void reset_displacement()
Definition Factory.hpp:1381
void update_incre_temperature_by(const Col< T > &)
Definition Factory.hpp:2191
void set_ninja(const Col< T > &)
Definition Factory.hpp:924
Col< T > & modify_trial_damping_force()
Definition Factory.hpp:1810
void update_trial_temperature_by(const Col< T > &)
Definition Factory.hpp:2131
bool is_nlgeom() const
Definition Factory.hpp:707
void update_incre_load_factor_by(const Col< T > &)
Definition Factory.hpp:2141
const Mat< T > & get_eigenvector() const
Definition Factory.hpp:1026
const Col< T > & get_trial_velocity() const
Definition Factory.hpp:1722
const Col< T > & get_trial_resistance() const
Definition Factory.hpp:1712
void update_trial_load_factor_by(const Col< T > &)
Definition Factory.hpp:2081
const Col< T > & get_ninja() const
Definition Factory.hpp:954
Col< T > & modify_trial_temperature()
Definition Factory.hpp:1822
void set_pre_velocity(const Col< T > &)
Definition Factory.hpp:1698
const Col< T > & get_current_load() const
Definition Factory.hpp:1756
void set_trial_settlement(const Col< T > &)
Definition Factory.hpp:1614
void set_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1634
void set_trial_time(T)
Definition Factory.hpp:1608
Col< T > & modify_incre_resistance()
Definition Factory.hpp:1832
void update_incre_load_by(const Col< T > &)
Definition Factory.hpp:2146
void set_solver_type(SolverType)
Definition Factory.hpp:717
const Col< T > & get_pre_load() const
Definition Factory.hpp:1780
void commit_acceleration()
Definition Factory.hpp:1132
AnalysisType get_analysis_type() const
Definition Factory.hpp:735
void clear_nonviscous()
Definition Factory.hpp:1423
void set_current_resistance(const Col< T > &)
Definition Factory.hpp:1664
void update_incre_displacement(const Col< T > &)
Definition Factory.hpp:1996
void set_incre_displacement(const Col< T > &)
Definition Factory.hpp:1648
void update_current_acceleration_by(const Col< T > &)
Definition Factory.hpp:2246
const uvec & get_auxiliary_encoding() const
Definition Factory.hpp:962
void reset_auxiliary_resistance()
Definition Factory.hpp:1405
Col< T > & modify_pre_displacement()
Definition Factory.hpp:1888
void commit_resistance()
Definition Factory.hpp:1096
const Col< T > & get_incre_inertial_force() const
Definition Factory.hpp:1742
void set_storage_scheme(StorageScheme)
Definition Factory.hpp:737
void update_trial_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2106
void initialize_damping()
Definition Factory.hpp:903
void update_incre_velocity(const Col< T > &)
Definition Factory.hpp:2001
Col< T > & modify_incre_acceleration()
Definition Factory.hpp:1844
void initialize_geometry()
Definition Factory.hpp:913
void update_incre_displacement_by(const Col< T > &)
Definition Factory.hpp:2176
void update_current_damping_force_by(const Col< T > &)
Definition Factory.hpp:2221
void assemble_mass(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1481
void set_trial_velocity(const Col< T > &)
Definition Factory.hpp:1626
void update_current_resistance(const Col< T > &)
Definition Factory.hpp:2036
void clear_inertial_force()
Definition Factory.hpp:1276
Col< T > & modify_ninja()
Definition Factory.hpp:1582
void set_pre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1692
void update_trial_damping_force_by(const Col< T > &)
Definition Factory.hpp:2101
Col< T > & modify_eigenvalue()
Definition Factory.hpp:1604
const Col< T > & get_current_settlement() const
Definition Factory.hpp:1758
const SolverSetting< double > & get_solver_setting() const
Definition Factory.hpp:727
void commit_load_factor()
Definition Factory.hpp:1078
std::mutex & get_damping_mutex()
Definition Factory.hpp:1016
void update_trial_velocity_by(const Col< T > &)
Definition Factory.hpp:2121
void update_current_load_by(const Col< T > &)
Definition Factory.hpp:2206
SpCol< T > & modify_trial_constraint_resistance()
Definition Factory.hpp:1600
const shared_ptr< MetaMat< T > > & get_damping() const
Definition Factory.hpp:990
void set_pre_settlement(const Col< T > &)
Definition Factory.hpp:1686
void set_nlgeom(bool)
Definition Factory.hpp:701
StorageScheme get_storage_scheme() const
Definition Factory.hpp:743
void commit_inertial_force()
Definition Factory.hpp:1114
void update_current_time(T)
Definition Factory.hpp:2016
void initialize_resistance()
Definition Factory.hpp:848
const Col< T > & get_current_damping_force() const
Definition Factory.hpp:1762
void set_solver_setting(const SolverSetting< double > &)
Definition Factory.hpp:725
void update_trial_displacement_by(const Col< T > &)
Definition Factory.hpp:2116
void set_mass(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:940
void reset_velocity()
Definition Factory.hpp:1387
const shared_ptr< MetaMat< T > > & get_nonviscous() const
Definition Factory.hpp:992
const Col< T > & get_trial_load_factor() const
Definition Factory.hpp:1706
void set_current_load(const Col< T > &)
Definition Factory.hpp:1660
std::mutex & get_trial_load_mutex()
Definition Factory.hpp:1008
void initialize_stiffness()
Definition Factory.hpp:911
void initialize_damping_force()
Definition Factory.hpp:854
T get_current_time() const
Definition Factory.hpp:1752
const Col< T > & get_pre_settlement() const
Definition Factory.hpp:1782
void update_trial_temperature(const Col< T > &)
Definition Factory.hpp:1951
void commit_velocity()
Definition Factory.hpp:1126
void set_pre_time(T)
Definition Factory.hpp:1680
T get_complementary_energy()
Definition Factory.hpp:984
void reset()
Definition Factory.hpp:1443
const Col< T > & get_incre_displacement() const
Definition Factory.hpp:1744
void set_current_damping_force(const Col< T > &)
Definition Factory.hpp:1666
Col< T > & modify_current_nonviscous_force()
Definition Factory.hpp:1860
void update_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1946
void set_current_time(T)
Definition Factory.hpp:1656
const Col< T > & get_auxiliary_load() const
Definition Factory.hpp:968
void commit_pre_settlement()
Definition Factory.hpp:1174
Col< T > & modify_pre_settlement()
Definition Factory.hpp:1878
const shared_ptr< MetaMat< T > > & get_mass() const
Definition Factory.hpp:988
void commit_status()
Definition Factory.hpp:1053
void commit_pre_load_factor()
Definition Factory.hpp:1166
const suanpan::set< uword > & get_reference_dof() const
Definition Factory.hpp:767
std::pair< unsigned, unsigned > get_bandwidth() const
Definition Factory.hpp:755
void set_incre_time(T)
Definition Factory.hpp:1632
shared_ptr< MetaMat< T > > & modify_damping()
Definition Factory.hpp:1574
Col< T > & modify_pre_velocity()
Definition Factory.hpp:1890
std::mutex & get_reference_load_mutex()
Definition Factory.hpp:1012
void assemble_damping(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1483
void update_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1986
void update_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1931
void set_current_velocity(const Col< T > &)
Definition Factory.hpp:1674
void commit_displacement()
Definition Factory.hpp:1120
void update_current_velocity_by(const Col< T > &)
Definition Factory.hpp:2241
const Col< T > & get_incre_damping_force() const
Definition Factory.hpp:1738
void update_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1901
void reset_load_factor()
Definition Factory.hpp:1339
void clear_velocity()
Definition Factory.hpp:1290
void update_current_load(const Col< T > &)
Definition Factory.hpp:2026
void update_incre_time(T)
Definition Factory.hpp:1956
void update_incre_settlement_by(const Col< T > &)
Definition Factory.hpp:2151
unsigned get_reference_size() const
Definition Factory.hpp:761
void update_current_acceleration(const Col< T > &)
Definition Factory.hpp:2066
StorageScheme
Definition Factory.hpp:48
void commit_pre_temperature()
Definition Factory.hpp:1206
void commit_pre_status()
Definition Factory.hpp:1149
void update_current_time_by(T)
Definition Factory.hpp:2196
suanpan::set< uword > & modify_reference_dof()
Definition Factory.hpp:1586
void set_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1628
void update_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1921
const Col< T > & get_incre_settlement() const
Definition Factory.hpp:1734
void reset_inertial_force()
Definition Factory.hpp:1375
void set_reference_dof(const suanpan::set< uword > &)
Definition Factory.hpp:765
const Col< T > & get_momentum()
Definition Factory.hpp:986
void update_current_displacement(const Col< T > &)
Definition Factory.hpp:2056
void clear_settlement()
Definition Factory.hpp:1248
void set_pre_load(const Col< T > &)
Definition Factory.hpp:1684
std::mutex & get_auxiliary_stiffness_mutex()
Definition Factory.hpp:1004
T get_incre_time() const
Definition Factory.hpp:1728
void commit_pre_damping_force()
Definition Factory.hpp:1182
Col< T > & modify_current_inertial_force()
Definition Factory.hpp:1862
const Col< T > & get_current_nonviscous_force() const
Definition Factory.hpp:1764
T get_strain_energy()
Definition Factory.hpp:976
void commit_pre_inertial_force()
Definition Factory.hpp:1190
void update_trial_settlement(const Col< T > &)
Definition Factory.hpp:1911
void set_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1622
const Col< T > & get_eigenvalue() const
Definition Factory.hpp:1024
void commit_pre_displacement()
Definition Factory.hpp:1194
std::mutex & get_geometry_mutex()
Definition Factory.hpp:1022
void set_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1644
void commit_pre_acceleration()
Definition Factory.hpp:1202
const Col< T > & get_incre_velocity() const
Definition Factory.hpp:1746
Col< T > & modify_current_settlement()
Definition Factory.hpp:1854
T get_trial_time() const
Definition Factory.hpp:1704
void update_current_temperature_by(const Col< T > &)
Definition Factory.hpp:2251
void set_geometry(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:948
void set_incre_load(const Col< T > &)
Definition Factory.hpp:1636
void update_reference_size()
Definition Factory.hpp:757
void set_pre_acceleration(const Col< T > &)
Definition Factory.hpp:1700
void set_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1646
const Col< T > & get_trial_nonviscous_force() const
Definition Factory.hpp:1716
T get_kinetic_energy()
Definition Factory.hpp:978
void set_current_settlement(const Col< T > &)
Definition Factory.hpp:1662
void update_trial_settlement_by(const Col< T > &)
Definition Factory.hpp:2091
void initialize_inertial_force()
Definition Factory.hpp:866
void set_pre_resistance(const Col< T > &)
Definition Factory.hpp:1688
void commit_load()
Definition Factory.hpp:1084
void update_current_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2226
void update_trial_acceleration_by(const Col< T > &)
Definition Factory.hpp:2126
const Col< T > & get_pre_acceleration() const
Definition Factory.hpp:1796
void update_incre_acceleration_by(const Col< T > &)
Definition Factory.hpp:2186
void commit_pre_nonviscous_force()
Definition Factory.hpp:1186
void commit_pre_load()
Definition Factory.hpp:1170
void commit_pre_velocity()
Definition Factory.hpp:1198
void update_trial_resistance_by(const Col< T > &)
Definition Factory.hpp:2096
Col< T > & modify_current_resistance()
Definition Factory.hpp:1856
AnalysisType
Definition Factory.hpp:39
bool is_nonviscous() const
Definition Factory.hpp:715
void commit_pre_time()
Definition Factory.hpp:1164
shared_ptr< MetaMat< T > > & modify_geometry()
Definition Factory.hpp:1580
void commit_auxiliary_resistance()
Definition Factory.hpp:1144
void update_current_settlement(const Col< T > &)
Definition Factory.hpp:2031
void update_trial_load(const Col< T > &)
Definition Factory.hpp:1906
Col< T > & modify_pre_nonviscous_force()
Definition Factory.hpp:1884
void update_incre_load(const Col< T > &)
Definition Factory.hpp:1966
void update_trial_time(T)
Definition Factory.hpp:1896
void clear_nonviscous_force()
Definition Factory.hpp:1269
const shared_ptr< MetaMat< T > > & get_stiffness() const
Definition Factory.hpp:994
void commit_settlement()
Definition Factory.hpp:1090
void set_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1620
const Col< T > & get_auxiliary_lambda() const
Definition Factory.hpp:964
void reset_load()
Definition Factory.hpp:1345
void reset_damping_force()
Definition Factory.hpp:1363
void update_current_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2231
void set_trial_temperature(const Col< T > &)
Definition Factory.hpp:1630
std::mutex & get_auxiliary_encoding_mutex()
Definition Factory.hpp:998
Col< T > & modify_trial_load()
Definition Factory.hpp:1804
SolverType
Definition Factory.hpp:57
void assemble_damping_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1456
void set_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1668
const Col< T > & get_pre_displacement() const
Definition Factory.hpp:1792
void set_sub_solver_type(SolverType)
Definition Factory.hpp:719
const Col< T > & get_current_inertial_force() const
Definition Factory.hpp:1766
std::mutex & get_mass_mutex()
Definition Factory.hpp:1014
void set_nonviscous(bool)
Definition Factory.hpp:709
const Col< T > & get_pre_load_factor() const
Definition Factory.hpp:1778
Col< T > & modify_current_acceleration()
Definition Factory.hpp:1868
const Col< T > & get_trial_displacement() const
Definition Factory.hpp:1720
void set_multiplier_size(unsigned)
Definition Factory.hpp:930
void update_trial_velocity(const Col< T > &)
Definition Factory.hpp:1941
void update_current_temperature(const Col< T > &)
Definition Factory.hpp:2071
void reset_temperature()
Definition Factory.hpp:1399
std::mutex & get_auxiliary_resistance_mutex()
Definition Factory.hpp:1000
void set_current_acceleration(const Col< T > &)
Definition Factory.hpp:1676
T get_nonviscous_energy()
Definition Factory.hpp:982
void update_current_settlement_by(const Col< T > &)
Definition Factory.hpp:2211
void initialize_settlement()
Definition Factory.hpp:842
void clear_damping()
Definition Factory.hpp:1419
const Col< T > & get_incre_nonviscous_force() const
Definition Factory.hpp:1740
const Col< T > & get_incre_load_factor() const
Definition Factory.hpp:1730
void clear_energy()
Definition Factory.hpp:1044
const SpMat< T > & get_reference_load() const
Definition Factory.hpp:960
void initialize_displacement()
Definition Factory.hpp:872
Col< T > & modify_auxiliary_load()
Definition Factory.hpp:1596
void reset_time()
Definition Factory.hpp:1334
const Col< T > & get_current_displacement() const
Definition Factory.hpp:1768
Col< T > & modify_current_velocity()
Definition Factory.hpp:1866
unsigned get_size() const
Definition Factory.hpp:692
T & modify_current_time()
Definition Factory.hpp:1848
void reset_settlement()
Definition Factory.hpp:1351
void clear_damping_force()
Definition Factory.hpp:1262
void set_analysis_type(AnalysisType)
Definition Factory.hpp:729
const Col< T > & get_incre_load() const
Definition Factory.hpp:1732
void initialize_nonviscous_force()
Definition Factory.hpp:860
void set_entry(uword)
Definition Factory.hpp:694
Col< T > & modify_pre_damping_force()
Definition Factory.hpp:1882
const Col< T > & get_incre_acceleration() const
Definition Factory.hpp:1748
T get_pre_time() const
Definition Factory.hpp:1776
void clear_geometry()
Definition Factory.hpp:1431
T get_viscous_energy()
Definition Factory.hpp:980
std::mutex & get_trial_constraint_resistance_mutex()
Definition Factory.hpp:1006
const Col< T > & get_current_temperature() const
Definition Factory.hpp:1774
void update_incre_time_by(T)
Definition Factory.hpp:2136
void assemble_nonviscous(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1485
void set_reference_size(unsigned)
Definition Factory.hpp:759
Col< T > & modify_trial_settlement()
Definition Factory.hpp:1806
void initialize_temperature()
Definition Factory.hpp:890
void set_current_displacement(const Col< T > &)
Definition Factory.hpp:1672
void update_reference_dof(const uvec &)
Definition Factory.hpp:763
const Col< T > & get_trial_inertial_force() const
Definition Factory.hpp:1718
void set_current_inertial_force(const Col< T > &)
Definition Factory.hpp:1670
SpCol< T > & modify_current_constraint_resistance()
Definition Factory.hpp:1602
Col< T > & modify_incre_load_factor()
Definition Factory.hpp:1826
void set_trial_load(const Col< T > &)
Definition Factory.hpp:1612
Col< T > & modify_auxiliary_resistance()
Definition Factory.hpp:1594
Col< T > & modify_pre_resistance()
Definition Factory.hpp:1880
Col< T > & modify_incre_temperature()
Definition Factory.hpp:1846
T & modify_pre_time()
Definition Factory.hpp:1872
void update_incre_temperature(const Col< T > &)
Definition Factory.hpp:2011
shared_ptr< MetaMat< T > > & modify_nonviscous()
Definition Factory.hpp:1576
void update_current_velocity(const Col< T > &)
Definition Factory.hpp:2061
void set_error(T)
Definition Factory.hpp:769
Col< T > & modify_incre_nonviscous_force()
Definition Factory.hpp:1836
void assemble_geometry(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1489
const Col< T > & get_trial_settlement() const
Definition Factory.hpp:1710
void set_eigenvector(const Mat< T > &)
Definition Factory.hpp:952
void initialize_load_factor()
Definition Factory.hpp:826
Col< T > & modify_incre_inertial_force()
Definition Factory.hpp:1838
const Col< T > & get_trial_load() const
Definition Factory.hpp:1708
bool contain_sub_solver_type(SolverType) const
Definition Factory.hpp:723
uvec & modify_auxiliary_encoding()
Definition Factory.hpp:1590
void update_current_displacement_by(const Col< T > &)
Definition Factory.hpp:2236
void set_trial_resistance(const Col< T > &)
Definition Factory.hpp:1616
void commit_nonviscous_force()
Definition Factory.hpp:1108
void set_pre_load_factor(const Col< T > &)
Definition Factory.hpp:1682
void update_current_damping_force(const Col< T > &)
Definition Factory.hpp:2041
Col< T > & modify_current_damping_force()
Definition Factory.hpp:1858
void update_current_load_factor(const Col< T > &)
Definition Factory.hpp:2021
void commit_energy()
Definition Factory.hpp:1028
void commit_damping_force()
Definition Factory.hpp:1102
T get_error() const
Definition Factory.hpp:771
void update_trial_time_by(T)
Definition Factory.hpp:2076
void update_incre_acceleration(const Col< T > &)
Definition Factory.hpp:2006
const SpMat< T > & get_auxiliary_stiffness() const
Definition Factory.hpp:970
void assemble_inertial_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1466
void clear_status()
Definition Factory.hpp:1210
void set_bandwidth(unsigned, unsigned)
Definition Factory.hpp:747
void update_incre_velocity_by(const Col< T > &)
Definition Factory.hpp:2181
const Col< T > & get_current_load_factor() const
Definition Factory.hpp:1754
void commit_time()
Definition Factory.hpp:1073
void clear_mass()
Definition Factory.hpp:1415
const Col< T > & get_pre_inertial_force() const
Definition Factory.hpp:1790
void commit_pre_resistance()
Definition Factory.hpp:1178
void update_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1926
void reset_resistance()
Definition Factory.hpp:1357
Col< T > & modify_pre_temperature()
Definition Factory.hpp:1894
std::mutex & get_auxiliary_load_mutex()
Definition Factory.hpp:1002
const Col< T > & get_trial_acceleration() const
Definition Factory.hpp:1724
void assemble_resistance(const Mat< T > &, const uvec &)
Definition Factory.hpp:1451
void set_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1642
Col< T > & modify_incre_displacement()
Definition Factory.hpp:1840
Col< T > & modify_pre_load()
Definition Factory.hpp:1876
const SpCol< T > & get_trial_constraint_resistance() const
Definition Factory.hpp:972
void update_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1981
const Col< T > & get_pre_velocity() const
Definition Factory.hpp:1794
const Col< T > & get_current_resistance() const
Definition Factory.hpp:1760
void assemble_nonviscous_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1461
unsigned get_multiplier_size() const
Definition Factory.hpp:958
void initialize_velocity()
Definition Factory.hpp:878
std::mutex & get_stiffness_mutex()
Definition Factory.hpp:1020
Col< T > & modify_pre_acceleration()
Definition Factory.hpp:1892
void update_incre_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2171
const Col< T > & get_current_velocity() const
Definition Factory.hpp:1770
void update_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1961
SpMat< T > & modify_auxiliary_stiffness()
Definition Factory.hpp:1598
void set_incre_resistance(const Col< T > &)
Definition Factory.hpp:1640
void initialize_nonviscous()
Definition Factory.hpp:905
Col< T > & modify_trial_velocity()
Definition Factory.hpp:1818
Col< T > & modify_trial_displacement()
Definition Factory.hpp:1816
const Col< T > & get_pre_temperature() const
Definition Factory.hpp:1798
Col< T > & modify_trial_acceleration()
Definition Factory.hpp:1820
void clear_load()
Definition Factory.hpp:1241
const Col< T > & get_incre_temperature() const
Definition Factory.hpp:1750
Col< T > & modify_pre_load_factor()
Definition Factory.hpp:1874
Factory(unsigned=0, AnalysisType=AnalysisType::NONE, StorageScheme=StorageScheme::FULL)
Definition Factory.hpp:681
Col< T > & modify_trial_load_factor()
Definition Factory.hpp:1802
void set_size(unsigned)
Definition Factory.hpp:686
void update_trial_displacement(const Col< T > &)
Definition Factory.hpp:1936
const Col< T > & get_incre_resistance() const
Definition Factory.hpp:1736
Col< T > & modify_trial_resistance()
Definition Factory.hpp:1808
const Col< T > & get_sushi() const
Definition Factory.hpp:956
const Col< T > & get_auxiliary_resistance() const
Definition Factory.hpp:966
const Col< T > & get_trial_damping_force() const
Definition Factory.hpp:1714
Mat< T > & modify_eigenvector()
Definition Factory.hpp:1606
void update_current_resistance_by(const Col< T > &)
Definition Factory.hpp:2216
void set_pre_temperature(const Col< T > &)
Definition Factory.hpp:1702
void update_trial_load_by(const Col< T > &)
Definition Factory.hpp:2086
Col< T > & modify_auxiliary_lambda()
Definition Factory.hpp:1592
const SpCol< T > & get_current_constraint_resistance() const
Definition Factory.hpp:974
void clear_auxiliary_resistance()
Definition Factory.hpp:1311
const Col< T > & get_pre_nonviscous_force() const
Definition Factory.hpp:1788
bool contain_solver_type(SolverType) const
Definition Factory.hpp:721
void update_incre_resistance_by(const Col< T > &)
Definition Factory.hpp:2156
void update_sushi_by(const Col< T > &)
Definition Factory.hpp:928
void set_incre_settlement(const Col< T > &)
Definition Factory.hpp:1638
Col< T > & modify_pre_inertial_force()
Definition Factory.hpp:1886
void set_sushi(const Col< T > &)
Definition Factory.hpp:926
shared_ptr< MetaMat< T > > & modify_mass()
Definition Factory.hpp:1572
void update_incre_settlement(const Col< T > &)
Definition Factory.hpp:1971
void set_pre_displacement(const Col< T > &)
Definition Factory.hpp:1696
std::mutex & get_nonviscous_mutex()
Definition Factory.hpp:1018
void set_current_load_factor(const Col< T > &)
Definition Factory.hpp:1658
void set_trial_displacement(const Col< T > &)
Definition Factory.hpp:1624
void update_trial_resistance(const Col< T > &)
Definition Factory.hpp:1916
Col< T > & modify_current_load_factor()
Definition Factory.hpp:1850
void clear_eigen()
Definition Factory.hpp:1410
void clear_auxiliary()
Definition Factory.hpp:1435
void set_reference_load(const SpMat< T > &)
Definition Factory.hpp:938
T & modify_incre_time()
Definition Factory.hpp:1824
void update_incre_resistance(const Col< T > &)
Definition Factory.hpp:1976
SpMat< T > & modify_reference_load()
Definition Factory.hpp:1588
Col< T > & modify_incre_damping_force()
Definition Factory.hpp:1834
Col< T > & modify_incre_settlement()
Definition Factory.hpp:1830
void update_current_load_factor_by(const Col< T > &)
Definition Factory.hpp:2201
void set_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1610
void initialize_eigen()
Definition Factory.hpp:919
void update_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1991
void clear_time()
Definition Factory.hpp:1232
void set_stiffness(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:946
void clear_displacement()
Definition Factory.hpp:1283
const shared_ptr< MetaMat< T > > & get_geometry() const
Definition Factory.hpp:996
Col< T > & modify_current_load()
Definition Factory.hpp:1852
void reset_status()
Definition Factory.hpp:1316
Col< T > & modify_current_temperature()
Definition Factory.hpp:1870
void update_current_inertial_force(const Col< T > &)
Definition Factory.hpp:2051
const Col< T > & get_trial_temperature() const
Definition Factory.hpp:1726
void set_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1618
std::mutex & get_trial_settlement_mutex()
Definition Factory.hpp:1010
void initialize_mass()
Definition Factory.hpp:901
Col< T > & modify_sushi()
Definition Factory.hpp:1584
void set_pre_damping_force(const Col< T > &)
Definition Factory.hpp:1690
void clear_temperature()
Definition Factory.hpp:1304
Col< T > & modify_current_displacement()
Definition Factory.hpp:1864
void initialize_acceleration()
Definition Factory.hpp:884
void update_trial_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2111
void set_current_temperature(const Col< T > &)
Definition Factory.hpp:1678
Col< T > & modify_incre_velocity()
Definition Factory.hpp:1842
void set_damping(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:942
void reset_acceleration()
Definition Factory.hpp:1393
void reset_nonviscous_force()
Definition Factory.hpp:1369
const Col< T > & get_pre_resistance() const
Definition Factory.hpp:1784
void clear_stiffness()
Definition Factory.hpp:1427
void update_incre_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2166
std::set< T > set
Definition container.h:54
Definition SolverSetting.hpp:28
#define suanpan_info
Definition suanPan.h:372