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;
101 SpMat<T> reference_load;
103 uvec auxiliary_encoding;
104 Col<T> auxiliary_lambda;
105 Col<T> auxiliary_resistance;
106 Col<T> auxiliary_load;
107 SpMat<T> auxiliary_stiffness;
109 SpCol<T> trial_constraint_resistance;
110 SpCol<T> current_constraint_resistance;
114 T current_time =
T(0);
117 T strain_energy =
T(0);
118 T kinetic_energy =
T(0);
119 T viscous_energy =
T(0);
120 T nonviscous_energy =
T(0);
121 T complementary_energy =
T(0);
124 Col<T> trial_load_factor;
126 Col<T> trial_settlement;
127 Col<T> trial_resistance;
128 Col<T> trial_damping_force;
129 Col<T> trial_nonviscous_force;
130 Col<T> trial_inertial_force;
131 Col<T> trial_displacement;
132 Col<T> trial_velocity;
133 Col<T> trial_acceleration;
134 Col<T> trial_temperature;
136 Col<T> incre_load_factor;
138 Col<T> incre_settlement;
139 Col<T> incre_resistance;
140 Col<T> incre_damping_force;
141 Col<T> incre_nonviscous_force;
142 Col<T> incre_inertial_force;
143 Col<T> incre_displacement;
144 Col<T> incre_velocity;
145 Col<T> incre_acceleration;
146 Col<T> incre_temperature;
148 Col<T> current_load_factor;
150 Col<T> current_settlement;
151 Col<T> current_resistance;
152 Col<T> current_damping_force;
153 Col<T> current_nonviscous_force;
154 Col<T> current_inertial_force;
155 Col<T> current_displacement;
156 Col<T> current_velocity;
157 Col<T> current_acceleration;
158 Col<T> current_temperature;
160 Col<T> pre_load_factor;
162 Col<T> pre_settlement;
163 Col<T> pre_resistance;
164 Col<T> pre_damping_force;
165 Col<T> pre_nonviscous_force;
166 Col<T> pre_inertial_force;
167 Col<T> pre_displacement;
169 Col<T> pre_acceleration;
170 Col<T> pre_temperature;
172 shared_ptr<MetaMat<T>> global_mass =
nullptr;
173 shared_ptr<MetaMat<T>> global_damping =
nullptr;
174 shared_ptr<MetaMat<T>> global_nonviscous =
nullptr;
175 shared_ptr<MetaMat<T>> global_stiffness =
nullptr;
176 shared_ptr<MetaMat<T>> global_geometry =
nullptr;
178 std::vector<std::mutex> global_mutex = std::vector<std::mutex>(20);
184 unique_ptr<MetaMat<T>> get_basic_container();
185 unique_ptr<MetaMat<T>> get_matrix_container();
187 void assemble_matrix_helper(shared_ptr<
MetaMat<T>>&,
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
195 [[nodiscard]]
unsigned get_size()
const;
215 [[nodiscard]]
const magma_dopts& get_magma_setting()
const {
return magma_setting; }
341 [[nodiscard]]
unsigned get_mpc()
const;
413 const shared_ptr<MetaMat<T>>&
get_mass()
const;
678 void assemble_mass(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
679 void assemble_damping(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
682 void assemble_geometry(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
694 , storage_type(
SS) {}
697 if(D == n_size)
return;
699 access::rw(initialized) =
false;
706 if(n_elem > std::numeric_limits<int>::max())
throw invalid_argument(
"too many elements");
712 if(B == nlgeom)
return;
714 access::rw(initialized) =
false;
720 if(B == nonviscous)
return;
722 access::rw(initialized) =
false;
736 if(AT == analysis_type)
return;
738 access::rw(initialized) =
false;
744 if(
SS == storage_type)
return;
746 access::rw(initialized) =
false;
754 if(L == n_lobw &&
U == n_upbw)
return;
758 access::rw(initialized) =
false;
769 if(
S == n_rfld)
return;
786 reference_dof.clear();
788 if(initialized || n_size == 0)
return 0;
795 switch(analysis_type) {
797 initialize_displacement();
801 initialize_stiffness();
807 initialize_resistance();
808 initialize_displacement();
809 initialize_stiffness();
810 initialize_geometry();
814 initialize_resistance();
815 initialize_damping_force();
816 initialize_nonviscous_force();
817 initialize_inertial_force();
818 initialize_displacement();
819 initialize_velocity();
820 initialize_acceleration();
822 initialize_damping();
823 initialize_nonviscous();
824 initialize_stiffness();
825 initialize_geometry();
831 initialize_auxiliary_resistance();
833 access::rw(initialized) =
true;
839 if(n_rfld == 0)
return;
841 trial_load_factor.zeros(n_rfld);
842 incre_load_factor.zeros(n_rfld);
843 current_load_factor.zeros(n_rfld);
845 reference_load.zeros(n_size, n_rfld);
849 trial_load.zeros(n_size);
850 incre_load.zeros(n_size);
851 current_load.zeros(n_size);
855 trial_settlement.zeros(n_size);
856 incre_settlement.zeros(n_size);
857 current_settlement.zeros(n_size);
861 trial_resistance.zeros(n_size);
862 incre_resistance.zeros(n_size);
863 current_resistance.zeros(n_size);
867 trial_damping_force.zeros(n_size);
868 incre_damping_force.zeros(n_size);
869 current_damping_force.zeros(n_size);
873 trial_nonviscous_force.zeros(n_size);
874 incre_nonviscous_force.zeros(n_size);
875 current_nonviscous_force.zeros(n_size);
879 trial_inertial_force.zeros(n_size);
880 incre_inertial_force.zeros(n_size);
881 current_inertial_force.zeros(n_size);
885 trial_displacement.zeros(n_size);
886 incre_displacement.zeros(n_size);
887 current_displacement.zeros(n_size);
891 trial_velocity.zeros(n_size);
892 incre_velocity.zeros(n_size);
893 current_velocity.zeros(n_size);
897 trial_acceleration.zeros(n_size);
898 incre_acceleration.zeros(n_size);
899 current_acceleration.zeros(n_size);
903 trial_temperature.zeros(n_size);
904 incre_temperature.zeros(n_size);
905 current_temperature.zeros(n_size);
909 trial_constraint_resistance.zeros(n_size);
910 current_constraint_resistance.zeros(n_size);
918 if(!nonviscous)
return;
920 global_nonviscous = get_matrix_container();
928 global_geometry = get_matrix_container();
932 eigenvalue.zeros(n_size);
933 eigenvector.zeros(n_size, n_size);
944 auxiliary_encoding.zeros(n_mpc);
945 auxiliary_resistance.zeros(n_mpc);
946 auxiliary_load.zeros(n_mpc);
947 auxiliary_stiffness.zeros(n_size, n_mpc);
1041 auto se = std::async([&] {
if(!trial_resistance.empty() && !incre_displacement.empty()) strain_energy += .5 * dot(trial_resistance + current_resistance, incre_displacement); });
1042 auto ke = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) kinetic_energy = .5 * dot(global_mass * trial_velocity, trial_velocity); });
1043 auto ve = std::async([&] {
if(!trial_damping_force.empty() && !incre_displacement.empty()) viscous_energy += .5 * dot(trial_damping_force + current_damping_force, incre_displacement); });
1044 auto ne = std::async([&] {
if(!trial_nonviscous_force.empty() && !incre_displacement.empty()) nonviscous_energy += .5 * dot(trial_nonviscous_force + current_nonviscous_force, incre_displacement); });
1045 auto ce = std::async([&] {
if(!trial_displacement.empty() && !incre_resistance.empty()) complementary_energy += .5 * dot(trial_displacement + current_displacement, incre_resistance); });
1046 auto mm = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) momentum = global_mass * trial_velocity; });
1057 strain_energy =
T(0);
1058 kinetic_energy =
T(0);
1059 viscous_energy =
T(0);
1060 nonviscous_energy =
T(0);
1061 complementary_energy =
T(0);
1071 commit_load_factor();
1073 commit_settlement();
1074 commit_resistance();
1075 commit_damping_force();
1076 commit_nonviscous_force();
1077 commit_inertial_force();
1078 commit_displacement();
1080 commit_acceleration();
1081 commit_temperature();
1082 commit_auxiliary_resistance();
1086 current_time = trial_time;
1091 if(trial_load_factor.is_empty())
return;
1092 current_load_factor = trial_load_factor;
1093 incre_load_factor.zeros();
1097 if(trial_load.is_empty())
return;
1098 current_load = trial_load;
1103 if(trial_settlement.is_empty())
return;
1104 current_settlement = trial_settlement;
1105 incre_settlement.zeros();
1109 if(trial_resistance.is_empty())
return;
1110 current_resistance = trial_resistance;
1111 incre_resistance.zeros();
1115 if(trial_damping_force.is_empty())
return;
1116 current_damping_force = trial_damping_force;
1117 incre_damping_force.zeros();
1121 if(trial_nonviscous_force.is_empty())
return;
1122 current_nonviscous_force = trial_nonviscous_force;
1123 incre_nonviscous_force.zeros();
1127 if(trial_inertial_force.is_empty())
return;
1128 current_inertial_force = trial_inertial_force;
1129 incre_inertial_force.zeros();
1133 if(trial_displacement.is_empty())
return;
1134 current_displacement = trial_displacement;
1135 incre_displacement.zeros();
1139 if(trial_velocity.is_empty())
return;
1140 current_velocity = trial_velocity;
1141 incre_velocity.zeros();
1145 if(trial_acceleration.is_empty())
return;
1146 current_acceleration = trial_acceleration;
1147 incre_acceleration.zeros();
1151 if(trial_temperature.is_empty())
return;
1152 current_temperature = trial_temperature;
1153 incre_temperature.zeros();
1157 if(trial_constraint_resistance.is_empty())
return;
1158 current_constraint_resistance = trial_constraint_resistance;
1163 commit_pre_load_factor();
1165 commit_pre_settlement();
1166 commit_pre_resistance();
1167 commit_pre_damping_force();
1168 commit_pre_nonviscous_force();
1169 commit_pre_inertial_force();
1170 commit_pre_displacement();
1171 commit_pre_velocity();
1172 commit_pre_acceleration();
1173 commit_pre_temperature();
1201 access::rw(initialized) =
false;
1208 clear_load_factor();
1212 clear_damping_force();
1213 clear_nonviscous_force();
1214 clear_inertial_force();
1215 clear_displacement();
1217 clear_acceleration();
1218 clear_temperature();
1219 clear_auxiliary_resistance();
1225 if(!pre_load_factor.is_empty()) pre_load_factor.zeros();
1226 if(!trial_load_factor.is_empty()) trial_load_factor.zeros();
1227 if(!incre_load_factor.is_empty()) incre_load_factor.zeros();
1228 if(!current_load_factor.is_empty()) current_load_factor.zeros();
1232 if(!pre_load.is_empty()) pre_load.zeros();
1233 if(!trial_load.is_empty()) trial_load.zeros();
1234 if(!incre_load.is_empty()) incre_load.zeros();
1235 if(!current_load.is_empty()) current_load.zeros();
1239 if(!pre_settlement.is_empty()) pre_settlement.zeros();
1240 if(!trial_settlement.is_empty()) trial_settlement.zeros();
1241 if(!incre_settlement.is_empty()) incre_settlement.zeros();
1242 if(!current_settlement.is_empty()) current_settlement.zeros();
1246 if(!pre_resistance.is_empty()) pre_resistance.zeros();
1247 if(!trial_resistance.is_empty()) trial_resistance.zeros();
1248 if(!incre_resistance.is_empty()) incre_resistance.zeros();
1249 if(!current_resistance.is_empty()) current_resistance.zeros();
1253 if(!pre_damping_force.is_empty()) pre_damping_force.zeros();
1254 if(!trial_damping_force.is_empty()) trial_damping_force.zeros();
1255 if(!incre_damping_force.is_empty()) incre_damping_force.zeros();
1256 if(!current_damping_force.is_empty()) current_damping_force.zeros();
1260 if(!pre_nonviscous_force.is_empty()) pre_nonviscous_force.zeros();
1261 if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force.zeros();
1262 if(!incre_nonviscous_force.is_empty()) incre_nonviscous_force.zeros();
1263 if(!current_nonviscous_force.is_empty()) current_nonviscous_force.zeros();
1267 if(!pre_inertial_force.is_empty()) pre_inertial_force.zeros();
1268 if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros();
1269 if(!incre_inertial_force.is_empty()) incre_inertial_force.zeros();
1270 if(!current_inertial_force.is_empty()) current_inertial_force.zeros();
1274 if(!pre_displacement.is_empty()) pre_displacement.zeros();
1275 if(!trial_displacement.is_empty()) trial_displacement.zeros();
1276 if(!incre_displacement.is_empty()) incre_displacement.zeros();
1277 if(!current_displacement.is_empty()) current_displacement.zeros();
1281 if(!pre_velocity.is_empty()) pre_velocity.zeros();
1282 if(!trial_velocity.is_empty()) trial_velocity.zeros();
1283 if(!incre_velocity.is_empty()) incre_velocity.zeros();
1284 if(!current_velocity.is_empty()) current_velocity.zeros();
1288 if(!pre_acceleration.is_empty()) pre_acceleration.zeros();
1289 if(!trial_acceleration.is_empty()) trial_acceleration.zeros();
1290 if(!incre_acceleration.is_empty()) incre_acceleration.zeros();
1291 if(!current_acceleration.is_empty()) current_acceleration.zeros();
1295 if(!pre_temperature.is_empty()) pre_temperature.zeros();
1296 if(!trial_temperature.is_empty()) trial_temperature.zeros();
1297 if(!incre_temperature.is_empty()) incre_temperature.zeros();
1298 if(!current_temperature.is_empty()) current_temperature.zeros();
1302 if(!trial_constraint_resistance.is_empty()) trial_constraint_resistance.zeros();
1303 if(!current_constraint_resistance.is_empty()) current_constraint_resistance.zeros();
1310 reset_load_factor();
1314 reset_damping_force();
1315 reset_nonviscous_force();
1316 reset_inertial_force();
1317 reset_displacement();
1319 reset_acceleration();
1320 reset_temperature();
1321 reset_auxiliary_resistance();
1325 trial_time = current_time;
1330 if(trial_load_factor.is_empty())
return;
1331 trial_load_factor = current_load_factor;
1332 incre_load_factor.zeros();
1336 if(trial_load.is_empty())
return;
1337 trial_load = current_load;
1342 if(trial_settlement.is_empty())
return;
1343 trial_settlement = current_settlement;
1344 incre_settlement.zeros();
1348 if(trial_resistance.is_empty())
return;
1349 trial_resistance = current_resistance;
1350 incre_resistance.zeros();
1354 if(trial_damping_force.is_empty())
return;
1355 trial_damping_force = current_damping_force;
1356 incre_damping_force.zeros();
1360 if(trial_nonviscous_force.is_empty())
return;
1361 trial_nonviscous_force = current_nonviscous_force;
1362 incre_nonviscous_force.zeros();
1366 if(trial_inertial_force.is_empty())
return;
1367 trial_inertial_force = current_inertial_force;
1368 incre_inertial_force.zeros();
1372 if(trial_displacement.is_empty())
return;
1373 trial_displacement = current_displacement;
1374 incre_displacement.zeros();
1378 if(trial_velocity.is_empty())
return;
1379 trial_velocity = current_velocity;
1380 incre_velocity.zeros();
1384 if(trial_acceleration.is_empty())
return;
1385 trial_acceleration = current_acceleration;
1386 incre_acceleration.zeros();
1390 if(trial_temperature.is_empty())
return;
1391 trial_temperature = current_temperature;
1392 incre_temperature.zeros();
1396 if(trial_constraint_resistance.is_empty())
return;
1397 trial_constraint_resistance = current_constraint_resistance;
1401 if(!eigenvalue.is_empty()) eigenvalue.zeros();
1402 if(!eigenvector.is_empty()) eigenvector.zeros();
1417 auxiliary_load.reset();
1418 auxiliary_stiffness.set_size(n_size, 0);
1419 auxiliary_resistance.reset();
1420 auxiliary_encoding.reset();
1424 global_mass =
nullptr;
1425 global_damping =
nullptr;
1426 global_nonviscous =
nullptr;
1427 global_stiffness =
nullptr;
1428 global_geometry =
nullptr;
1432 if(ER.is_empty())
return;
1433 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_resistance(EI(I)) += ER(I);
1437 if(ER.is_empty())
return;
1438 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_damping_force(EI(I)) += ER(I);
1442 if(ER.is_empty())
return;
1443 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_nonviscous_force(EI(I)) += ER(I);
1447 if(ER.is_empty())
return;
1448 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_inertial_force(EI(I)) += ER(I);
1452 if(EM.is_empty())
return;
1455 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);
1458template<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); }
1460template<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); }
1462template<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); }
1464template<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); }
1466template<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); }
1469 if(EK.is_empty())
return;
1470 for(
auto I = EK.begin(); I != EK.end(); ++I) global_stiffness->at(EI(I.row()), EI(I.col())) += *I;
1474 suanpan_info(
"A Factory object with size of {}.\n", n_size);
1478 switch(storage_type) {
1481 if(
SolverType::CUDA == solver)
return std::make_unique<FullMatCUDA<T>>(n_size, n_size);
1483 return std::make_unique<FullMat<T>>(n_size, n_size);
1485 if(
SolverType::SPIKE == solver)
return std::make_unique<BandMatSpike<T>>(n_size, n_lobw, n_upbw);
1486 return std::make_unique<BandMat<T>>(n_size, n_lobw, n_upbw);
1488 return std::make_unique<BandSymmMat<T>>(n_size, n_lobw);
1490 return std::make_unique<SymmPackMat<T>>(n_size);
1492 if(
SolverType::MUMPS == solver)
return std::make_unique<SparseMatMUMPS<T>>(n_size, n_size, n_elem);
1493 if(
SolverType::LIS == solver)
return std::make_unique<SparseMatLis<T>>(n_size, n_size, n_elem);
1494 if(
SolverType::SUPERLU == solver)
return std::make_unique<SparseMatSuperLU<T>>(n_size, n_size, n_elem);
1496 if(
SolverType::PARDISO == solver)
return std::make_unique<SparseMatPARDISO<T>>(n_size, n_size, n_elem);
1497 if(
SolverType::FGMRES == solver)
return std::make_unique<SparseMatFGMRES<T>>(n_size, n_size, n_elem);
1500 if(
SolverType::CUDA == solver)
return std::make_unique<SparseMatCUDA<T>>(n_size, n_size, n_elem);
1502 if(
SolverType::MAGMA == solver)
return std::make_unique<SparseMatMAGMA<T>>(n_size, n_size, magma_setting);
1505 return std::make_unique<SparseMatSuperLU<T>>(n_size, n_size, n_elem);
1508 if(
SolverType::FGMRES == solver)
return std::make_unique<SparseSymmMatFGMRES<T>>(n_size, n_size, n_elem);
1510 return std::make_unique<SparseSymmMatMUMPS<T>>(n_size, n_size, n_elem);
1512 throw invalid_argument(
"need a proper storage scheme");
1517 auto global_mat = get_basic_container();
1519 global_mat->set_solver_setting(setting);
1850 incre_time = trial_time - current_time;
1854 trial_load_factor = L;
1855 incre_load_factor = trial_load_factor - current_load_factor;
1860 incre_load = trial_load - current_load;
1864 trial_settlement =
S;
1865 incre_settlement = trial_settlement - current_settlement;
1869 trial_resistance = R;
1870 incre_resistance = trial_resistance - current_resistance;
1874 trial_damping_force = R;
1875 incre_damping_force = trial_damping_force - current_damping_force;
1879 trial_nonviscous_force = R;
1880 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
1884 trial_inertial_force = R;
1885 incre_inertial_force = trial_inertial_force - current_inertial_force;
1889 trial_displacement = D;
1890 incre_displacement = trial_displacement - current_displacement;
1895 incre_velocity = trial_velocity - current_velocity;
1899 trial_acceleration =
A;
1900 incre_acceleration = trial_acceleration - current_acceleration;
1904 trial_temperature =
M;
1905 incre_temperature = trial_temperature - current_temperature;
1910 trial_time = current_time + incre_time;
1914 incre_load_factor = L;
1915 trial_load_factor = current_load_factor + incre_load_factor;
1920 trial_load = current_load + incre_load;
1924 incre_settlement =
S;
1925 trial_settlement = current_settlement + incre_settlement;
1929 incre_resistance = R;
1930 trial_resistance = current_resistance + incre_resistance;
1934 incre_damping_force = R;
1935 trial_damping_force = current_damping_force + incre_damping_force;
1939 incre_nonviscous_force = R;
1940 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
1944 incre_inertial_force = R;
1945 trial_inertial_force = current_inertial_force + incre_inertial_force;
1949 incre_displacement = D;
1950 trial_displacement = current_displacement + incre_displacement;
1955 trial_velocity = current_velocity + incre_velocity;
1959 incre_acceleration =
A;
1960 trial_acceleration = current_acceleration + incre_acceleration;
1964 incre_temperature =
M;
1965 trial_temperature = current_temperature + incre_temperature;
1969 trial_time = current_time =
M;
1974 trial_load_factor = current_load_factor = L;
1975 incre_load_factor.zeros();
1979 trial_load = current_load = L;
1984 trial_settlement = current_settlement =
S;
1985 incre_settlement.zeros();
1989 trial_resistance = current_resistance = R;
1990 incre_resistance.zeros();
1994 trial_damping_force = current_damping_force = R;
1995 incre_damping_force.zeros();
1999 trial_nonviscous_force = current_nonviscous_force = R;
2000 incre_nonviscous_force.zeros();
2004 trial_inertial_force = current_inertial_force = R;
2005 incre_inertial_force.zeros();
2009 trial_displacement = current_displacement = D;
2010 incre_displacement.zeros();
2014 trial_velocity = current_velocity =
V;
2015 incre_velocity.zeros();
2019 trial_acceleration = current_acceleration =
A;
2020 incre_acceleration.zeros();
2024 trial_temperature = current_temperature =
M;
2025 incre_temperature.zeros();
2030 incre_time = trial_time - current_time;
2034 trial_load_factor += L;
2035 incre_load_factor = trial_load_factor - current_load_factor;
2040 incre_load = trial_load - current_load;
2044 trial_settlement +=
S;
2045 incre_settlement = trial_settlement - current_settlement;
2049 trial_resistance += R;
2050 incre_resistance = trial_resistance - current_resistance;
2054 trial_damping_force += R;
2055 incre_damping_force = trial_damping_force - current_damping_force;
2059 trial_nonviscous_force += R;
2060 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
2064 trial_inertial_force += R;
2065 incre_inertial_force = trial_inertial_force - current_inertial_force;
2069 trial_displacement += D;
2070 incre_displacement = trial_displacement - current_displacement;
2074 trial_velocity +=
V;
2075 incre_velocity = trial_velocity - current_velocity;
2079 trial_acceleration +=
A;
2080 incre_acceleration = trial_acceleration - current_acceleration;
2084 trial_temperature +=
M;
2085 incre_temperature = trial_temperature - current_temperature;
2090 trial_time = current_time + incre_time;
2094 incre_load_factor += L;
2095 trial_load_factor = current_load_factor + incre_load_factor;
2100 trial_load = current_load + incre_load;
2104 incre_settlement +=
S;
2105 trial_settlement = current_settlement + incre_settlement;
2109 incre_resistance += R;
2110 trial_resistance = current_resistance + incre_resistance;
2114 incre_damping_force += R;
2115 trial_damping_force = current_damping_force + incre_damping_force;
2119 incre_nonviscous_force += R;
2120 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
2124 incre_inertial_force += R;
2125 trial_inertial_force = current_inertial_force + incre_inertial_force;
2129 incre_displacement += D;
2130 trial_displacement = current_displacement + incre_displacement;
2134 incre_velocity +=
V;
2135 trial_velocity = current_velocity + incre_velocity;
2139 incre_acceleration +=
A;
2140 trial_acceleration = current_acceleration + incre_acceleration;
2144 incre_temperature +=
M;
2145 trial_temperature = current_temperature + incre_temperature;
2149 trial_time = current_time +=
M;
2154 trial_load_factor = current_load_factor += L;
2155 incre_load_factor.zeros();
2159 trial_load = current_load += L;
2164 trial_settlement = current_settlement +=
S;
2165 incre_settlement.zeros();
2169 trial_resistance = current_resistance += R;
2170 incre_resistance.zeros();
2174 trial_damping_force = current_damping_force += R;
2175 incre_damping_force.zeros();
2179 trial_nonviscous_force = current_nonviscous_force += R;
2180 incre_nonviscous_force.zeros();
2184 trial_inertial_force = current_inertial_force += R;
2185 incre_inertial_force.zeros();
2189 trial_displacement = current_displacement += D;
2190 incre_displacement.zeros();
2194 trial_velocity = current_velocity +=
V;
2195 incre_velocity.zeros();
2199 trial_acceleration = current_acceleration +=
A;
2200 incre_acceleration.zeros();
2204 trial_temperature = current_temperature +=
M;
2205 incre_temperature.zeros();
void reset(ExternalMaterialData *data, int *info)
Definition ElasticExternal.cpp:74
A Factory class.
Definition Factory.hpp:73
const bool initialized
Definition Factory.hpp:190
void set_pre_inertial_force(const Col< T > &)
Definition Factory.hpp:1646
T & modify_trial_time()
Definition Factory.hpp:1752
void set_eigenvalue(const Col< T > &)
Definition Factory.hpp:962
void clear_acceleration()
Definition Factory.hpp:1287
void initialize_load()
Definition Factory.hpp:848
void set_mpc(unsigned)
Definition Factory.hpp:942
shared_ptr< MetaMat< T > > & modify_stiffness()
Definition Factory.hpp:1530
Col< T > & modify_trial_inertial_force()
Definition Factory.hpp:1766
Col< T > & modify_trial_nonviscous_force()
Definition Factory.hpp:1764
void commit_temperature()
Definition Factory.hpp:1150
bool is_sparse() const
Definition Factory.hpp:751
void update_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1998
void set_incre_velocity(const Col< T > &)
Definition Factory.hpp:1602
uword get_entry() const
Definition Factory.hpp:709
void set_incre_temperature(const Col< T > &)
Definition Factory.hpp:1606
void assemble_stiffness(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1464
void print() const
Definition Factory.hpp:1473
void clear_resistance()
Definition Factory.hpp:1245
void initialize_auxiliary_resistance()
Definition Factory.hpp:908
void clear_load_factor()
Definition Factory.hpp:1224
void set_incre_acceleration(const Col< T > &)
Definition Factory.hpp:1604
int initialize()
Definition Factory.hpp:785
Col< T > & modify_incre_load()
Definition Factory.hpp:1780
const Col< T > & get_current_acceleration() const
Definition Factory.hpp:1724
void update_incre_damping_force_by(const Col< T > &)
Definition Factory.hpp:2113
const Col< T > & get_pre_damping_force() const
Definition Factory.hpp:1738
void reset_displacement()
Definition Factory.hpp:1371
void update_incre_temperature_by(const Col< T > &)
Definition Factory.hpp:2143
void set_ninja(const Col< T > &)
Definition Factory.hpp:936
Col< T > & modify_trial_damping_force()
Definition Factory.hpp:1762
void update_trial_temperature_by(const Col< T > &)
Definition Factory.hpp:2083
bool is_nlgeom() const
Definition Factory.hpp:717
void update_incre_load_factor_by(const Col< T > &)
Definition Factory.hpp:2093
const Mat< T > & get_eigenvector() const
Definition Factory.hpp:1038
const Col< T > & get_trial_velocity() const
Definition Factory.hpp:1674
const Col< T > & get_trial_resistance() const
Definition Factory.hpp:1664
void update_trial_load_factor_by(const Col< T > &)
Definition Factory.hpp:2033
const Col< T > & get_ninja() const
Definition Factory.hpp:966
Col< T > & modify_trial_temperature()
Definition Factory.hpp:1774
void set_pre_velocity(const Col< T > &)
Definition Factory.hpp:1650
const Col< T > & get_current_load() const
Definition Factory.hpp:1708
void set_trial_settlement(const Col< T > &)
Definition Factory.hpp:1566
void set_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1586
void set_trial_time(T)
Definition Factory.hpp:1560
Col< T > & modify_incre_resistance()
Definition Factory.hpp:1784
void update_incre_load_by(const Col< T > &)
Definition Factory.hpp:2098
void set_solver_type(SolverType)
Definition Factory.hpp:727
const Col< T > & get_pre_load() const
Definition Factory.hpp:1732
void commit_acceleration()
Definition Factory.hpp:1144
AnalysisType get_analysis_type() const
Definition Factory.hpp:741
void clear_nonviscous()
Definition Factory.hpp:1409
void set_current_resistance(const Col< T > &)
Definition Factory.hpp:1616
void update_incre_displacement(const Col< T > &)
Definition Factory.hpp:1948
void set_incre_displacement(const Col< T > &)
Definition Factory.hpp:1600
void update_current_acceleration_by(const Col< T > &)
Definition Factory.hpp:2198
const uvec & get_auxiliary_encoding() const
Definition Factory.hpp:974
void reset_auxiliary_resistance()
Definition Factory.hpp:1395
Col< T > & modify_pre_displacement()
Definition Factory.hpp:1840
void commit_resistance()
Definition Factory.hpp:1108
const Col< T > & get_incre_inertial_force() const
Definition Factory.hpp:1694
void set_storage_scheme(StorageScheme)
Definition Factory.hpp:743
void update_trial_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2058
void initialize_damping()
Definition Factory.hpp:915
void update_incre_velocity(const Col< T > &)
Definition Factory.hpp:1953
Col< T > & modify_incre_acceleration()
Definition Factory.hpp:1796
void initialize_geometry()
Definition Factory.hpp:925
void update_incre_displacement_by(const Col< T > &)
Definition Factory.hpp:2128
void update_current_damping_force_by(const Col< T > &)
Definition Factory.hpp:2173
void assemble_mass(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1458
void set_trial_velocity(const Col< T > &)
Definition Factory.hpp:1578
void update_current_resistance(const Col< T > &)
Definition Factory.hpp:1988
void clear_inertial_force()
Definition Factory.hpp:1266
Col< T > & modify_ninja()
Definition Factory.hpp:1534
void set_pre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1644
void update_trial_damping_force_by(const Col< T > &)
Definition Factory.hpp:2053
unsigned get_mpc() const
Definition Factory.hpp:970
Col< T > & modify_eigenvalue()
Definition Factory.hpp:1556
const Col< T > & get_current_settlement() const
Definition Factory.hpp:1710
const SolverSetting< double > & get_solver_setting() const
Definition Factory.hpp:733
void commit_load_factor()
Definition Factory.hpp:1090
std::mutex & get_damping_mutex()
Definition Factory.hpp:1028
void update_trial_velocity_by(const Col< T > &)
Definition Factory.hpp:2073
void update_current_load_by(const Col< T > &)
Definition Factory.hpp:2158
SpCol< T > & modify_trial_constraint_resistance()
Definition Factory.hpp:1552
const shared_ptr< MetaMat< T > > & get_damping() const
Definition Factory.hpp:1002
void set_pre_settlement(const Col< T > &)
Definition Factory.hpp:1638
void set_nlgeom(bool)
Definition Factory.hpp:711
StorageScheme get_storage_scheme() const
Definition Factory.hpp:749
void commit_inertial_force()
Definition Factory.hpp:1126
void update_current_time(T)
Definition Factory.hpp:1968
void initialize_resistance()
Definition Factory.hpp:860
const Col< T > & get_current_damping_force() const
Definition Factory.hpp:1714
void set_solver_setting(const SolverSetting< double > &)
Definition Factory.hpp:731
void update_trial_displacement_by(const Col< T > &)
Definition Factory.hpp:2068
void set_mass(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:952
void reset_velocity()
Definition Factory.hpp:1377
const shared_ptr< MetaMat< T > > & get_nonviscous() const
Definition Factory.hpp:1004
const Col< T > & get_trial_load_factor() const
Definition Factory.hpp:1658
void set_current_load(const Col< T > &)
Definition Factory.hpp:1612
std::mutex & get_trial_load_mutex()
Definition Factory.hpp:1020
void initialize_stiffness()
Definition Factory.hpp:923
void initialize_damping_force()
Definition Factory.hpp:866
T get_current_time() const
Definition Factory.hpp:1704
const Col< T > & get_pre_settlement() const
Definition Factory.hpp:1734
void update_trial_temperature(const Col< T > &)
Definition Factory.hpp:1903
void commit_velocity()
Definition Factory.hpp:1138
void set_pre_time(T)
Definition Factory.hpp:1632
T get_complementary_energy()
Definition Factory.hpp:996
void reset()
Definition Factory.hpp:1423
const Col< T > & get_incre_displacement() const
Definition Factory.hpp:1696
void set_current_damping_force(const Col< T > &)
Definition Factory.hpp:1618
Col< T > & modify_current_nonviscous_force()
Definition Factory.hpp:1812
void update_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1898
void set_current_time(T)
Definition Factory.hpp:1608
const Col< T > & get_auxiliary_load() const
Definition Factory.hpp:980
void commit_pre_settlement()
Definition Factory.hpp:1182
Col< T > & modify_pre_settlement()
Definition Factory.hpp:1830
const shared_ptr< MetaMat< T > > & get_mass() const
Definition Factory.hpp:1000
void commit_status()
Definition Factory.hpp:1065
void commit_pre_load_factor()
Definition Factory.hpp:1178
const suanpan::set< uword > & get_reference_dof() const
Definition Factory.hpp:779
void set_incre_time(T)
Definition Factory.hpp:1584
shared_ptr< MetaMat< T > > & modify_damping()
Definition Factory.hpp:1526
Col< T > & modify_pre_velocity()
Definition Factory.hpp:1842
std::mutex & get_reference_load_mutex()
Definition Factory.hpp:1024
void assemble_damping(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1460
void update_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1938
void update_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1883
void set_current_velocity(const Col< T > &)
Definition Factory.hpp:1626
void commit_displacement()
Definition Factory.hpp:1132
void update_current_velocity_by(const Col< T > &)
Definition Factory.hpp:2193
const Col< T > & get_incre_damping_force() const
Definition Factory.hpp:1690
void update_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1853
void reset_load_factor()
Definition Factory.hpp:1329
void clear_velocity()
Definition Factory.hpp:1280
void update_current_load(const Col< T > &)
Definition Factory.hpp:1978
void update_incre_time(T)
Definition Factory.hpp:1908
void update_incre_settlement_by(const Col< T > &)
Definition Factory.hpp:2103
unsigned get_reference_size() const
Definition Factory.hpp:773
void update_current_acceleration(const Col< T > &)
Definition Factory.hpp:2018
StorageScheme
Definition Factory.hpp:52
void commit_pre_temperature()
Definition Factory.hpp:1198
void commit_pre_status()
Definition Factory.hpp:1161
void update_current_time_by(T)
Definition Factory.hpp:2148
suanpan::set< uword > & modify_reference_dof()
Definition Factory.hpp:1538
void set_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1580
void update_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1873
const Col< T > & get_incre_settlement() const
Definition Factory.hpp:1686
void reset_inertial_force()
Definition Factory.hpp:1365
void set_reference_dof(const suanpan::set< uword > &)
Definition Factory.hpp:777
const Col< T > & get_momentum()
Definition Factory.hpp:998
void update_current_displacement(const Col< T > &)
Definition Factory.hpp:2008
void clear_settlement()
Definition Factory.hpp:1238
void set_pre_load(const Col< T > &)
Definition Factory.hpp:1636
std::mutex & get_auxiliary_stiffness_mutex()
Definition Factory.hpp:1016
T get_incre_time() const
Definition Factory.hpp:1680
void commit_pre_damping_force()
Definition Factory.hpp:1186
Col< T > & modify_current_inertial_force()
Definition Factory.hpp:1814
const Col< T > & get_current_nonviscous_force() const
Definition Factory.hpp:1716
T get_strain_energy()
Definition Factory.hpp:988
void commit_pre_inertial_force()
Definition Factory.hpp:1190
void update_trial_settlement(const Col< T > &)
Definition Factory.hpp:1863
void set_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1574
const Col< T > & get_eigenvalue() const
Definition Factory.hpp:1036
void commit_pre_displacement()
Definition Factory.hpp:1192
std::mutex & get_geometry_mutex()
Definition Factory.hpp:1034
void set_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1596
void commit_pre_acceleration()
Definition Factory.hpp:1196
const Col< T > & get_incre_velocity() const
Definition Factory.hpp:1698
Col< T > & modify_current_settlement()
Definition Factory.hpp:1806
T get_trial_time() const
Definition Factory.hpp:1656
void update_current_temperature_by(const Col< T > &)
Definition Factory.hpp:2203
void set_geometry(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:960
void set_incre_load(const Col< T > &)
Definition Factory.hpp:1588
void update_reference_size()
Definition Factory.hpp:766
void set_pre_acceleration(const Col< T > &)
Definition Factory.hpp:1652
void set_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1598
const Col< T > & get_trial_nonviscous_force() const
Definition Factory.hpp:1668
T get_kinetic_energy()
Definition Factory.hpp:990
void set_current_settlement(const Col< T > &)
Definition Factory.hpp:1614
void update_trial_settlement_by(const Col< T > &)
Definition Factory.hpp:2043
void initialize_inertial_force()
Definition Factory.hpp:878
void set_pre_resistance(const Col< T > &)
Definition Factory.hpp:1640
void commit_load()
Definition Factory.hpp:1096
void update_current_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2178
void update_trial_acceleration_by(const Col< T > &)
Definition Factory.hpp:2078
const Col< T > & get_pre_acceleration() const
Definition Factory.hpp:1748
void update_incre_acceleration_by(const Col< T > &)
Definition Factory.hpp:2138
void commit_pre_nonviscous_force()
Definition Factory.hpp:1188
void commit_pre_load()
Definition Factory.hpp:1180
void commit_pre_velocity()
Definition Factory.hpp:1194
void update_trial_resistance_by(const Col< T > &)
Definition Factory.hpp:2048
Col< T > & modify_current_resistance()
Definition Factory.hpp:1808
AnalysisType
Definition Factory.hpp:43
bool is_nonviscous() const
Definition Factory.hpp:725
void commit_pre_time()
Definition Factory.hpp:1176
shared_ptr< MetaMat< T > > & modify_geometry()
Definition Factory.hpp:1532
void commit_auxiliary_resistance()
Definition Factory.hpp:1156
void update_current_settlement(const Col< T > &)
Definition Factory.hpp:1983
void update_trial_load(const Col< T > &)
Definition Factory.hpp:1858
Col< T > & modify_pre_nonviscous_force()
Definition Factory.hpp:1836
void update_incre_load(const Col< T > &)
Definition Factory.hpp:1918
void update_trial_time(T)
Definition Factory.hpp:1848
void clear_nonviscous_force()
Definition Factory.hpp:1259
const shared_ptr< MetaMat< T > > & get_stiffness() const
Definition Factory.hpp:1006
void commit_settlement()
Definition Factory.hpp:1102
void set_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1572
const Col< T > & get_auxiliary_lambda() const
Definition Factory.hpp:976
void reset_load()
Definition Factory.hpp:1335
void reset_damping_force()
Definition Factory.hpp:1353
void update_current_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2183
void set_trial_temperature(const Col< T > &)
Definition Factory.hpp:1582
std::mutex & get_auxiliary_encoding_mutex()
Definition Factory.hpp:1010
Col< T > & modify_trial_load()
Definition Factory.hpp:1756
SolverType
Definition Factory.hpp:61
void assemble_damping_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1436
void set_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1620
const Col< T > & get_pre_displacement() const
Definition Factory.hpp:1744
const Col< T > & get_current_inertial_force() const
Definition Factory.hpp:1718
std::mutex & get_mass_mutex()
Definition Factory.hpp:1026
void set_nonviscous(bool)
Definition Factory.hpp:719
const Col< T > & get_pre_load_factor() const
Definition Factory.hpp:1730
Col< T > & modify_current_acceleration()
Definition Factory.hpp:1820
const Col< T > & get_trial_displacement() const
Definition Factory.hpp:1672
void update_trial_velocity(const Col< T > &)
Definition Factory.hpp:1893
void update_current_temperature(const Col< T > &)
Definition Factory.hpp:2023
void reset_temperature()
Definition Factory.hpp:1389
std::mutex & get_auxiliary_resistance_mutex()
Definition Factory.hpp:1012
void set_current_acceleration(const Col< T > &)
Definition Factory.hpp:1628
T get_nonviscous_energy()
Definition Factory.hpp:994
void update_current_settlement_by(const Col< T > &)
Definition Factory.hpp:2163
void initialize_settlement()
Definition Factory.hpp:854
void clear_damping()
Definition Factory.hpp:1407
const Col< T > & get_incre_nonviscous_force() const
Definition Factory.hpp:1692
const Col< T > & get_incre_load_factor() const
Definition Factory.hpp:1682
void clear_energy()
Definition Factory.hpp:1056
const SpMat< T > & get_reference_load() const
Definition Factory.hpp:972
void initialize_displacement()
Definition Factory.hpp:884
Col< T > & modify_auxiliary_load()
Definition Factory.hpp:1548
void reset_time()
Definition Factory.hpp:1324
const Col< T > & get_current_displacement() const
Definition Factory.hpp:1720
Col< T > & modify_current_velocity()
Definition Factory.hpp:1818
unsigned get_size() const
Definition Factory.hpp:702
T & modify_current_time()
Definition Factory.hpp:1800
void reset_settlement()
Definition Factory.hpp:1341
void clear_damping_force()
Definition Factory.hpp:1252
void set_analysis_type(AnalysisType)
Definition Factory.hpp:735
const Col< T > & get_incre_load() const
Definition Factory.hpp:1684
void initialize_nonviscous_force()
Definition Factory.hpp:872
void set_entry(uword)
Definition Factory.hpp:704
Col< T > & modify_pre_damping_force()
Definition Factory.hpp:1834
const Col< T > & get_incre_acceleration() const
Definition Factory.hpp:1700
T get_pre_time() const
Definition Factory.hpp:1728
void clear_geometry()
Definition Factory.hpp:1413
T get_viscous_energy()
Definition Factory.hpp:992
std::mutex & get_trial_constraint_resistance_mutex()
Definition Factory.hpp:1018
const Col< T > & get_current_temperature() const
Definition Factory.hpp:1726
void update_incre_time_by(T)
Definition Factory.hpp:2088
void assemble_nonviscous(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1462
void set_reference_size(unsigned)
Definition Factory.hpp:768
Col< T > & modify_trial_settlement()
Definition Factory.hpp:1758
void initialize_temperature()
Definition Factory.hpp:902
void set_current_displacement(const Col< T > &)
Definition Factory.hpp:1624
void update_reference_dof(const uvec &)
Definition Factory.hpp:775
const Col< T > & get_trial_inertial_force() const
Definition Factory.hpp:1670
void set_current_inertial_force(const Col< T > &)
Definition Factory.hpp:1622
SpCol< T > & modify_current_constraint_resistance()
Definition Factory.hpp:1554
Col< T > & modify_incre_load_factor()
Definition Factory.hpp:1778
void set_trial_load(const Col< T > &)
Definition Factory.hpp:1564
Col< T > & modify_auxiliary_resistance()
Definition Factory.hpp:1546
Col< T > & modify_pre_resistance()
Definition Factory.hpp:1832
Col< T > & modify_incre_temperature()
Definition Factory.hpp:1798
T & modify_pre_time()
Definition Factory.hpp:1824
void update_incre_temperature(const Col< T > &)
Definition Factory.hpp:1963
shared_ptr< MetaMat< T > > & modify_nonviscous()
Definition Factory.hpp:1528
void update_current_velocity(const Col< T > &)
Definition Factory.hpp:2013
void set_error(T)
Definition Factory.hpp:781
Col< T > & modify_incre_nonviscous_force()
Definition Factory.hpp:1788
void assemble_geometry(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1466
const Col< T > & get_trial_settlement() const
Definition Factory.hpp:1662
void set_eigenvector(const Mat< T > &)
Definition Factory.hpp:964
void initialize_load_factor()
Definition Factory.hpp:838
Col< T > & modify_incre_inertial_force()
Definition Factory.hpp:1790
const Col< T > & get_trial_load() const
Definition Factory.hpp:1660
uvec & modify_auxiliary_encoding()
Definition Factory.hpp:1542
void update_current_displacement_by(const Col< T > &)
Definition Factory.hpp:2188
void set_trial_resistance(const Col< T > &)
Definition Factory.hpp:1568
void commit_nonviscous_force()
Definition Factory.hpp:1120
void set_pre_load_factor(const Col< T > &)
Definition Factory.hpp:1634
void update_current_damping_force(const Col< T > &)
Definition Factory.hpp:1993
Col< T > & modify_current_damping_force()
Definition Factory.hpp:1810
void update_current_load_factor(const Col< T > &)
Definition Factory.hpp:1973
void commit_energy()
Definition Factory.hpp:1040
void commit_damping_force()
Definition Factory.hpp:1114
T get_error() const
Definition Factory.hpp:783
void update_trial_time_by(T)
Definition Factory.hpp:2028
void update_incre_acceleration(const Col< T > &)
Definition Factory.hpp:1958
const SpMat< T > & get_auxiliary_stiffness() const
Definition Factory.hpp:982
void assemble_inertial_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1446
void clear_status()
Definition Factory.hpp:1200
void set_bandwidth(unsigned, unsigned)
Definition Factory.hpp:753
void update_incre_velocity_by(const Col< T > &)
Definition Factory.hpp:2133
const Col< T > & get_current_load_factor() const
Definition Factory.hpp:1706
void commit_time()
Definition Factory.hpp:1085
void clear_mass()
Definition Factory.hpp:1405
void get_bandwidth(unsigned &, unsigned &) const
Definition Factory.hpp:761
const Col< T > & get_pre_inertial_force() const
Definition Factory.hpp:1742
void commit_pre_resistance()
Definition Factory.hpp:1184
void update_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1878
void reset_resistance()
Definition Factory.hpp:1347
SolverType get_solver_type() const
Definition Factory.hpp:729
Col< T > & modify_pre_temperature()
Definition Factory.hpp:1846
std::mutex & get_auxiliary_load_mutex()
Definition Factory.hpp:1014
const Col< T > & get_trial_acceleration() const
Definition Factory.hpp:1676
void assemble_resistance(const Mat< T > &, const uvec &)
Definition Factory.hpp:1431
void set_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1594
Col< T > & modify_incre_displacement()
Definition Factory.hpp:1792
Col< T > & modify_pre_load()
Definition Factory.hpp:1828
const SpCol< T > & get_trial_constraint_resistance() const
Definition Factory.hpp:984
void update_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1933
const Col< T > & get_pre_velocity() const
Definition Factory.hpp:1746
const Col< T > & get_current_resistance() const
Definition Factory.hpp:1712
void assemble_nonviscous_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1441
void initialize_velocity()
Definition Factory.hpp:890
std::mutex & get_stiffness_mutex()
Definition Factory.hpp:1032
Col< T > & modify_pre_acceleration()
Definition Factory.hpp:1844
void update_incre_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2123
const Col< T > & get_current_velocity() const
Definition Factory.hpp:1722
void update_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1913
SpMat< T > & modify_auxiliary_stiffness()
Definition Factory.hpp:1550
void set_incre_resistance(const Col< T > &)
Definition Factory.hpp:1592
void initialize_nonviscous()
Definition Factory.hpp:917
Col< T > & modify_trial_velocity()
Definition Factory.hpp:1770
Col< T > & modify_trial_displacement()
Definition Factory.hpp:1768
const Col< T > & get_pre_temperature() const
Definition Factory.hpp:1750
Col< T > & modify_trial_acceleration()
Definition Factory.hpp:1772
void clear_load()
Definition Factory.hpp:1231
const Col< T > & get_incre_temperature() const
Definition Factory.hpp:1702
Col< T > & modify_pre_load_factor()
Definition Factory.hpp:1826
Factory(unsigned=0, AnalysisType=AnalysisType::NONE, StorageScheme=StorageScheme::FULL)
Definition Factory.hpp:691
Col< T > & modify_trial_load_factor()
Definition Factory.hpp:1754
void set_size(unsigned)
Definition Factory.hpp:696
void update_trial_displacement(const Col< T > &)
Definition Factory.hpp:1888
const Col< T > & get_incre_resistance() const
Definition Factory.hpp:1688
Col< T > & modify_trial_resistance()
Definition Factory.hpp:1760
const Col< T > & get_sushi() const
Definition Factory.hpp:968
const Col< T > & get_auxiliary_resistance() const
Definition Factory.hpp:978
const Col< T > & get_trial_damping_force() const
Definition Factory.hpp:1666
Mat< T > & modify_eigenvector()
Definition Factory.hpp:1558
void update_current_resistance_by(const Col< T > &)
Definition Factory.hpp:2168
void set_pre_temperature(const Col< T > &)
Definition Factory.hpp:1654
void update_trial_load_by(const Col< T > &)
Definition Factory.hpp:2038
Col< T > & modify_auxiliary_lambda()
Definition Factory.hpp:1544
const SpCol< T > & get_current_constraint_resistance() const
Definition Factory.hpp:986
void clear_auxiliary_resistance()
Definition Factory.hpp:1301
const Col< T > & get_pre_nonviscous_force() const
Definition Factory.hpp:1740
void update_incre_resistance_by(const Col< T > &)
Definition Factory.hpp:2108
void update_sushi_by(const Col< T > &)
Definition Factory.hpp:940
void set_incre_settlement(const Col< T > &)
Definition Factory.hpp:1590
Col< T > & modify_pre_inertial_force()
Definition Factory.hpp:1838
void set_sushi(const Col< T > &)
Definition Factory.hpp:938
shared_ptr< MetaMat< T > > & modify_mass()
Definition Factory.hpp:1524
void update_incre_settlement(const Col< T > &)
Definition Factory.hpp:1923
void set_pre_displacement(const Col< T > &)
Definition Factory.hpp:1648
std::mutex & get_nonviscous_mutex()
Definition Factory.hpp:1030
void set_current_load_factor(const Col< T > &)
Definition Factory.hpp:1610
void set_trial_displacement(const Col< T > &)
Definition Factory.hpp:1576
void update_trial_resistance(const Col< T > &)
Definition Factory.hpp:1868
Col< T > & modify_current_load_factor()
Definition Factory.hpp:1802
void clear_eigen()
Definition Factory.hpp:1400
void clear_auxiliary()
Definition Factory.hpp:1415
void set_reference_load(const SpMat< T > &)
Definition Factory.hpp:950
T & modify_incre_time()
Definition Factory.hpp:1776
void update_incre_resistance(const Col< T > &)
Definition Factory.hpp:1928
SpMat< T > & modify_reference_load()
Definition Factory.hpp:1540
Col< T > & modify_incre_damping_force()
Definition Factory.hpp:1786
Col< T > & modify_incre_settlement()
Definition Factory.hpp:1782
void update_current_load_factor_by(const Col< T > &)
Definition Factory.hpp:2153
void set_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1562
void initialize_eigen()
Definition Factory.hpp:931
void update_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1943
void clear_time()
Definition Factory.hpp:1222
void set_stiffness(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:958
void clear_displacement()
Definition Factory.hpp:1273
const shared_ptr< MetaMat< T > > & get_geometry() const
Definition Factory.hpp:1008
Col< T > & modify_current_load()
Definition Factory.hpp:1804
void reset_status()
Definition Factory.hpp:1306
Col< T > & modify_current_temperature()
Definition Factory.hpp:1822
void update_current_inertial_force(const Col< T > &)
Definition Factory.hpp:2003
const Col< T > & get_trial_temperature() const
Definition Factory.hpp:1678
void set_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1570
std::mutex & get_trial_settlement_mutex()
Definition Factory.hpp:1022
void initialize_mass()
Definition Factory.hpp:913
Col< T > & modify_sushi()
Definition Factory.hpp:1536
void set_pre_damping_force(const Col< T > &)
Definition Factory.hpp:1642
void clear_temperature()
Definition Factory.hpp:1294
Col< T > & modify_current_displacement()
Definition Factory.hpp:1816
void initialize_acceleration()
Definition Factory.hpp:896
void update_trial_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2063
void set_current_temperature(const Col< T > &)
Definition Factory.hpp:1630
Col< T > & modify_incre_velocity()
Definition Factory.hpp:1794
void set_damping(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:954
void reset_acceleration()
Definition Factory.hpp:1383
void reset_nonviscous_force()
Definition Factory.hpp:1359
const Col< T > & get_pre_resistance() const
Definition Factory.hpp:1736
void clear_stiffness()
Definition Factory.hpp:1411
void update_incre_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2118
std::set< T > set
Definition container.h:54
Definition SolverSetting.hpp:40
#define suanpan_info
Definition suanPan.h:305