37#include <Domain/MetaMat/MetaMat>
40#include <magmasparse.h>
77 unsigned n_sfbw = n_lobw + n_upbw;
86 magma_dopts magma_setting{};
90 bool nonviscous =
false;
103 SpMat<T> reference_load;
105 uvec auxiliary_encoding;
106 Col<T> auxiliary_lambda;
107 Col<T> auxiliary_resistance;
108 Col<T> auxiliary_load;
109 SpMat<T> auxiliary_stiffness;
111 SpCol<T> trial_constraint_resistance;
112 SpCol<T> current_constraint_resistance;
116 T current_time =
T(0);
119 T strain_energy =
T(0);
120 T kinetic_energy =
T(0);
121 T viscous_energy =
T(0);
122 T nonviscous_energy =
T(0);
123 T complementary_energy =
T(0);
126 Col<T> trial_load_factor;
128 Col<T> trial_settlement;
129 Col<T> trial_resistance;
130 Col<T> trial_damping_force;
131 Col<T> trial_nonviscous_force;
132 Col<T> trial_inertial_force;
133 Col<T> trial_displacement;
134 Col<T> trial_velocity;
135 Col<T> trial_acceleration;
136 Col<T> trial_temperature;
138 Col<T> incre_load_factor;
140 Col<T> incre_settlement;
141 Col<T> incre_resistance;
142 Col<T> incre_damping_force;
143 Col<T> incre_nonviscous_force;
144 Col<T> incre_inertial_force;
145 Col<T> incre_displacement;
146 Col<T> incre_velocity;
147 Col<T> incre_acceleration;
148 Col<T> incre_temperature;
150 Col<T> current_load_factor;
152 Col<T> current_settlement;
153 Col<T> current_resistance;
154 Col<T> current_damping_force;
155 Col<T> current_nonviscous_force;
156 Col<T> current_inertial_force;
157 Col<T> current_displacement;
158 Col<T> current_velocity;
159 Col<T> current_acceleration;
160 Col<T> current_temperature;
162 Col<T> pre_load_factor;
164 Col<T> pre_settlement;
165 Col<T> pre_resistance;
166 Col<T> pre_damping_force;
167 Col<T> pre_nonviscous_force;
168 Col<T> pre_inertial_force;
169 Col<T> pre_displacement;
171 Col<T> pre_acceleration;
172 Col<T> pre_temperature;
174 shared_ptr<MetaMat<T>> global_mass =
nullptr;
175 shared_ptr<MetaMat<T>> global_damping =
nullptr;
176 shared_ptr<MetaMat<T>> global_nonviscous =
nullptr;
177 shared_ptr<MetaMat<T>> global_stiffness =
nullptr;
178 shared_ptr<MetaMat<T>> global_geometry =
nullptr;
180 std::vector<std::mutex> global_mutex{20};
186 unique_ptr<MetaMat<T>> get_basic_container();
187 unique_ptr<MetaMat<T>> get_matrix_container();
189 void assemble_matrix_helper(shared_ptr<
MetaMat<T>>&,
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
197 [[nodiscard]]
unsigned get_size()
const;
220 [[nodiscard]]
const magma_dopts& get_magma_setting()
const {
return magma_setting; }
232 [[nodiscard]] std::pair<unsigned, unsigned>
get_bandwidth()
const;
346 [[nodiscard]]
unsigned get_mpc()
const;
418 const shared_ptr<MetaMat<T>>&
get_mass()
const;
683 void assemble_mass(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
684 void assemble_damping(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
687 void assemble_geometry(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
699 , storage_type(
SS) {}
702 if(D == n_size)
return;
704 access::rw(initialized) =
false;
711 if(n_elem > std::numeric_limits<int>::max())
throw invalid_argument(
"too many elements");
717 if(B == nlgeom)
return;
719 access::rw(initialized) =
false;
725 if(B == nonviscous)
return;
727 access::rw(initialized) =
false;
745 if(AT == analysis_type)
return;
747 access::rw(initialized) =
false;
753 if(
SS == storage_type)
return;
755 access::rw(initialized) =
false;
763 if(L == n_lobw &&
U == n_upbw)
return;
767 access::rw(initialized) =
false;
775 if(
S == n_rfld)
return;
792 reference_dof.clear();
794 if(initialized || n_size == 0)
return 0;
801 switch(analysis_type) {
803 initialize_displacement();
807 initialize_stiffness();
813 initialize_resistance();
814 initialize_displacement();
815 initialize_stiffness();
816 initialize_geometry();
820 initialize_resistance();
821 initialize_damping_force();
822 initialize_nonviscous_force();
823 initialize_inertial_force();
824 initialize_displacement();
825 initialize_velocity();
826 initialize_acceleration();
828 initialize_damping();
829 initialize_nonviscous();
830 initialize_stiffness();
831 initialize_geometry();
837 initialize_auxiliary_resistance();
839 access::rw(initialized) =
true;
845 if(n_rfld == 0)
return;
847 trial_load_factor.zeros(n_rfld);
848 incre_load_factor.zeros(n_rfld);
849 current_load_factor.zeros(n_rfld);
851 reference_load.zeros(n_size, n_rfld);
855 trial_load.zeros(n_size);
856 incre_load.zeros(n_size);
857 current_load.zeros(n_size);
861 trial_settlement.zeros(n_size);
862 incre_settlement.zeros(n_size);
863 current_settlement.zeros(n_size);
867 trial_resistance.zeros(n_size);
868 incre_resistance.zeros(n_size);
869 current_resistance.zeros(n_size);
873 trial_damping_force.zeros(n_size);
874 incre_damping_force.zeros(n_size);
875 current_damping_force.zeros(n_size);
879 trial_nonviscous_force.zeros(n_size);
880 incre_nonviscous_force.zeros(n_size);
881 current_nonviscous_force.zeros(n_size);
885 trial_inertial_force.zeros(n_size);
886 incre_inertial_force.zeros(n_size);
887 current_inertial_force.zeros(n_size);
891 trial_displacement.zeros(n_size);
892 incre_displacement.zeros(n_size);
893 current_displacement.zeros(n_size);
897 trial_velocity.zeros(n_size);
898 incre_velocity.zeros(n_size);
899 current_velocity.zeros(n_size);
903 trial_acceleration.zeros(n_size);
904 incre_acceleration.zeros(n_size);
905 current_acceleration.zeros(n_size);
909 trial_temperature.zeros(n_size);
910 incre_temperature.zeros(n_size);
911 current_temperature.zeros(n_size);
915 trial_constraint_resistance.zeros(n_size);
916 current_constraint_resistance.zeros(n_size);
924 if(!nonviscous)
return;
926 global_nonviscous = get_matrix_container();
934 global_geometry = get_matrix_container();
938 eigenvalue.zeros(n_size);
939 eigenvector.zeros(n_size, n_size);
950 auxiliary_encoding.zeros(n_mpc);
951 auxiliary_resistance.zeros(n_mpc);
952 auxiliary_load.zeros(n_mpc);
953 auxiliary_stiffness.zeros(n_size, n_mpc);
1047 auto se = std::async([&] {
if(!trial_resistance.empty() && !incre_displacement.empty()) strain_energy += .5 * dot(trial_resistance + current_resistance, incre_displacement); });
1048 auto ke = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) kinetic_energy = .5 * dot(global_mass * trial_velocity, trial_velocity); });
1049 auto ve = std::async([&] {
if(!trial_damping_force.empty() && !incre_displacement.empty()) viscous_energy += .5 * dot(trial_damping_force + current_damping_force, incre_displacement); });
1050 auto ne = std::async([&] {
if(!trial_nonviscous_force.empty() && !incre_displacement.empty()) nonviscous_energy += .5 * dot(trial_nonviscous_force + current_nonviscous_force, incre_displacement); });
1051 auto ce = std::async([&] {
if(!trial_displacement.empty() && !incre_resistance.empty()) complementary_energy += .5 * dot(trial_displacement + current_displacement, incre_resistance); });
1052 auto mm = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) momentum = global_mass * trial_velocity; });
1063 strain_energy =
T(0);
1064 kinetic_energy =
T(0);
1065 viscous_energy =
T(0);
1066 nonviscous_energy =
T(0);
1067 complementary_energy =
T(0);
1077 commit_load_factor();
1079 commit_settlement();
1080 commit_resistance();
1081 commit_damping_force();
1082 commit_nonviscous_force();
1083 commit_inertial_force();
1084 commit_displacement();
1086 commit_acceleration();
1087 commit_temperature();
1088 commit_auxiliary_resistance();
1092 current_time = trial_time;
1097 if(trial_load_factor.is_empty())
return;
1098 current_load_factor = trial_load_factor;
1099 incre_load_factor.zeros();
1103 if(trial_load.is_empty())
return;
1104 current_load = trial_load;
1109 if(trial_settlement.is_empty())
return;
1110 current_settlement = trial_settlement;
1111 incre_settlement.zeros();
1115 if(trial_resistance.is_empty())
return;
1116 current_resistance = trial_resistance;
1117 incre_resistance.zeros();
1121 if(trial_damping_force.is_empty())
return;
1122 current_damping_force = trial_damping_force;
1123 incre_damping_force.zeros();
1127 if(trial_nonviscous_force.is_empty())
return;
1128 current_nonviscous_force = trial_nonviscous_force;
1129 incre_nonviscous_force.zeros();
1133 if(trial_inertial_force.is_empty())
return;
1134 current_inertial_force = trial_inertial_force;
1135 incre_inertial_force.zeros();
1139 if(trial_displacement.is_empty())
return;
1140 current_displacement = trial_displacement;
1141 incre_displacement.zeros();
1145 if(trial_velocity.is_empty())
return;
1146 current_velocity = trial_velocity;
1147 incre_velocity.zeros();
1151 if(trial_acceleration.is_empty())
return;
1152 current_acceleration = trial_acceleration;
1153 incre_acceleration.zeros();
1157 if(trial_temperature.is_empty())
return;
1158 current_temperature = trial_temperature;
1159 incre_temperature.zeros();
1163 if(trial_constraint_resistance.is_empty())
return;
1164 current_constraint_resistance = trial_constraint_resistance;
1169 commit_pre_load_factor();
1171 commit_pre_settlement();
1172 commit_pre_resistance();
1173 commit_pre_damping_force();
1174 commit_pre_nonviscous_force();
1175 commit_pre_inertial_force();
1176 commit_pre_displacement();
1177 commit_pre_velocity();
1178 commit_pre_acceleration();
1179 commit_pre_temperature();
1207 access::rw(initialized) =
false;
1214 clear_load_factor();
1218 clear_damping_force();
1219 clear_nonviscous_force();
1220 clear_inertial_force();
1221 clear_displacement();
1223 clear_acceleration();
1224 clear_temperature();
1225 clear_auxiliary_resistance();
1231 if(!pre_load_factor.is_empty()) pre_load_factor.zeros();
1232 if(!trial_load_factor.is_empty()) trial_load_factor.zeros();
1233 if(!incre_load_factor.is_empty()) incre_load_factor.zeros();
1234 if(!current_load_factor.is_empty()) current_load_factor.zeros();
1238 if(!pre_load.is_empty()) pre_load.zeros();
1239 if(!trial_load.is_empty()) trial_load.zeros();
1240 if(!incre_load.is_empty()) incre_load.zeros();
1241 if(!current_load.is_empty()) current_load.zeros();
1245 if(!pre_settlement.is_empty()) pre_settlement.zeros();
1246 if(!trial_settlement.is_empty()) trial_settlement.zeros();
1247 if(!incre_settlement.is_empty()) incre_settlement.zeros();
1248 if(!current_settlement.is_empty()) current_settlement.zeros();
1252 if(!pre_resistance.is_empty()) pre_resistance.zeros();
1253 if(!trial_resistance.is_empty()) trial_resistance.zeros();
1254 if(!incre_resistance.is_empty()) incre_resistance.zeros();
1255 if(!current_resistance.is_empty()) current_resistance.zeros();
1259 if(!pre_damping_force.is_empty()) pre_damping_force.zeros();
1260 if(!trial_damping_force.is_empty()) trial_damping_force.zeros();
1261 if(!incre_damping_force.is_empty()) incre_damping_force.zeros();
1262 if(!current_damping_force.is_empty()) current_damping_force.zeros();
1266 if(!pre_nonviscous_force.is_empty()) pre_nonviscous_force.zeros();
1267 if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force.zeros();
1268 if(!incre_nonviscous_force.is_empty()) incre_nonviscous_force.zeros();
1269 if(!current_nonviscous_force.is_empty()) current_nonviscous_force.zeros();
1273 if(!pre_inertial_force.is_empty()) pre_inertial_force.zeros();
1274 if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros();
1275 if(!incre_inertial_force.is_empty()) incre_inertial_force.zeros();
1276 if(!current_inertial_force.is_empty()) current_inertial_force.zeros();
1280 if(!pre_displacement.is_empty()) pre_displacement.zeros();
1281 if(!trial_displacement.is_empty()) trial_displacement.zeros();
1282 if(!incre_displacement.is_empty()) incre_displacement.zeros();
1283 if(!current_displacement.is_empty()) current_displacement.zeros();
1287 if(!pre_velocity.is_empty()) pre_velocity.zeros();
1288 if(!trial_velocity.is_empty()) trial_velocity.zeros();
1289 if(!incre_velocity.is_empty()) incre_velocity.zeros();
1290 if(!current_velocity.is_empty()) current_velocity.zeros();
1294 if(!pre_acceleration.is_empty()) pre_acceleration.zeros();
1295 if(!trial_acceleration.is_empty()) trial_acceleration.zeros();
1296 if(!incre_acceleration.is_empty()) incre_acceleration.zeros();
1297 if(!current_acceleration.is_empty()) current_acceleration.zeros();
1301 if(!pre_temperature.is_empty()) pre_temperature.zeros();
1302 if(!trial_temperature.is_empty()) trial_temperature.zeros();
1303 if(!incre_temperature.is_empty()) incre_temperature.zeros();
1304 if(!current_temperature.is_empty()) current_temperature.zeros();
1308 if(!trial_constraint_resistance.is_empty()) trial_constraint_resistance.zeros();
1309 if(!current_constraint_resistance.is_empty()) current_constraint_resistance.zeros();
1316 reset_load_factor();
1320 reset_damping_force();
1321 reset_nonviscous_force();
1322 reset_inertial_force();
1323 reset_displacement();
1325 reset_acceleration();
1326 reset_temperature();
1327 reset_auxiliary_resistance();
1331 trial_time = current_time;
1336 if(trial_load_factor.is_empty())
return;
1337 trial_load_factor = current_load_factor;
1338 incre_load_factor.zeros();
1342 if(trial_load.is_empty())
return;
1343 trial_load = current_load;
1348 if(trial_settlement.is_empty())
return;
1349 trial_settlement = current_settlement;
1350 incre_settlement.zeros();
1354 if(trial_resistance.is_empty())
return;
1355 trial_resistance = current_resistance;
1356 incre_resistance.zeros();
1360 if(trial_damping_force.is_empty())
return;
1361 trial_damping_force = current_damping_force;
1362 incre_damping_force.zeros();
1366 if(trial_nonviscous_force.is_empty())
return;
1367 trial_nonviscous_force = current_nonviscous_force;
1368 incre_nonviscous_force.zeros();
1372 if(trial_inertial_force.is_empty())
return;
1373 trial_inertial_force = current_inertial_force;
1374 incre_inertial_force.zeros();
1378 if(trial_displacement.is_empty())
return;
1379 trial_displacement = current_displacement;
1380 incre_displacement.zeros();
1384 if(trial_velocity.is_empty())
return;
1385 trial_velocity = current_velocity;
1386 incre_velocity.zeros();
1390 if(trial_acceleration.is_empty())
return;
1391 trial_acceleration = current_acceleration;
1392 incre_acceleration.zeros();
1396 if(trial_temperature.is_empty())
return;
1397 trial_temperature = current_temperature;
1398 incre_temperature.zeros();
1402 if(trial_constraint_resistance.is_empty())
return;
1403 trial_constraint_resistance = current_constraint_resistance;
1407 if(!eigenvalue.is_empty()) eigenvalue.zeros();
1408 if(!eigenvector.is_empty()) eigenvector.zeros();
1423 auxiliary_load.reset();
1424 auxiliary_stiffness.set_size(n_size, 0);
1425 auxiliary_resistance.reset();
1426 auxiliary_encoding.reset();
1430 global_mass =
nullptr;
1431 global_damping =
nullptr;
1432 global_nonviscous =
nullptr;
1433 global_stiffness =
nullptr;
1434 global_geometry =
nullptr;
1438 if(ER.is_empty())
return;
1439 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_resistance(EI(I)) += ER(I);
1443 if(ER.is_empty())
return;
1444 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_damping_force(EI(I)) += ER(I);
1448 if(ER.is_empty())
return;
1449 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_nonviscous_force(EI(I)) += ER(I);
1453 if(ER.is_empty())
return;
1454 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_inertial_force(EI(I)) += ER(I);
1458 if(EM.is_empty())
return;
1461 else for(
auto I = 0llu; I < EI.n_elem; ++I)
for(
auto J = 0llu; J < EI.n_elem; ++J) GM->unsafe_at(EI(J), EI(I)) += EM(J, I);
1464template<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); }
1466template<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); }
1468template<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); }
1470template<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); }
1472template<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); }
1475 if(EK.is_empty())
return;
1476 for(
auto I = EK.begin(); I != EK.end(); ++I) global_stiffness->at(EI(I.row()), EI(I.col())) += *I;
1480 suanpan_info(
"A Factory object with size of {}.\n", n_size);
1484 switch(storage_type) {
1487 if(contain_solver_type(
SolverType::CUDA))
return std::make_unique<FullMatCUDA<T>>(n_size, n_size);
1489 return std::make_unique<FullMat<T>>(n_size, n_size);
1495 return std::make_unique<BandMat<T>>(n_size, n_lobw, n_upbw);
1497 return std::make_unique<BandSymmMat<T>>(n_size, n_lobw);
1499 return std::make_unique<SymmPackMat<T>>(n_size);
1514 return std::make_unique<SparseMatSuperLU<T>>(n_size, n_size, n_elem);
1517 if(contain_solver_type(
SolverType::FGMRES))
return std::make_unique<SparseSymmMatFGMRES<T>>(n_size, n_size, n_elem);
1519 return std::make_unique<SparseSymmMatMUMPS<T>>(n_size, n_size, n_elem);
1521 throw invalid_argument(
"need a proper storage scheme");
1526 auto global_mat = get_basic_container();
1528 global_mat->set_solver_setting(setting);
1859 incre_time = trial_time - current_time;
1863 trial_load_factor = L;
1864 incre_load_factor = trial_load_factor - current_load_factor;
1869 incre_load = trial_load - current_load;
1873 trial_settlement =
S;
1874 incre_settlement = trial_settlement - current_settlement;
1878 trial_resistance = R;
1879 incre_resistance = trial_resistance - current_resistance;
1883 trial_damping_force = R;
1884 incre_damping_force = trial_damping_force - current_damping_force;
1888 trial_nonviscous_force = R;
1889 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
1893 trial_inertial_force = R;
1894 incre_inertial_force = trial_inertial_force - current_inertial_force;
1898 trial_displacement = D;
1899 incre_displacement = trial_displacement - current_displacement;
1904 incre_velocity = trial_velocity - current_velocity;
1908 trial_acceleration =
A;
1909 incre_acceleration = trial_acceleration - current_acceleration;
1913 trial_temperature =
M;
1914 incre_temperature = trial_temperature - current_temperature;
1919 trial_time = current_time + incre_time;
1923 incre_load_factor = L;
1924 trial_load_factor = current_load_factor + incre_load_factor;
1929 trial_load = current_load + incre_load;
1933 incre_settlement =
S;
1934 trial_settlement = current_settlement + incre_settlement;
1938 incre_resistance = R;
1939 trial_resistance = current_resistance + incre_resistance;
1943 incre_damping_force = R;
1944 trial_damping_force = current_damping_force + incre_damping_force;
1948 incre_nonviscous_force = R;
1949 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
1953 incre_inertial_force = R;
1954 trial_inertial_force = current_inertial_force + incre_inertial_force;
1958 incre_displacement = D;
1959 trial_displacement = current_displacement + incre_displacement;
1964 trial_velocity = current_velocity + incre_velocity;
1968 incre_acceleration =
A;
1969 trial_acceleration = current_acceleration + incre_acceleration;
1973 incre_temperature =
M;
1974 trial_temperature = current_temperature + incre_temperature;
1978 trial_time = current_time =
M;
1983 trial_load_factor = current_load_factor = L;
1984 incre_load_factor.zeros();
1988 trial_load = current_load = L;
1993 trial_settlement = current_settlement =
S;
1994 incre_settlement.zeros();
1998 trial_resistance = current_resistance = R;
1999 incre_resistance.zeros();
2003 trial_damping_force = current_damping_force = R;
2004 incre_damping_force.zeros();
2008 trial_nonviscous_force = current_nonviscous_force = R;
2009 incre_nonviscous_force.zeros();
2013 trial_inertial_force = current_inertial_force = R;
2014 incre_inertial_force.zeros();
2018 trial_displacement = current_displacement = D;
2019 incre_displacement.zeros();
2023 trial_velocity = current_velocity =
V;
2024 incre_velocity.zeros();
2028 trial_acceleration = current_acceleration =
A;
2029 incre_acceleration.zeros();
2033 trial_temperature = current_temperature =
M;
2034 incre_temperature.zeros();
2039 incre_time = trial_time - current_time;
2043 trial_load_factor += L;
2044 incre_load_factor = trial_load_factor - current_load_factor;
2049 incre_load = trial_load - current_load;
2053 trial_settlement +=
S;
2054 incre_settlement = trial_settlement - current_settlement;
2058 trial_resistance += R;
2059 incre_resistance = trial_resistance - current_resistance;
2063 trial_damping_force += R;
2064 incre_damping_force = trial_damping_force - current_damping_force;
2068 trial_nonviscous_force += R;
2069 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
2073 trial_inertial_force += R;
2074 incre_inertial_force = trial_inertial_force - current_inertial_force;
2078 trial_displacement += D;
2079 incre_displacement = trial_displacement - current_displacement;
2083 trial_velocity +=
V;
2084 incre_velocity = trial_velocity - current_velocity;
2088 trial_acceleration +=
A;
2089 incre_acceleration = trial_acceleration - current_acceleration;
2093 trial_temperature +=
M;
2094 incre_temperature = trial_temperature - current_temperature;
2099 trial_time = current_time + incre_time;
2103 incre_load_factor += L;
2104 trial_load_factor = current_load_factor + incre_load_factor;
2109 trial_load = current_load + incre_load;
2113 incre_settlement +=
S;
2114 trial_settlement = current_settlement + incre_settlement;
2118 incre_resistance += R;
2119 trial_resistance = current_resistance + incre_resistance;
2123 incre_damping_force += R;
2124 trial_damping_force = current_damping_force + incre_damping_force;
2128 incre_nonviscous_force += R;
2129 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
2133 incre_inertial_force += R;
2134 trial_inertial_force = current_inertial_force + incre_inertial_force;
2138 incre_displacement += D;
2139 trial_displacement = current_displacement + incre_displacement;
2143 incre_velocity +=
V;
2144 trial_velocity = current_velocity + incre_velocity;
2148 incre_acceleration +=
A;
2149 trial_acceleration = current_acceleration + incre_acceleration;
2153 incre_temperature +=
M;
2154 trial_temperature = current_temperature + incre_temperature;
2158 trial_time = current_time +=
M;
2163 trial_load_factor = current_load_factor += L;
2164 incre_load_factor.zeros();
2168 trial_load = current_load += L;
2173 trial_settlement = current_settlement +=
S;
2174 incre_settlement.zeros();
2178 trial_resistance = current_resistance += R;
2179 incre_resistance.zeros();
2183 trial_damping_force = current_damping_force += R;
2184 incre_damping_force.zeros();
2188 trial_nonviscous_force = current_nonviscous_force += R;
2189 incre_nonviscous_force.zeros();
2193 trial_inertial_force = current_inertial_force += R;
2194 incre_inertial_force.zeros();
2198 trial_displacement = current_displacement += D;
2199 incre_displacement.zeros();
2203 trial_velocity = current_velocity +=
V;
2204 incre_velocity.zeros();
2208 trial_acceleration = current_acceleration +=
A;
2209 incre_acceleration.zeros();
2213 trial_temperature = current_temperature +=
M;
2214 incre_temperature.zeros();
void reset(ExternalMaterialData *data, int *info)
Definition: ElasticExternal.cpp:74
A BandMatMAGMA class that holds matrices.
A BandMatSpike class that holds matrices.
Definition: BandMatSpike.hpp:36
A Factory class.
Definition: Factory.hpp:73
const bool initialized
Definition: Factory.hpp:192
A SparseMatCUDA class that holds matrices.
A SparseMatFGMRES class that holds matrices.
A SparseMatLis class that holds matrices.
Definition: SparseMatLis.hpp:36
A SparseMatMAGMA class that holds matrices.
A SparseMatMUMPS class that holds matrices.
Definition: SparseMatMUMPS.hpp:209
A SparseMatPARDISO class that holds matrices.
A SparseMatSuperLU class that holds matrices.
Definition: SparseMatSuperLU.hpp:37
void set_pre_inertial_force(const Col< T > &)
Definition: Factory.hpp:1655
T & modify_trial_time()
Definition: Factory.hpp:1761
void set_eigenvalue(const Col< T > &)
Definition: Factory.hpp:968
void clear_acceleration()
Definition: Factory.hpp:1293
void initialize_load()
Definition: Factory.hpp:854
void set_mpc(unsigned)
Definition: Factory.hpp:948
shared_ptr< MetaMat< T > > & modify_stiffness()
Definition: Factory.hpp:1539
Col< T > & modify_trial_inertial_force()
Definition: Factory.hpp:1775
Col< T > & modify_trial_nonviscous_force()
Definition: Factory.hpp:1773
void commit_temperature()
Definition: Factory.hpp:1156
bool is_sparse() const
Definition: Factory.hpp:760
void update_current_nonviscous_force(const Col< T > &)
Definition: Factory.hpp:2007
void set_incre_velocity(const Col< T > &)
Definition: Factory.hpp:1611
uword get_entry() const
Definition: Factory.hpp:714
void set_incre_temperature(const Col< T > &)
Definition: Factory.hpp:1615
void assemble_stiffness(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition: Factory.hpp:1470
void print() const
Definition: Factory.hpp:1479
void clear_resistance()
Definition: Factory.hpp:1251
void initialize_auxiliary_resistance()
Definition: Factory.hpp:914
void clear_load_factor()
Definition: Factory.hpp:1230
void set_incre_acceleration(const Col< T > &)
Definition: Factory.hpp:1613
int initialize()
Definition: Factory.hpp:791
Col< T > & modify_incre_load()
Definition: Factory.hpp:1789
const Col< T > & get_current_acceleration() const
Definition: Factory.hpp:1733
void update_incre_damping_force_by(const Col< T > &)
Definition: Factory.hpp:2122
const Col< T > & get_pre_damping_force() const
Definition: Factory.hpp:1747
void reset_displacement()
Definition: Factory.hpp:1377
void update_incre_temperature_by(const Col< T > &)
Definition: Factory.hpp:2152
void set_ninja(const Col< T > &)
Definition: Factory.hpp:942
Col< T > & modify_trial_damping_force()
Definition: Factory.hpp:1771
void update_trial_temperature_by(const Col< T > &)
Definition: Factory.hpp:2092
bool is_nlgeom() const
Definition: Factory.hpp:722
void update_incre_load_factor_by(const Col< T > &)
Definition: Factory.hpp:2102
const Mat< T > & get_eigenvector() const
Definition: Factory.hpp:1044
const Col< T > & get_trial_velocity() const
Definition: Factory.hpp:1683
const Col< T > & get_trial_resistance() const
Definition: Factory.hpp:1673
void update_trial_load_factor_by(const Col< T > &)
Definition: Factory.hpp:2042
const Col< T > & get_ninja() const
Definition: Factory.hpp:972
Col< T > & modify_trial_temperature()
Definition: Factory.hpp:1783
void set_pre_velocity(const Col< T > &)
Definition: Factory.hpp:1659
const Col< T > & get_current_load() const
Definition: Factory.hpp:1717
void set_trial_settlement(const Col< T > &)
Definition: Factory.hpp:1575
void set_incre_load_factor(const Col< T > &)
Definition: Factory.hpp:1595
void set_trial_time(T)
Definition: Factory.hpp:1569
Col< T > & modify_incre_resistance()
Definition: Factory.hpp:1793
void update_incre_load_by(const Col< T > &)
Definition: Factory.hpp:2107
void set_solver_type(SolverType)
Definition: Factory.hpp:732
const Col< T > & get_pre_load() const
Definition: Factory.hpp:1741
void commit_acceleration()
Definition: Factory.hpp:1150
AnalysisType get_analysis_type() const
Definition: Factory.hpp:750
void clear_nonviscous()
Definition: Factory.hpp:1415
void set_current_resistance(const Col< T > &)
Definition: Factory.hpp:1625
void update_incre_displacement(const Col< T > &)
Definition: Factory.hpp:1957
void set_incre_displacement(const Col< T > &)
Definition: Factory.hpp:1609
void update_current_acceleration_by(const Col< T > &)
Definition: Factory.hpp:2207
const uvec & get_auxiliary_encoding() const
Definition: Factory.hpp:980
void reset_auxiliary_resistance()
Definition: Factory.hpp:1401
Col< T > & modify_pre_displacement()
Definition: Factory.hpp:1849
void commit_resistance()
Definition: Factory.hpp:1114
const Col< T > & get_incre_inertial_force() const
Definition: Factory.hpp:1703
void set_storage_scheme(StorageScheme)
Definition: Factory.hpp:752
void update_trial_nonviscous_force_by(const Col< T > &)
Definition: Factory.hpp:2067
void initialize_damping()
Definition: Factory.hpp:921
void update_incre_velocity(const Col< T > &)
Definition: Factory.hpp:1962
Col< T > & modify_incre_acceleration()
Definition: Factory.hpp:1805
void initialize_geometry()
Definition: Factory.hpp:931
void update_incre_displacement_by(const Col< T > &)
Definition: Factory.hpp:2137
void update_current_damping_force_by(const Col< T > &)
Definition: Factory.hpp:2182
void assemble_mass(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition: Factory.hpp:1464
void set_trial_velocity(const Col< T > &)
Definition: Factory.hpp:1587
void update_current_resistance(const Col< T > &)
Definition: Factory.hpp:1997
void clear_inertial_force()
Definition: Factory.hpp:1272
Col< T > & modify_ninja()
Definition: Factory.hpp:1543
void set_pre_nonviscous_force(const Col< T > &)
Definition: Factory.hpp:1653
void update_trial_damping_force_by(const Col< T > &)
Definition: Factory.hpp:2062
unsigned get_mpc() const
Definition: Factory.hpp:976
Col< T > & modify_eigenvalue()
Definition: Factory.hpp:1565
const Col< T > & get_current_settlement() const
Definition: Factory.hpp:1719
const SolverSetting< double > & get_solver_setting() const
Definition: Factory.hpp:742
void commit_load_factor()
Definition: Factory.hpp:1096
std::mutex & get_damping_mutex()
Definition: Factory.hpp:1034
void update_trial_velocity_by(const Col< T > &)
Definition: Factory.hpp:2082
void update_current_load_by(const Col< T > &)
Definition: Factory.hpp:2167
SpCol< T > & modify_trial_constraint_resistance()
Definition: Factory.hpp:1561
const shared_ptr< MetaMat< T > > & get_damping() const
Definition: Factory.hpp:1008
void set_pre_settlement(const Col< T > &)
Definition: Factory.hpp:1647
void set_nlgeom(bool)
Definition: Factory.hpp:716
StorageScheme get_storage_scheme() const
Definition: Factory.hpp:758
void commit_inertial_force()
Definition: Factory.hpp:1132
void update_current_time(T)
Definition: Factory.hpp:1977
void initialize_resistance()
Definition: Factory.hpp:866
const Col< T > & get_current_damping_force() const
Definition: Factory.hpp:1723
void set_solver_setting(const SolverSetting< double > &)
Definition: Factory.hpp:740
void update_trial_displacement_by(const Col< T > &)
Definition: Factory.hpp:2077
void set_mass(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:958
void reset_velocity()
Definition: Factory.hpp:1383
const shared_ptr< MetaMat< T > > & get_nonviscous() const
Definition: Factory.hpp:1010
const Col< T > & get_trial_load_factor() const
Definition: Factory.hpp:1667
void set_current_load(const Col< T > &)
Definition: Factory.hpp:1621
std::mutex & get_trial_load_mutex()
Definition: Factory.hpp:1026
void initialize_stiffness()
Definition: Factory.hpp:929
void initialize_damping_force()
Definition: Factory.hpp:872
T get_current_time() const
Definition: Factory.hpp:1713
const Col< T > & get_pre_settlement() const
Definition: Factory.hpp:1743
void update_trial_temperature(const Col< T > &)
Definition: Factory.hpp:1912
void commit_velocity()
Definition: Factory.hpp:1144
void set_pre_time(T)
Definition: Factory.hpp:1641
T get_complementary_energy()
Definition: Factory.hpp:1002
void reset()
Definition: Factory.hpp:1429
const Col< T > & get_incre_displacement() const
Definition: Factory.hpp:1705
void set_current_damping_force(const Col< T > &)
Definition: Factory.hpp:1627
Col< T > & modify_current_nonviscous_force()
Definition: Factory.hpp:1821
void update_trial_acceleration(const Col< T > &)
Definition: Factory.hpp:1907
void set_current_time(T)
Definition: Factory.hpp:1617
const Col< T > & get_auxiliary_load() const
Definition: Factory.hpp:986
void commit_pre_settlement()
Definition: Factory.hpp:1188
Col< T > & modify_pre_settlement()
Definition: Factory.hpp:1839
const shared_ptr< MetaMat< T > > & get_mass() const
Definition: Factory.hpp:1006
void commit_status()
Definition: Factory.hpp:1071
void commit_pre_load_factor()
Definition: Factory.hpp:1184
const suanpan::set< uword > & get_reference_dof() const
Definition: Factory.hpp:785
std::pair< unsigned, unsigned > get_bandwidth() const
Definition: Factory.hpp:770
void set_incre_time(T)
Definition: Factory.hpp:1593
shared_ptr< MetaMat< T > > & modify_damping()
Definition: Factory.hpp:1535
Col< T > & modify_pre_velocity()
Definition: Factory.hpp:1851
std::mutex & get_reference_load_mutex()
Definition: Factory.hpp:1030
void assemble_damping(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition: Factory.hpp:1466
void update_incre_nonviscous_force(const Col< T > &)
Definition: Factory.hpp:1947
void update_trial_inertial_force(const Col< T > &)
Definition: Factory.hpp:1892
void set_current_velocity(const Col< T > &)
Definition: Factory.hpp:1635
void commit_displacement()
Definition: Factory.hpp:1138
void update_current_velocity_by(const Col< T > &)
Definition: Factory.hpp:2202
const Col< T > & get_incre_damping_force() const
Definition: Factory.hpp:1699
void update_trial_load_factor(const Col< T > &)
Definition: Factory.hpp:1862
void reset_load_factor()
Definition: Factory.hpp:1335
void clear_velocity()
Definition: Factory.hpp:1286
void update_current_load(const Col< T > &)
Definition: Factory.hpp:1987
void update_incre_time(T)
Definition: Factory.hpp:1917
void update_incre_settlement_by(const Col< T > &)
Definition: Factory.hpp:2112
unsigned get_reference_size() const
Definition: Factory.hpp:779
void update_current_acceleration(const Col< T > &)
Definition: Factory.hpp:2027
StorageScheme
Definition: Factory.hpp:52
void commit_pre_temperature()
Definition: Factory.hpp:1204
void commit_pre_status()
Definition: Factory.hpp:1167
void update_current_time_by(T)
Definition: Factory.hpp:2157
suanpan::set< uword > & modify_reference_dof()
Definition: Factory.hpp:1547
void set_trial_acceleration(const Col< T > &)
Definition: Factory.hpp:1589
void update_trial_damping_force(const Col< T > &)
Definition: Factory.hpp:1882
const Col< T > & get_incre_settlement() const
Definition: Factory.hpp:1695
void reset_inertial_force()
Definition: Factory.hpp:1371
void set_reference_dof(const suanpan::set< uword > &)
Definition: Factory.hpp:783
const Col< T > & get_momentum()
Definition: Factory.hpp:1004
void update_current_displacement(const Col< T > &)
Definition: Factory.hpp:2017
void clear_settlement()
Definition: Factory.hpp:1244
void set_pre_load(const Col< T > &)
Definition: Factory.hpp:1645
std::mutex & get_auxiliary_stiffness_mutex()
Definition: Factory.hpp:1022
T get_incre_time() const
Definition: Factory.hpp:1689
void commit_pre_damping_force()
Definition: Factory.hpp:1192
Col< T > & modify_current_inertial_force()
Definition: Factory.hpp:1823
const Col< T > & get_current_nonviscous_force() const
Definition: Factory.hpp:1725
T get_strain_energy()
Definition: Factory.hpp:994
void commit_pre_inertial_force()
Definition: Factory.hpp:1196
void update_trial_settlement(const Col< T > &)
Definition: Factory.hpp:1872
void set_trial_inertial_force(const Col< T > &)
Definition: Factory.hpp:1583
const Col< T > & get_eigenvalue() const
Definition: Factory.hpp:1042
void commit_pre_displacement()
Definition: Factory.hpp:1198
std::mutex & get_geometry_mutex()
Definition: Factory.hpp:1040
void set_incre_nonviscous_force(const Col< T > &)
Definition: Factory.hpp:1605
void commit_pre_acceleration()
Definition: Factory.hpp:1202
const Col< T > & get_incre_velocity() const
Definition: Factory.hpp:1707
Col< T > & modify_current_settlement()
Definition: Factory.hpp:1815
T get_trial_time() const
Definition: Factory.hpp:1665
void update_current_temperature_by(const Col< T > &)
Definition: Factory.hpp:2212
void set_geometry(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:966
void set_incre_load(const Col< T > &)
Definition: Factory.hpp:1597
void update_reference_size()
Definition: Factory.hpp:772
void set_pre_acceleration(const Col< T > &)
Definition: Factory.hpp:1661
void set_incre_inertial_force(const Col< T > &)
Definition: Factory.hpp:1607
const Col< T > & get_trial_nonviscous_force() const
Definition: Factory.hpp:1677
T get_kinetic_energy()
Definition: Factory.hpp:996
void set_current_settlement(const Col< T > &)
Definition: Factory.hpp:1623
void update_trial_settlement_by(const Col< T > &)
Definition: Factory.hpp:2052
void initialize_inertial_force()
Definition: Factory.hpp:884
void set_pre_resistance(const Col< T > &)
Definition: Factory.hpp:1649
void commit_load()
Definition: Factory.hpp:1102
void update_current_nonviscous_force_by(const Col< T > &)
Definition: Factory.hpp:2187
void update_trial_acceleration_by(const Col< T > &)
Definition: Factory.hpp:2087
const Col< T > & get_pre_acceleration() const
Definition: Factory.hpp:1757
void update_incre_acceleration_by(const Col< T > &)
Definition: Factory.hpp:2147
void commit_pre_nonviscous_force()
Definition: Factory.hpp:1194
void commit_pre_load()
Definition: Factory.hpp:1186
void commit_pre_velocity()
Definition: Factory.hpp:1200
void update_trial_resistance_by(const Col< T > &)
Definition: Factory.hpp:2057
Col< T > & modify_current_resistance()
Definition: Factory.hpp:1817
AnalysisType
Definition: Factory.hpp:43
bool is_nonviscous() const
Definition: Factory.hpp:730
void commit_pre_time()
Definition: Factory.hpp:1182
shared_ptr< MetaMat< T > > & modify_geometry()
Definition: Factory.hpp:1541
void commit_auxiliary_resistance()
Definition: Factory.hpp:1162
void update_current_settlement(const Col< T > &)
Definition: Factory.hpp:1992
void update_trial_load(const Col< T > &)
Definition: Factory.hpp:1867
Col< T > & modify_pre_nonviscous_force()
Definition: Factory.hpp:1845
void update_incre_load(const Col< T > &)
Definition: Factory.hpp:1927
void update_trial_time(T)
Definition: Factory.hpp:1857
void clear_nonviscous_force()
Definition: Factory.hpp:1265
const shared_ptr< MetaMat< T > > & get_stiffness() const
Definition: Factory.hpp:1012
void commit_settlement()
Definition: Factory.hpp:1108
void set_trial_nonviscous_force(const Col< T > &)
Definition: Factory.hpp:1581
const Col< T > & get_auxiliary_lambda() const
Definition: Factory.hpp:982
void reset_load()
Definition: Factory.hpp:1341
void reset_damping_force()
Definition: Factory.hpp:1359
void update_current_inertial_force_by(const Col< T > &)
Definition: Factory.hpp:2192
void set_trial_temperature(const Col< T > &)
Definition: Factory.hpp:1591
std::mutex & get_auxiliary_encoding_mutex()
Definition: Factory.hpp:1016
Col< T > & modify_trial_load()
Definition: Factory.hpp:1765
SolverType
Definition: Factory.hpp:61
void assemble_damping_force(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1442
void set_current_nonviscous_force(const Col< T > &)
Definition: Factory.hpp:1629
const Col< T > & get_pre_displacement() const
Definition: Factory.hpp:1753
void set_sub_solver_type(SolverType)
Definition: Factory.hpp:734
const Col< T > & get_current_inertial_force() const
Definition: Factory.hpp:1727
std::mutex & get_mass_mutex()
Definition: Factory.hpp:1032
void set_nonviscous(bool)
Definition: Factory.hpp:724
const Col< T > & get_pre_load_factor() const
Definition: Factory.hpp:1739
Col< T > & modify_current_acceleration()
Definition: Factory.hpp:1829
const Col< T > & get_trial_displacement() const
Definition: Factory.hpp:1681
void update_trial_velocity(const Col< T > &)
Definition: Factory.hpp:1902
void update_current_temperature(const Col< T > &)
Definition: Factory.hpp:2032
void reset_temperature()
Definition: Factory.hpp:1395
std::mutex & get_auxiliary_resistance_mutex()
Definition: Factory.hpp:1018
void set_current_acceleration(const Col< T > &)
Definition: Factory.hpp:1637
T get_nonviscous_energy()
Definition: Factory.hpp:1000
void update_current_settlement_by(const Col< T > &)
Definition: Factory.hpp:2172
void initialize_settlement()
Definition: Factory.hpp:860
void clear_damping()
Definition: Factory.hpp:1413
const Col< T > & get_incre_nonviscous_force() const
Definition: Factory.hpp:1701
const Col< T > & get_incre_load_factor() const
Definition: Factory.hpp:1691
void clear_energy()
Definition: Factory.hpp:1062
const SpMat< T > & get_reference_load() const
Definition: Factory.hpp:978
void initialize_displacement()
Definition: Factory.hpp:890
Col< T > & modify_auxiliary_load()
Definition: Factory.hpp:1557
void reset_time()
Definition: Factory.hpp:1330
const Col< T > & get_current_displacement() const
Definition: Factory.hpp:1729
Col< T > & modify_current_velocity()
Definition: Factory.hpp:1827
unsigned get_size() const
Definition: Factory.hpp:707
T & modify_current_time()
Definition: Factory.hpp:1809
void reset_settlement()
Definition: Factory.hpp:1347
void clear_damping_force()
Definition: Factory.hpp:1258
void set_analysis_type(AnalysisType)
Definition: Factory.hpp:744
const Col< T > & get_incre_load() const
Definition: Factory.hpp:1693
void initialize_nonviscous_force()
Definition: Factory.hpp:878
void set_entry(uword)
Definition: Factory.hpp:709
Col< T > & modify_pre_damping_force()
Definition: Factory.hpp:1843
const Col< T > & get_incre_acceleration() const
Definition: Factory.hpp:1709
T get_pre_time() const
Definition: Factory.hpp:1737
void clear_geometry()
Definition: Factory.hpp:1419
T get_viscous_energy()
Definition: Factory.hpp:998
std::mutex & get_trial_constraint_resistance_mutex()
Definition: Factory.hpp:1024
const Col< T > & get_current_temperature() const
Definition: Factory.hpp:1735
void update_incre_time_by(T)
Definition: Factory.hpp:2097
void assemble_nonviscous(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition: Factory.hpp:1468
void set_reference_size(unsigned)
Definition: Factory.hpp:774
Col< T > & modify_trial_settlement()
Definition: Factory.hpp:1767
void initialize_temperature()
Definition: Factory.hpp:908
void set_current_displacement(const Col< T > &)
Definition: Factory.hpp:1633
void update_reference_dof(const uvec &)
Definition: Factory.hpp:781
const Col< T > & get_trial_inertial_force() const
Definition: Factory.hpp:1679
void set_current_inertial_force(const Col< T > &)
Definition: Factory.hpp:1631
SpCol< T > & modify_current_constraint_resistance()
Definition: Factory.hpp:1563
Col< T > & modify_incre_load_factor()
Definition: Factory.hpp:1787
void set_trial_load(const Col< T > &)
Definition: Factory.hpp:1573
Col< T > & modify_auxiliary_resistance()
Definition: Factory.hpp:1555
Col< T > & modify_pre_resistance()
Definition: Factory.hpp:1841
Col< T > & modify_incre_temperature()
Definition: Factory.hpp:1807
T & modify_pre_time()
Definition: Factory.hpp:1833
void update_incre_temperature(const Col< T > &)
Definition: Factory.hpp:1972
shared_ptr< MetaMat< T > > & modify_nonviscous()
Definition: Factory.hpp:1537
void update_current_velocity(const Col< T > &)
Definition: Factory.hpp:2022
void set_error(T)
Definition: Factory.hpp:787
Col< T > & modify_incre_nonviscous_force()
Definition: Factory.hpp:1797
void assemble_geometry(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition: Factory.hpp:1472
const Col< T > & get_trial_settlement() const
Definition: Factory.hpp:1671
void set_eigenvector(const Mat< T > &)
Definition: Factory.hpp:970
void initialize_load_factor()
Definition: Factory.hpp:844
Col< T > & modify_incre_inertial_force()
Definition: Factory.hpp:1799
const Col< T > & get_trial_load() const
Definition: Factory.hpp:1669
bool contain_sub_solver_type(SolverType) const
Definition: Factory.hpp:738
uvec & modify_auxiliary_encoding()
Definition: Factory.hpp:1551
void update_current_displacement_by(const Col< T > &)
Definition: Factory.hpp:2197
void set_trial_resistance(const Col< T > &)
Definition: Factory.hpp:1577
void commit_nonviscous_force()
Definition: Factory.hpp:1126
void set_pre_load_factor(const Col< T > &)
Definition: Factory.hpp:1643
void update_current_damping_force(const Col< T > &)
Definition: Factory.hpp:2002
Col< T > & modify_current_damping_force()
Definition: Factory.hpp:1819
void update_current_load_factor(const Col< T > &)
Definition: Factory.hpp:1982
void commit_energy()
Definition: Factory.hpp:1046
void commit_damping_force()
Definition: Factory.hpp:1120
T get_error() const
Definition: Factory.hpp:789
void update_trial_time_by(T)
Definition: Factory.hpp:2037
void update_incre_acceleration(const Col< T > &)
Definition: Factory.hpp:1967
const SpMat< T > & get_auxiliary_stiffness() const
Definition: Factory.hpp:988
void assemble_inertial_force(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1452
void clear_status()
Definition: Factory.hpp:1206
void set_bandwidth(unsigned, unsigned)
Definition: Factory.hpp:762
void update_incre_velocity_by(const Col< T > &)
Definition: Factory.hpp:2142
const Col< T > & get_current_load_factor() const
Definition: Factory.hpp:1715
void commit_time()
Definition: Factory.hpp:1091
void clear_mass()
Definition: Factory.hpp:1411
const Col< T > & get_pre_inertial_force() const
Definition: Factory.hpp:1751
void commit_pre_resistance()
Definition: Factory.hpp:1190
void update_trial_nonviscous_force(const Col< T > &)
Definition: Factory.hpp:1887
void reset_resistance()
Definition: Factory.hpp:1353
Col< T > & modify_pre_temperature()
Definition: Factory.hpp:1855
std::mutex & get_auxiliary_load_mutex()
Definition: Factory.hpp:1020
const Col< T > & get_trial_acceleration() const
Definition: Factory.hpp:1685
void assemble_resistance(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1437
void set_incre_damping_force(const Col< T > &)
Definition: Factory.hpp:1603
Col< T > & modify_incre_displacement()
Definition: Factory.hpp:1801
Col< T > & modify_pre_load()
Definition: Factory.hpp:1837
const SpCol< T > & get_trial_constraint_resistance() const
Definition: Factory.hpp:990
void update_incre_damping_force(const Col< T > &)
Definition: Factory.hpp:1942
const Col< T > & get_pre_velocity() const
Definition: Factory.hpp:1755
const Col< T > & get_current_resistance() const
Definition: Factory.hpp:1721
void assemble_nonviscous_force(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1447
void initialize_velocity()
Definition: Factory.hpp:896
std::mutex & get_stiffness_mutex()
Definition: Factory.hpp:1038
Col< T > & modify_pre_acceleration()
Definition: Factory.hpp:1853
void update_incre_inertial_force_by(const Col< T > &)
Definition: Factory.hpp:2132
const Col< T > & get_current_velocity() const
Definition: Factory.hpp:1731
void update_incre_load_factor(const Col< T > &)
Definition: Factory.hpp:1922
SpMat< T > & modify_auxiliary_stiffness()
Definition: Factory.hpp:1559
void set_incre_resistance(const Col< T > &)
Definition: Factory.hpp:1601
void initialize_nonviscous()
Definition: Factory.hpp:923
Col< T > & modify_trial_velocity()
Definition: Factory.hpp:1779
Col< T > & modify_trial_displacement()
Definition: Factory.hpp:1777
const Col< T > & get_pre_temperature() const
Definition: Factory.hpp:1759
Col< T > & modify_trial_acceleration()
Definition: Factory.hpp:1781
void clear_load()
Definition: Factory.hpp:1237
const Col< T > & get_incre_temperature() const
Definition: Factory.hpp:1711
Col< T > & modify_pre_load_factor()
Definition: Factory.hpp:1835
Factory(unsigned=0, AnalysisType=AnalysisType::NONE, StorageScheme=StorageScheme::FULL)
Definition: Factory.hpp:696
Col< T > & modify_trial_load_factor()
Definition: Factory.hpp:1763
void set_size(unsigned)
Definition: Factory.hpp:701
void update_trial_displacement(const Col< T > &)
Definition: Factory.hpp:1897
const Col< T > & get_incre_resistance() const
Definition: Factory.hpp:1697
Col< T > & modify_trial_resistance()
Definition: Factory.hpp:1769
const Col< T > & get_sushi() const
Definition: Factory.hpp:974
const Col< T > & get_auxiliary_resistance() const
Definition: Factory.hpp:984
const Col< T > & get_trial_damping_force() const
Definition: Factory.hpp:1675
Mat< T > & modify_eigenvector()
Definition: Factory.hpp:1567
void update_current_resistance_by(const Col< T > &)
Definition: Factory.hpp:2177
void set_pre_temperature(const Col< T > &)
Definition: Factory.hpp:1663
void update_trial_load_by(const Col< T > &)
Definition: Factory.hpp:2047
Col< T > & modify_auxiliary_lambda()
Definition: Factory.hpp:1553
const SpCol< T > & get_current_constraint_resistance() const
Definition: Factory.hpp:992
void clear_auxiliary_resistance()
Definition: Factory.hpp:1307
const Col< T > & get_pre_nonviscous_force() const
Definition: Factory.hpp:1749
bool contain_solver_type(SolverType) const
Definition: Factory.hpp:736
void update_incre_resistance_by(const Col< T > &)
Definition: Factory.hpp:2117
void update_sushi_by(const Col< T > &)
Definition: Factory.hpp:946
void set_incre_settlement(const Col< T > &)
Definition: Factory.hpp:1599
Col< T > & modify_pre_inertial_force()
Definition: Factory.hpp:1847
void set_sushi(const Col< T > &)
Definition: Factory.hpp:944
shared_ptr< MetaMat< T > > & modify_mass()
Definition: Factory.hpp:1533
void update_incre_settlement(const Col< T > &)
Definition: Factory.hpp:1932
void set_pre_displacement(const Col< T > &)
Definition: Factory.hpp:1657
std::mutex & get_nonviscous_mutex()
Definition: Factory.hpp:1036
void set_current_load_factor(const Col< T > &)
Definition: Factory.hpp:1619
void set_trial_displacement(const Col< T > &)
Definition: Factory.hpp:1585
void update_trial_resistance(const Col< T > &)
Definition: Factory.hpp:1877
Col< T > & modify_current_load_factor()
Definition: Factory.hpp:1811
void clear_eigen()
Definition: Factory.hpp:1406
void clear_auxiliary()
Definition: Factory.hpp:1421
void set_reference_load(const SpMat< T > &)
Definition: Factory.hpp:956
T & modify_incre_time()
Definition: Factory.hpp:1785
void update_incre_resistance(const Col< T > &)
Definition: Factory.hpp:1937
SpMat< T > & modify_reference_load()
Definition: Factory.hpp:1549
Col< T > & modify_incre_damping_force()
Definition: Factory.hpp:1795
Col< T > & modify_incre_settlement()
Definition: Factory.hpp:1791
void update_current_load_factor_by(const Col< T > &)
Definition: Factory.hpp:2162
void set_trial_load_factor(const Col< T > &)
Definition: Factory.hpp:1571
void initialize_eigen()
Definition: Factory.hpp:937
void update_incre_inertial_force(const Col< T > &)
Definition: Factory.hpp:1952
void clear_time()
Definition: Factory.hpp:1228
void set_stiffness(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:964
void clear_displacement()
Definition: Factory.hpp:1279
const shared_ptr< MetaMat< T > > & get_geometry() const
Definition: Factory.hpp:1014
Col< T > & modify_current_load()
Definition: Factory.hpp:1813
void reset_status()
Definition: Factory.hpp:1312
Col< T > & modify_current_temperature()
Definition: Factory.hpp:1831
void update_current_inertial_force(const Col< T > &)
Definition: Factory.hpp:2012
const Col< T > & get_trial_temperature() const
Definition: Factory.hpp:1687
void set_trial_damping_force(const Col< T > &)
Definition: Factory.hpp:1579
std::mutex & get_trial_settlement_mutex()
Definition: Factory.hpp:1028
void initialize_mass()
Definition: Factory.hpp:919
Col< T > & modify_sushi()
Definition: Factory.hpp:1545
void set_pre_damping_force(const Col< T > &)
Definition: Factory.hpp:1651
void clear_temperature()
Definition: Factory.hpp:1300
Col< T > & modify_current_displacement()
Definition: Factory.hpp:1825
void initialize_acceleration()
Definition: Factory.hpp:902
void update_trial_inertial_force_by(const Col< T > &)
Definition: Factory.hpp:2072
void set_current_temperature(const Col< T > &)
Definition: Factory.hpp:1639
Col< T > & modify_incre_velocity()
Definition: Factory.hpp:1803
void set_damping(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:960
void reset_acceleration()
Definition: Factory.hpp:1389
void reset_nonviscous_force()
Definition: Factory.hpp:1365
const Col< T > & get_pre_resistance() const
Definition: Factory.hpp:1745
void clear_stiffness()
Definition: Factory.hpp:1417
void update_incre_nonviscous_force_by(const Col< T > &)
Definition: Factory.hpp:2127
void error(const std::string_view file_name, const int line, const std::string_view format_str, const T &... args)
Definition: suanPan.h:234
std::set< T > set
Definition: container.h:54
#define suanpan_info
Definition: suanPan.h:305