37#include <Domain/MetaMat/MetaMat>
73 unsigned n_sfbw = n_lobw + n_upbw;
82 bool nonviscous =
false;
94 SpMat<T> reference_load;
96 uvec auxiliary_encoding;
97 Col<T> auxiliary_lambda;
98 Col<T> auxiliary_resistance;
99 Col<T> auxiliary_load;
100 SpMat<T> auxiliary_stiffness;
102 SpCol<T> trial_constraint_resistance;
103 SpCol<T> current_constraint_resistance;
107 T current_time =
T(0);
110 T strain_energy =
T(0);
111 T kinetic_energy =
T(0);
112 T viscous_energy =
T(0);
113 T nonviscous_energy =
T(0);
114 T complementary_energy =
T(0);
117 Col<T> trial_load_factor;
119 Col<T> trial_settlement;
120 Col<T> trial_resistance;
121 Col<T> trial_damping_force;
122 Col<T> trial_nonviscous_force;
123 Col<T> trial_inertial_force;
124 Col<T> trial_displacement;
125 Col<T> trial_velocity;
126 Col<T> trial_acceleration;
127 Col<T> trial_temperature;
129 Col<T> incre_load_factor;
131 Col<T> incre_settlement;
132 Col<T> incre_resistance;
133 Col<T> incre_damping_force;
134 Col<T> incre_nonviscous_force;
135 Col<T> incre_inertial_force;
136 Col<T> incre_displacement;
137 Col<T> incre_velocity;
138 Col<T> incre_acceleration;
139 Col<T> incre_temperature;
141 Col<T> current_load_factor;
143 Col<T> current_settlement;
144 Col<T> current_resistance;
145 Col<T> current_damping_force;
146 Col<T> current_nonviscous_force;
147 Col<T> current_inertial_force;
148 Col<T> current_displacement;
149 Col<T> current_velocity;
150 Col<T> current_acceleration;
151 Col<T> current_temperature;
153 Col<T> pre_load_factor;
155 Col<T> pre_settlement;
156 Col<T> pre_resistance;
157 Col<T> pre_damping_force;
158 Col<T> pre_nonviscous_force;
159 Col<T> pre_inertial_force;
160 Col<T> pre_displacement;
162 Col<T> pre_acceleration;
163 Col<T> pre_temperature;
165 shared_ptr<MetaMat<T>> global_mass =
nullptr;
166 shared_ptr<MetaMat<T>> global_damping =
nullptr;
167 shared_ptr<MetaMat<T>> global_nonviscous =
nullptr;
168 shared_ptr<MetaMat<T>> global_stiffness =
nullptr;
169 shared_ptr<MetaMat<T>> global_geometry =
nullptr;
171 std::vector<std::mutex> global_mutex{20};
177 unique_ptr<MetaMat<T>> get_basic_container();
178 unique_ptr<MetaMat<T>> get_matrix_container();
180 void assemble_matrix_helper(shared_ptr<
MetaMat<T>>&,
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
188 [[nodiscard]]
unsigned get_size()
const;
217 [[nodiscard]] std::pair<unsigned, unsigned>
get_bandwidth()
const;
331 [[nodiscard]]
unsigned get_mpc()
const;
403 const shared_ptr<MetaMat<T>>&
get_mass()
const;
668 void assemble_mass(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
669 void assemble_damping(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
672 void assemble_geometry(
const Mat<T>&,
const uvec&,
const std::vector<MappingDOF>&);
684 , storage_type(
SS) {}
687 if(D == n_size)
return;
689 access::rw(initialized) =
false;
696 if(n_elem > std::numeric_limits<la_it>::max())
throw invalid_argument(
"too many elements");
702 if(B == nlgeom)
return;
704 access::rw(initialized) =
false;
710 if(B == nonviscous)
return;
712 access::rw(initialized) =
false;
730 if(AT == analysis_type)
return;
732 access::rw(initialized) =
false;
738 if(
SS == storage_type)
return;
740 access::rw(initialized) =
false;
748 if(L == n_lobw &&
U == n_upbw)
return;
752 access::rw(initialized) =
false;
760 if(
S == n_rfld)
return;
777 reference_dof.clear();
779 if(initialized || n_size == 0)
return 0;
786 switch(analysis_type) {
788 initialize_displacement();
792 initialize_stiffness();
798 initialize_resistance();
799 initialize_displacement();
800 initialize_stiffness();
801 initialize_geometry();
805 initialize_resistance();
806 initialize_damping_force();
807 initialize_nonviscous_force();
808 initialize_inertial_force();
809 initialize_displacement();
810 initialize_velocity();
811 initialize_acceleration();
813 initialize_damping();
814 initialize_nonviscous();
815 initialize_stiffness();
816 initialize_geometry();
822 initialize_auxiliary_resistance();
824 access::rw(initialized) =
true;
830 if(n_rfld == 0)
return;
832 trial_load_factor.zeros(n_rfld);
833 incre_load_factor.zeros(n_rfld);
834 current_load_factor.zeros(n_rfld);
836 reference_load.zeros(n_size, n_rfld);
840 trial_load.zeros(n_size);
841 incre_load.zeros(n_size);
842 current_load.zeros(n_size);
846 trial_settlement.zeros(n_size);
847 incre_settlement.zeros(n_size);
848 current_settlement.zeros(n_size);
852 trial_resistance.zeros(n_size);
853 incre_resistance.zeros(n_size);
854 current_resistance.zeros(n_size);
858 trial_damping_force.zeros(n_size);
859 incre_damping_force.zeros(n_size);
860 current_damping_force.zeros(n_size);
864 trial_nonviscous_force.zeros(n_size);
865 incre_nonviscous_force.zeros(n_size);
866 current_nonviscous_force.zeros(n_size);
870 trial_inertial_force.zeros(n_size);
871 incre_inertial_force.zeros(n_size);
872 current_inertial_force.zeros(n_size);
876 trial_displacement.zeros(n_size);
877 incre_displacement.zeros(n_size);
878 current_displacement.zeros(n_size);
882 trial_velocity.zeros(n_size);
883 incre_velocity.zeros(n_size);
884 current_velocity.zeros(n_size);
888 trial_acceleration.zeros(n_size);
889 incre_acceleration.zeros(n_size);
890 current_acceleration.zeros(n_size);
894 trial_temperature.zeros(n_size);
895 incre_temperature.zeros(n_size);
896 current_temperature.zeros(n_size);
900 trial_constraint_resistance.zeros(n_size);
901 current_constraint_resistance.zeros(n_size);
909 if(!nonviscous)
return;
911 global_nonviscous = get_matrix_container();
919 global_geometry = get_matrix_container();
923 eigenvalue.zeros(n_size);
924 eigenvector.zeros(n_size, n_size);
935 auxiliary_encoding.zeros(n_mpc);
936 auxiliary_resistance.zeros(n_mpc);
937 auxiliary_load.zeros(n_mpc);
938 auxiliary_stiffness.zeros(n_size, n_mpc);
1032 auto se = std::async([&] {
if(!trial_resistance.empty() && !incre_displacement.empty()) strain_energy += .5 * dot(trial_resistance + current_resistance, incre_displacement); });
1033 auto ke = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) kinetic_energy = .5 * dot(global_mass * trial_velocity, trial_velocity); });
1034 auto ve = std::async([&] {
if(!trial_damping_force.empty() && !incre_displacement.empty()) viscous_energy += .5 * dot(trial_damping_force + current_damping_force, incre_displacement); });
1035 auto ne = std::async([&] {
if(!trial_nonviscous_force.empty() && !incre_displacement.empty()) nonviscous_energy += .5 * dot(trial_nonviscous_force + current_nonviscous_force, incre_displacement); });
1036 auto ce = std::async([&] {
if(!trial_displacement.empty() && !incre_resistance.empty()) complementary_energy += .5 * dot(trial_displacement + current_displacement, incre_resistance); });
1037 auto mm = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) momentum = global_mass * trial_velocity; });
1048 strain_energy =
T(0);
1049 kinetic_energy =
T(0);
1050 viscous_energy =
T(0);
1051 nonviscous_energy =
T(0);
1052 complementary_energy =
T(0);
1062 commit_load_factor();
1064 commit_settlement();
1065 commit_resistance();
1066 commit_damping_force();
1067 commit_nonviscous_force();
1068 commit_inertial_force();
1069 commit_displacement();
1071 commit_acceleration();
1072 commit_temperature();
1073 commit_auxiliary_resistance();
1077 current_time = trial_time;
1082 if(trial_load_factor.is_empty())
return;
1083 current_load_factor = trial_load_factor;
1084 incre_load_factor.zeros();
1088 if(trial_load.is_empty())
return;
1089 current_load = trial_load;
1094 if(trial_settlement.is_empty())
return;
1095 current_settlement = trial_settlement;
1096 incre_settlement.zeros();
1100 if(trial_resistance.is_empty())
return;
1101 current_resistance = trial_resistance;
1102 incre_resistance.zeros();
1106 if(trial_damping_force.is_empty())
return;
1107 current_damping_force = trial_damping_force;
1108 incre_damping_force.zeros();
1112 if(trial_nonviscous_force.is_empty())
return;
1113 current_nonviscous_force = trial_nonviscous_force;
1114 incre_nonviscous_force.zeros();
1118 if(trial_inertial_force.is_empty())
return;
1119 current_inertial_force = trial_inertial_force;
1120 incre_inertial_force.zeros();
1124 if(trial_displacement.is_empty())
return;
1125 current_displacement = trial_displacement;
1126 incre_displacement.zeros();
1130 if(trial_velocity.is_empty())
return;
1131 current_velocity = trial_velocity;
1132 incre_velocity.zeros();
1136 if(trial_acceleration.is_empty())
return;
1137 current_acceleration = trial_acceleration;
1138 incre_acceleration.zeros();
1142 if(trial_temperature.is_empty())
return;
1143 current_temperature = trial_temperature;
1144 incre_temperature.zeros();
1148 if(trial_constraint_resistance.is_empty())
return;
1149 current_constraint_resistance = trial_constraint_resistance;
1154 commit_pre_load_factor();
1156 commit_pre_settlement();
1157 commit_pre_resistance();
1158 commit_pre_damping_force();
1159 commit_pre_nonviscous_force();
1160 commit_pre_inertial_force();
1161 commit_pre_displacement();
1162 commit_pre_velocity();
1163 commit_pre_acceleration();
1164 commit_pre_temperature();
1192 access::rw(initialized) =
false;
1199 clear_load_factor();
1203 clear_damping_force();
1204 clear_nonviscous_force();
1205 clear_inertial_force();
1206 clear_displacement();
1208 clear_acceleration();
1209 clear_temperature();
1210 clear_auxiliary_resistance();
1216 if(!pre_load_factor.is_empty()) pre_load_factor.zeros();
1217 if(!trial_load_factor.is_empty()) trial_load_factor.zeros();
1218 if(!incre_load_factor.is_empty()) incre_load_factor.zeros();
1219 if(!current_load_factor.is_empty()) current_load_factor.zeros();
1223 if(!pre_load.is_empty()) pre_load.zeros();
1224 if(!trial_load.is_empty()) trial_load.zeros();
1225 if(!incre_load.is_empty()) incre_load.zeros();
1226 if(!current_load.is_empty()) current_load.zeros();
1230 if(!pre_settlement.is_empty()) pre_settlement.zeros();
1231 if(!trial_settlement.is_empty()) trial_settlement.zeros();
1232 if(!incre_settlement.is_empty()) incre_settlement.zeros();
1233 if(!current_settlement.is_empty()) current_settlement.zeros();
1237 if(!pre_resistance.is_empty()) pre_resistance.zeros();
1238 if(!trial_resistance.is_empty()) trial_resistance.zeros();
1239 if(!incre_resistance.is_empty()) incre_resistance.zeros();
1240 if(!current_resistance.is_empty()) current_resistance.zeros();
1244 if(!pre_damping_force.is_empty()) pre_damping_force.zeros();
1245 if(!trial_damping_force.is_empty()) trial_damping_force.zeros();
1246 if(!incre_damping_force.is_empty()) incre_damping_force.zeros();
1247 if(!current_damping_force.is_empty()) current_damping_force.zeros();
1251 if(!pre_nonviscous_force.is_empty()) pre_nonviscous_force.zeros();
1252 if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force.zeros();
1253 if(!incre_nonviscous_force.is_empty()) incre_nonviscous_force.zeros();
1254 if(!current_nonviscous_force.is_empty()) current_nonviscous_force.zeros();
1258 if(!pre_inertial_force.is_empty()) pre_inertial_force.zeros();
1259 if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros();
1260 if(!incre_inertial_force.is_empty()) incre_inertial_force.zeros();
1261 if(!current_inertial_force.is_empty()) current_inertial_force.zeros();
1265 if(!pre_displacement.is_empty()) pre_displacement.zeros();
1266 if(!trial_displacement.is_empty()) trial_displacement.zeros();
1267 if(!incre_displacement.is_empty()) incre_displacement.zeros();
1268 if(!current_displacement.is_empty()) current_displacement.zeros();
1272 if(!pre_velocity.is_empty()) pre_velocity.zeros();
1273 if(!trial_velocity.is_empty()) trial_velocity.zeros();
1274 if(!incre_velocity.is_empty()) incre_velocity.zeros();
1275 if(!current_velocity.is_empty()) current_velocity.zeros();
1279 if(!pre_acceleration.is_empty()) pre_acceleration.zeros();
1280 if(!trial_acceleration.is_empty()) trial_acceleration.zeros();
1281 if(!incre_acceleration.is_empty()) incre_acceleration.zeros();
1282 if(!current_acceleration.is_empty()) current_acceleration.zeros();
1286 if(!pre_temperature.is_empty()) pre_temperature.zeros();
1287 if(!trial_temperature.is_empty()) trial_temperature.zeros();
1288 if(!incre_temperature.is_empty()) incre_temperature.zeros();
1289 if(!current_temperature.is_empty()) current_temperature.zeros();
1293 if(!trial_constraint_resistance.is_empty()) trial_constraint_resistance.zeros();
1294 if(!current_constraint_resistance.is_empty()) current_constraint_resistance.zeros();
1301 reset_load_factor();
1305 reset_damping_force();
1306 reset_nonviscous_force();
1307 reset_inertial_force();
1308 reset_displacement();
1310 reset_acceleration();
1311 reset_temperature();
1312 reset_auxiliary_resistance();
1316 trial_time = current_time;
1321 if(trial_load_factor.is_empty())
return;
1322 trial_load_factor = current_load_factor;
1323 incre_load_factor.zeros();
1327 if(trial_load.is_empty())
return;
1328 trial_load = current_load;
1333 if(trial_settlement.is_empty())
return;
1334 trial_settlement = current_settlement;
1335 incre_settlement.zeros();
1339 if(trial_resistance.is_empty())
return;
1340 trial_resistance = current_resistance;
1341 incre_resistance.zeros();
1345 if(trial_damping_force.is_empty())
return;
1346 trial_damping_force = current_damping_force;
1347 incre_damping_force.zeros();
1351 if(trial_nonviscous_force.is_empty())
return;
1352 trial_nonviscous_force = current_nonviscous_force;
1353 incre_nonviscous_force.zeros();
1357 if(trial_inertial_force.is_empty())
return;
1358 trial_inertial_force = current_inertial_force;
1359 incre_inertial_force.zeros();
1363 if(trial_displacement.is_empty())
return;
1364 trial_displacement = current_displacement;
1365 incre_displacement.zeros();
1369 if(trial_velocity.is_empty())
return;
1370 trial_velocity = current_velocity;
1371 incre_velocity.zeros();
1375 if(trial_acceleration.is_empty())
return;
1376 trial_acceleration = current_acceleration;
1377 incre_acceleration.zeros();
1381 if(trial_temperature.is_empty())
return;
1382 trial_temperature = current_temperature;
1383 incre_temperature.zeros();
1387 if(trial_constraint_resistance.is_empty())
return;
1388 trial_constraint_resistance = current_constraint_resistance;
1392 if(!eigenvalue.is_empty()) eigenvalue.zeros();
1393 if(!eigenvector.is_empty()) eigenvector.zeros();
1408 auxiliary_load.reset();
1409 auxiliary_stiffness.set_size(n_size, 0);
1410 auxiliary_resistance.reset();
1411 auxiliary_encoding.reset();
1415 global_mass =
nullptr;
1416 global_damping =
nullptr;
1417 global_nonviscous =
nullptr;
1418 global_stiffness =
nullptr;
1419 global_geometry =
nullptr;
1423 if(ER.is_empty())
return;
1424 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_resistance(EI(I)) += ER(I);
1428 if(ER.is_empty())
return;
1429 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_damping_force(EI(I)) += ER(I);
1433 if(ER.is_empty())
return;
1434 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_nonviscous_force(EI(I)) += ER(I);
1438 if(ER.is_empty())
return;
1439 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_inertial_force(EI(I)) += ER(I);
1443 if(EM.is_empty())
return;
1446 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);
1449template<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); }
1451template<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); }
1453template<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); }
1455template<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); }
1457template<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); }
1460 if(EK.is_empty())
return;
1461 for(
auto I = EK.begin(); I != EK.end(); ++I) global_stiffness->at(EI(I.row()), EI(I.col())) += *I;
1465 suanpan_info(
"A Factory object with size of {}.\n", n_size);
1469#ifdef SUANPAN_DISTRIBUTED
1470 switch(storage_type) {
1472 return std::make_unique<FullMatCluster<T>>(n_size, n_size);
1474 return std::make_unique<FullSymmMatCluster<T>>(n_size, n_size);
1476 return std::make_unique<BandMatCluster<T>>(n_size, n_lobw, n_upbw);
1478 return std::make_unique<BandSymmMatCluster<T>>(n_size, n_lobw);
1484 return std::make_unique<SparseMatClusterMUMPS<T>>(n_size, n_size, n_elem);
1490 return std::make_unique<SparseSymmMatClusterMUMPS<T>>(n_size, n_size, n_elem);
1492 throw invalid_argument(
"need a proper storage scheme");
1495 switch(storage_type) {
1498 if(contain_solver_type(
SolverType::CUDA))
return std::make_unique<FullMatCUDA<T>>(n_size, n_size);
1500 return std::make_unique<FullMat<T>>(n_size, n_size);
1506 return std::make_unique<BandMat<T>>(n_size, n_lobw, n_upbw);
1508 return std::make_unique<BandSymmMat<T>>(n_size, n_lobw);
1510 return std::make_unique<SymmPackMat<T>>(n_size);
1513#pragma GCC diagnostic push
1514#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
1516#pragma GCC diagnostic pop
1529 return std::make_unique<SparseMatSuperLU<T>>(n_size, n_size, n_elem);
1531 throw invalid_argument(
"need a proper storage scheme");
1537 auto global_mat = get_basic_container();
1539 global_mat->set_solver_setting(setting);
1870 incre_time = trial_time - current_time;
1874 trial_load_factor = L;
1875 incre_load_factor = trial_load_factor - current_load_factor;
1880 incre_load = trial_load - current_load;
1884 trial_settlement =
S;
1885 incre_settlement = trial_settlement - current_settlement;
1889 trial_resistance = R;
1890 incre_resistance = trial_resistance - current_resistance;
1894 trial_damping_force = R;
1895 incre_damping_force = trial_damping_force - current_damping_force;
1899 trial_nonviscous_force = R;
1900 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
1904 trial_inertial_force = R;
1905 incre_inertial_force = trial_inertial_force - current_inertial_force;
1909 trial_displacement = D;
1910 incre_displacement = trial_displacement - current_displacement;
1915 incre_velocity = trial_velocity - current_velocity;
1919 trial_acceleration =
A;
1920 incre_acceleration = trial_acceleration - current_acceleration;
1924 trial_temperature =
M;
1925 incre_temperature = trial_temperature - current_temperature;
1930 trial_time = current_time + incre_time;
1934 incre_load_factor = L;
1935 trial_load_factor = current_load_factor + incre_load_factor;
1940 trial_load = current_load + incre_load;
1944 incre_settlement =
S;
1945 trial_settlement = current_settlement + incre_settlement;
1949 incre_resistance = R;
1950 trial_resistance = current_resistance + incre_resistance;
1954 incre_damping_force = R;
1955 trial_damping_force = current_damping_force + incre_damping_force;
1959 incre_nonviscous_force = R;
1960 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
1964 incre_inertial_force = R;
1965 trial_inertial_force = current_inertial_force + incre_inertial_force;
1969 incre_displacement = D;
1970 trial_displacement = current_displacement + incre_displacement;
1975 trial_velocity = current_velocity + incre_velocity;
1979 incre_acceleration =
A;
1980 trial_acceleration = current_acceleration + incre_acceleration;
1984 incre_temperature =
M;
1985 trial_temperature = current_temperature + incre_temperature;
1989 trial_time = current_time =
M;
1994 trial_load_factor = current_load_factor = L;
1995 incre_load_factor.zeros();
1999 trial_load = current_load = L;
2004 trial_settlement = current_settlement =
S;
2005 incre_settlement.zeros();
2009 trial_resistance = current_resistance = R;
2010 incre_resistance.zeros();
2014 trial_damping_force = current_damping_force = R;
2015 incre_damping_force.zeros();
2019 trial_nonviscous_force = current_nonviscous_force = R;
2020 incre_nonviscous_force.zeros();
2024 trial_inertial_force = current_inertial_force = R;
2025 incre_inertial_force.zeros();
2029 trial_displacement = current_displacement = D;
2030 incre_displacement.zeros();
2034 trial_velocity = current_velocity =
V;
2035 incre_velocity.zeros();
2039 trial_acceleration = current_acceleration =
A;
2040 incre_acceleration.zeros();
2044 trial_temperature = current_temperature =
M;
2045 incre_temperature.zeros();
2050 incre_time = trial_time - current_time;
2054 trial_load_factor += L;
2055 incre_load_factor = trial_load_factor - current_load_factor;
2060 incre_load = trial_load - current_load;
2064 trial_settlement +=
S;
2065 incre_settlement = trial_settlement - current_settlement;
2069 trial_resistance += R;
2070 incre_resistance = trial_resistance - current_resistance;
2074 trial_damping_force += R;
2075 incre_damping_force = trial_damping_force - current_damping_force;
2079 trial_nonviscous_force += R;
2080 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
2084 trial_inertial_force += R;
2085 incre_inertial_force = trial_inertial_force - current_inertial_force;
2089 trial_displacement += D;
2090 incre_displacement = trial_displacement - current_displacement;
2094 trial_velocity +=
V;
2095 incre_velocity = trial_velocity - current_velocity;
2099 trial_acceleration +=
A;
2100 incre_acceleration = trial_acceleration - current_acceleration;
2104 trial_temperature +=
M;
2105 incre_temperature = trial_temperature - current_temperature;
2110 trial_time = current_time + incre_time;
2114 incre_load_factor += L;
2115 trial_load_factor = current_load_factor + incre_load_factor;
2120 trial_load = current_load + incre_load;
2124 incre_settlement +=
S;
2125 trial_settlement = current_settlement + incre_settlement;
2129 incre_resistance += R;
2130 trial_resistance = current_resistance + incre_resistance;
2134 incre_damping_force += R;
2135 trial_damping_force = current_damping_force + incre_damping_force;
2139 incre_nonviscous_force += R;
2140 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
2144 incre_inertial_force += R;
2145 trial_inertial_force = current_inertial_force + incre_inertial_force;
2149 incre_displacement += D;
2150 trial_displacement = current_displacement + incre_displacement;
2154 incre_velocity +=
V;
2155 trial_velocity = current_velocity + incre_velocity;
2159 incre_acceleration +=
A;
2160 trial_acceleration = current_acceleration + incre_acceleration;
2164 incre_temperature +=
M;
2165 trial_temperature = current_temperature + incre_temperature;
2169 trial_time = current_time +=
M;
2174 trial_load_factor = current_load_factor += L;
2175 incre_load_factor.zeros();
2179 trial_load = current_load += L;
2184 trial_settlement = current_settlement +=
S;
2185 incre_settlement.zeros();
2189 trial_resistance = current_resistance += R;
2190 incre_resistance.zeros();
2194 trial_damping_force = current_damping_force += R;
2195 incre_damping_force.zeros();
2199 trial_nonviscous_force = current_nonviscous_force += R;
2200 incre_nonviscous_force.zeros();
2204 trial_inertial_force = current_inertial_force += R;
2205 incre_inertial_force.zeros();
2209 trial_displacement = current_displacement += D;
2210 incre_displacement.zeros();
2214 trial_velocity = current_velocity +=
V;
2215 incre_velocity.zeros();
2219 trial_acceleration = current_acceleration +=
A;
2220 incre_acceleration.zeros();
2224 trial_temperature = current_temperature +=
M;
2225 incre_temperature.zeros();
void reset(ExternalMaterialData *data, int *info)
Definition ElasticExternal.cpp:74
A BandMatMAGMA class that holds matrices.
Definition BandMatMAGMA.hpp:37
A BandMatSpike class that holds matrices.
Definition BandMatSpike.hpp:47
A Factory class.
Definition Factory.hpp:69
const bool initialized
Definition Factory.hpp:183
A SparseMatCUDA class that holds matrices.
Definition SparseMatCUDA.hpp:41
A SparseMatClusterLIS class that holds matrices.
Definition SparseMatClusterLIS.hpp:36
A SparseMatClusterPARDISO class that holds matrices.
A SparseMatFGMRES class that holds matrices.
Definition SparseMatFGMRES.hpp:38
A SparseMatMAGMA class that holds matrices.
Definition SparseMatMAGMA.hpp:255
A SparseMatPARDISO class that holds matrices.
void set_pre_inertial_force(const Col< T > &)
Definition Factory.hpp:1666
T & modify_trial_time()
Definition Factory.hpp:1772
void set_eigenvalue(const Col< T > &)
Definition Factory.hpp:953
void clear_acceleration()
Definition Factory.hpp:1278
void initialize_load()
Definition Factory.hpp:839
void set_mpc(unsigned)
Definition Factory.hpp:933
shared_ptr< MetaMat< T > > & modify_stiffness()
Definition Factory.hpp:1550
Col< T > & modify_trial_inertial_force()
Definition Factory.hpp:1786
Col< T > & modify_trial_nonviscous_force()
Definition Factory.hpp:1784
void commit_temperature()
Definition Factory.hpp:1141
bool is_sparse() const
Definition Factory.hpp:745
void update_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:2018
void set_incre_velocity(const Col< T > &)
Definition Factory.hpp:1622
uword get_entry() const
Definition Factory.hpp:699
void set_incre_temperature(const Col< T > &)
Definition Factory.hpp:1626
void assemble_stiffness(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1455
void print() const
Definition Factory.hpp:1464
void clear_resistance()
Definition Factory.hpp:1236
void initialize_auxiliary_resistance()
Definition Factory.hpp:899
void clear_load_factor()
Definition Factory.hpp:1215
void set_incre_acceleration(const Col< T > &)
Definition Factory.hpp:1624
int initialize()
Definition Factory.hpp:776
Col< T > & modify_incre_load()
Definition Factory.hpp:1800
const Col< T > & get_current_acceleration() const
Definition Factory.hpp:1744
void update_incre_damping_force_by(const Col< T > &)
Definition Factory.hpp:2133
const Col< T > & get_pre_damping_force() const
Definition Factory.hpp:1758
void reset_displacement()
Definition Factory.hpp:1362
void update_incre_temperature_by(const Col< T > &)
Definition Factory.hpp:2163
void set_ninja(const Col< T > &)
Definition Factory.hpp:927
Col< T > & modify_trial_damping_force()
Definition Factory.hpp:1782
void update_trial_temperature_by(const Col< T > &)
Definition Factory.hpp:2103
bool is_nlgeom() const
Definition Factory.hpp:707
void update_incre_load_factor_by(const Col< T > &)
Definition Factory.hpp:2113
const Mat< T > & get_eigenvector() const
Definition Factory.hpp:1029
const Col< T > & get_trial_velocity() const
Definition Factory.hpp:1694
const Col< T > & get_trial_resistance() const
Definition Factory.hpp:1684
void update_trial_load_factor_by(const Col< T > &)
Definition Factory.hpp:2053
const Col< T > & get_ninja() const
Definition Factory.hpp:957
Col< T > & modify_trial_temperature()
Definition Factory.hpp:1794
void set_pre_velocity(const Col< T > &)
Definition Factory.hpp:1670
const Col< T > & get_current_load() const
Definition Factory.hpp:1728
void set_trial_settlement(const Col< T > &)
Definition Factory.hpp:1586
void set_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1606
void set_trial_time(T)
Definition Factory.hpp:1580
Col< T > & modify_incre_resistance()
Definition Factory.hpp:1804
void update_incre_load_by(const Col< T > &)
Definition Factory.hpp:2118
void set_solver_type(SolverType)
Definition Factory.hpp:717
const Col< T > & get_pre_load() const
Definition Factory.hpp:1752
void commit_acceleration()
Definition Factory.hpp:1135
AnalysisType get_analysis_type() const
Definition Factory.hpp:735
void clear_nonviscous()
Definition Factory.hpp:1400
void set_current_resistance(const Col< T > &)
Definition Factory.hpp:1636
void update_incre_displacement(const Col< T > &)
Definition Factory.hpp:1968
void set_incre_displacement(const Col< T > &)
Definition Factory.hpp:1620
void update_current_acceleration_by(const Col< T > &)
Definition Factory.hpp:2218
const uvec & get_auxiliary_encoding() const
Definition Factory.hpp:965
void reset_auxiliary_resistance()
Definition Factory.hpp:1386
Col< T > & modify_pre_displacement()
Definition Factory.hpp:1860
void commit_resistance()
Definition Factory.hpp:1099
const Col< T > & get_incre_inertial_force() const
Definition Factory.hpp:1714
void set_storage_scheme(StorageScheme)
Definition Factory.hpp:737
void update_trial_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2078
void initialize_damping()
Definition Factory.hpp:906
void update_incre_velocity(const Col< T > &)
Definition Factory.hpp:1973
Col< T > & modify_incre_acceleration()
Definition Factory.hpp:1816
void initialize_geometry()
Definition Factory.hpp:916
void update_incre_displacement_by(const Col< T > &)
Definition Factory.hpp:2148
void update_current_damping_force_by(const Col< T > &)
Definition Factory.hpp:2193
void assemble_mass(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1449
void set_trial_velocity(const Col< T > &)
Definition Factory.hpp:1598
void update_current_resistance(const Col< T > &)
Definition Factory.hpp:2008
void clear_inertial_force()
Definition Factory.hpp:1257
Col< T > & modify_ninja()
Definition Factory.hpp:1554
void set_pre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1664
void update_trial_damping_force_by(const Col< T > &)
Definition Factory.hpp:2073
unsigned get_mpc() const
Definition Factory.hpp:961
Col< T > & modify_eigenvalue()
Definition Factory.hpp:1576
const Col< T > & get_current_settlement() const
Definition Factory.hpp:1730
const SolverSetting< double > & get_solver_setting() const
Definition Factory.hpp:727
void commit_load_factor()
Definition Factory.hpp:1081
std::mutex & get_damping_mutex()
Definition Factory.hpp:1019
void update_trial_velocity_by(const Col< T > &)
Definition Factory.hpp:2093
void update_current_load_by(const Col< T > &)
Definition Factory.hpp:2178
SpCol< T > & modify_trial_constraint_resistance()
Definition Factory.hpp:1572
const shared_ptr< MetaMat< T > > & get_damping() const
Definition Factory.hpp:993
void set_pre_settlement(const Col< T > &)
Definition Factory.hpp:1658
void set_nlgeom(bool)
Definition Factory.hpp:701
StorageScheme get_storage_scheme() const
Definition Factory.hpp:743
void commit_inertial_force()
Definition Factory.hpp:1117
void update_current_time(T)
Definition Factory.hpp:1988
void initialize_resistance()
Definition Factory.hpp:851
const Col< T > & get_current_damping_force() const
Definition Factory.hpp:1734
void set_solver_setting(const SolverSetting< double > &)
Definition Factory.hpp:725
void update_trial_displacement_by(const Col< T > &)
Definition Factory.hpp:2088
void set_mass(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:943
void reset_velocity()
Definition Factory.hpp:1368
const shared_ptr< MetaMat< T > > & get_nonviscous() const
Definition Factory.hpp:995
const Col< T > & get_trial_load_factor() const
Definition Factory.hpp:1678
void set_current_load(const Col< T > &)
Definition Factory.hpp:1632
std::mutex & get_trial_load_mutex()
Definition Factory.hpp:1011
void initialize_stiffness()
Definition Factory.hpp:914
void initialize_damping_force()
Definition Factory.hpp:857
T get_current_time() const
Definition Factory.hpp:1724
const Col< T > & get_pre_settlement() const
Definition Factory.hpp:1754
void update_trial_temperature(const Col< T > &)
Definition Factory.hpp:1923
void commit_velocity()
Definition Factory.hpp:1129
void set_pre_time(T)
Definition Factory.hpp:1652
T get_complementary_energy()
Definition Factory.hpp:987
void reset()
Definition Factory.hpp:1414
const Col< T > & get_incre_displacement() const
Definition Factory.hpp:1716
void set_current_damping_force(const Col< T > &)
Definition Factory.hpp:1638
Col< T > & modify_current_nonviscous_force()
Definition Factory.hpp:1832
void update_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1918
void set_current_time(T)
Definition Factory.hpp:1628
const Col< T > & get_auxiliary_load() const
Definition Factory.hpp:971
void commit_pre_settlement()
Definition Factory.hpp:1173
Col< T > & modify_pre_settlement()
Definition Factory.hpp:1850
const shared_ptr< MetaMat< T > > & get_mass() const
Definition Factory.hpp:991
void commit_status()
Definition Factory.hpp:1056
void commit_pre_load_factor()
Definition Factory.hpp:1169
const suanpan::set< uword > & get_reference_dof() const
Definition Factory.hpp:770
std::pair< unsigned, unsigned > get_bandwidth() const
Definition Factory.hpp:755
void set_incre_time(T)
Definition Factory.hpp:1604
shared_ptr< MetaMat< T > > & modify_damping()
Definition Factory.hpp:1546
Col< T > & modify_pre_velocity()
Definition Factory.hpp:1862
std::mutex & get_reference_load_mutex()
Definition Factory.hpp:1015
void assemble_damping(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1451
void update_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1958
void update_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1903
void set_current_velocity(const Col< T > &)
Definition Factory.hpp:1646
void commit_displacement()
Definition Factory.hpp:1123
void update_current_velocity_by(const Col< T > &)
Definition Factory.hpp:2213
const Col< T > & get_incre_damping_force() const
Definition Factory.hpp:1710
void update_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1873
void reset_load_factor()
Definition Factory.hpp:1320
void clear_velocity()
Definition Factory.hpp:1271
void update_current_load(const Col< T > &)
Definition Factory.hpp:1998
void update_incre_time(T)
Definition Factory.hpp:1928
void update_incre_settlement_by(const Col< T > &)
Definition Factory.hpp:2123
unsigned get_reference_size() const
Definition Factory.hpp:764
void update_current_acceleration(const Col< T > &)
Definition Factory.hpp:2038
StorageScheme
Definition Factory.hpp:48
void commit_pre_temperature()
Definition Factory.hpp:1189
void commit_pre_status()
Definition Factory.hpp:1152
void update_current_time_by(T)
Definition Factory.hpp:2168
suanpan::set< uword > & modify_reference_dof()
Definition Factory.hpp:1558
void set_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1600
void update_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1893
const Col< T > & get_incre_settlement() const
Definition Factory.hpp:1706
void reset_inertial_force()
Definition Factory.hpp:1356
void set_reference_dof(const suanpan::set< uword > &)
Definition Factory.hpp:768
const Col< T > & get_momentum()
Definition Factory.hpp:989
void update_current_displacement(const Col< T > &)
Definition Factory.hpp:2028
void clear_settlement()
Definition Factory.hpp:1229
void set_pre_load(const Col< T > &)
Definition Factory.hpp:1656
std::mutex & get_auxiliary_stiffness_mutex()
Definition Factory.hpp:1007
T get_incre_time() const
Definition Factory.hpp:1700
void commit_pre_damping_force()
Definition Factory.hpp:1177
Col< T > & modify_current_inertial_force()
Definition Factory.hpp:1834
const Col< T > & get_current_nonviscous_force() const
Definition Factory.hpp:1736
T get_strain_energy()
Definition Factory.hpp:979
void commit_pre_inertial_force()
Definition Factory.hpp:1181
void update_trial_settlement(const Col< T > &)
Definition Factory.hpp:1883
void set_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1594
const Col< T > & get_eigenvalue() const
Definition Factory.hpp:1027
void commit_pre_displacement()
Definition Factory.hpp:1183
std::mutex & get_geometry_mutex()
Definition Factory.hpp:1025
void set_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1616
void commit_pre_acceleration()
Definition Factory.hpp:1187
const Col< T > & get_incre_velocity() const
Definition Factory.hpp:1718
Col< T > & modify_current_settlement()
Definition Factory.hpp:1826
T get_trial_time() const
Definition Factory.hpp:1676
void update_current_temperature_by(const Col< T > &)
Definition Factory.hpp:2223
void set_geometry(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:951
void set_incre_load(const Col< T > &)
Definition Factory.hpp:1608
void update_reference_size()
Definition Factory.hpp:757
void set_pre_acceleration(const Col< T > &)
Definition Factory.hpp:1672
void set_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1618
const Col< T > & get_trial_nonviscous_force() const
Definition Factory.hpp:1688
T get_kinetic_energy()
Definition Factory.hpp:981
void set_current_settlement(const Col< T > &)
Definition Factory.hpp:1634
void update_trial_settlement_by(const Col< T > &)
Definition Factory.hpp:2063
void initialize_inertial_force()
Definition Factory.hpp:869
void set_pre_resistance(const Col< T > &)
Definition Factory.hpp:1660
void commit_load()
Definition Factory.hpp:1087
void update_current_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2198
void update_trial_acceleration_by(const Col< T > &)
Definition Factory.hpp:2098
const Col< T > & get_pre_acceleration() const
Definition Factory.hpp:1768
void update_incre_acceleration_by(const Col< T > &)
Definition Factory.hpp:2158
void commit_pre_nonviscous_force()
Definition Factory.hpp:1179
void commit_pre_load()
Definition Factory.hpp:1171
void commit_pre_velocity()
Definition Factory.hpp:1185
void update_trial_resistance_by(const Col< T > &)
Definition Factory.hpp:2068
Col< T > & modify_current_resistance()
Definition Factory.hpp:1828
AnalysisType
Definition Factory.hpp:39
bool is_nonviscous() const
Definition Factory.hpp:715
void commit_pre_time()
Definition Factory.hpp:1167
shared_ptr< MetaMat< T > > & modify_geometry()
Definition Factory.hpp:1552
void commit_auxiliary_resistance()
Definition Factory.hpp:1147
void update_current_settlement(const Col< T > &)
Definition Factory.hpp:2003
void update_trial_load(const Col< T > &)
Definition Factory.hpp:1878
Col< T > & modify_pre_nonviscous_force()
Definition Factory.hpp:1856
void update_incre_load(const Col< T > &)
Definition Factory.hpp:1938
void update_trial_time(T)
Definition Factory.hpp:1868
void clear_nonviscous_force()
Definition Factory.hpp:1250
const shared_ptr< MetaMat< T > > & get_stiffness() const
Definition Factory.hpp:997
void commit_settlement()
Definition Factory.hpp:1093
void set_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1592
const Col< T > & get_auxiliary_lambda() const
Definition Factory.hpp:967
void reset_load()
Definition Factory.hpp:1326
void reset_damping_force()
Definition Factory.hpp:1344
void update_current_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2203
void set_trial_temperature(const Col< T > &)
Definition Factory.hpp:1602
std::mutex & get_auxiliary_encoding_mutex()
Definition Factory.hpp:1001
Col< T > & modify_trial_load()
Definition Factory.hpp:1776
SolverType
Definition Factory.hpp:57
void assemble_damping_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1427
void set_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1640
const Col< T > & get_pre_displacement() const
Definition Factory.hpp:1764
void set_sub_solver_type(SolverType)
Definition Factory.hpp:719
const Col< T > & get_current_inertial_force() const
Definition Factory.hpp:1738
std::mutex & get_mass_mutex()
Definition Factory.hpp:1017
void set_nonviscous(bool)
Definition Factory.hpp:709
const Col< T > & get_pre_load_factor() const
Definition Factory.hpp:1750
Col< T > & modify_current_acceleration()
Definition Factory.hpp:1840
const Col< T > & get_trial_displacement() const
Definition Factory.hpp:1692
void update_trial_velocity(const Col< T > &)
Definition Factory.hpp:1913
void update_current_temperature(const Col< T > &)
Definition Factory.hpp:2043
void reset_temperature()
Definition Factory.hpp:1380
std::mutex & get_auxiliary_resistance_mutex()
Definition Factory.hpp:1003
void set_current_acceleration(const Col< T > &)
Definition Factory.hpp:1648
T get_nonviscous_energy()
Definition Factory.hpp:985
void update_current_settlement_by(const Col< T > &)
Definition Factory.hpp:2183
void initialize_settlement()
Definition Factory.hpp:845
void clear_damping()
Definition Factory.hpp:1398
const Col< T > & get_incre_nonviscous_force() const
Definition Factory.hpp:1712
const Col< T > & get_incre_load_factor() const
Definition Factory.hpp:1702
void clear_energy()
Definition Factory.hpp:1047
const SpMat< T > & get_reference_load() const
Definition Factory.hpp:963
void initialize_displacement()
Definition Factory.hpp:875
Col< T > & modify_auxiliary_load()
Definition Factory.hpp:1568
void reset_time()
Definition Factory.hpp:1315
const Col< T > & get_current_displacement() const
Definition Factory.hpp:1740
Col< T > & modify_current_velocity()
Definition Factory.hpp:1838
unsigned get_size() const
Definition Factory.hpp:692
T & modify_current_time()
Definition Factory.hpp:1820
void reset_settlement()
Definition Factory.hpp:1332
void clear_damping_force()
Definition Factory.hpp:1243
void set_analysis_type(AnalysisType)
Definition Factory.hpp:729
const Col< T > & get_incre_load() const
Definition Factory.hpp:1704
void initialize_nonviscous_force()
Definition Factory.hpp:863
void set_entry(uword)
Definition Factory.hpp:694
Col< T > & modify_pre_damping_force()
Definition Factory.hpp:1854
const Col< T > & get_incre_acceleration() const
Definition Factory.hpp:1720
T get_pre_time() const
Definition Factory.hpp:1748
void clear_geometry()
Definition Factory.hpp:1404
T get_viscous_energy()
Definition Factory.hpp:983
std::mutex & get_trial_constraint_resistance_mutex()
Definition Factory.hpp:1009
const Col< T > & get_current_temperature() const
Definition Factory.hpp:1746
void update_incre_time_by(T)
Definition Factory.hpp:2108
void assemble_nonviscous(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1453
void set_reference_size(unsigned)
Definition Factory.hpp:759
Col< T > & modify_trial_settlement()
Definition Factory.hpp:1778
void initialize_temperature()
Definition Factory.hpp:893
void set_current_displacement(const Col< T > &)
Definition Factory.hpp:1644
void update_reference_dof(const uvec &)
Definition Factory.hpp:766
const Col< T > & get_trial_inertial_force() const
Definition Factory.hpp:1690
void set_current_inertial_force(const Col< T > &)
Definition Factory.hpp:1642
SpCol< T > & modify_current_constraint_resistance()
Definition Factory.hpp:1574
Col< T > & modify_incre_load_factor()
Definition Factory.hpp:1798
void set_trial_load(const Col< T > &)
Definition Factory.hpp:1584
Col< T > & modify_auxiliary_resistance()
Definition Factory.hpp:1566
Col< T > & modify_pre_resistance()
Definition Factory.hpp:1852
Col< T > & modify_incre_temperature()
Definition Factory.hpp:1818
T & modify_pre_time()
Definition Factory.hpp:1844
void update_incre_temperature(const Col< T > &)
Definition Factory.hpp:1983
shared_ptr< MetaMat< T > > & modify_nonviscous()
Definition Factory.hpp:1548
void update_current_velocity(const Col< T > &)
Definition Factory.hpp:2033
void set_error(T)
Definition Factory.hpp:772
Col< T > & modify_incre_nonviscous_force()
Definition Factory.hpp:1808
void assemble_geometry(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1457
const Col< T > & get_trial_settlement() const
Definition Factory.hpp:1682
void set_eigenvector(const Mat< T > &)
Definition Factory.hpp:955
void initialize_load_factor()
Definition Factory.hpp:829
Col< T > & modify_incre_inertial_force()
Definition Factory.hpp:1810
const Col< T > & get_trial_load() const
Definition Factory.hpp:1680
bool contain_sub_solver_type(SolverType) const
Definition Factory.hpp:723
uvec & modify_auxiliary_encoding()
Definition Factory.hpp:1562
void update_current_displacement_by(const Col< T > &)
Definition Factory.hpp:2208
void set_trial_resistance(const Col< T > &)
Definition Factory.hpp:1588
void commit_nonviscous_force()
Definition Factory.hpp:1111
void set_pre_load_factor(const Col< T > &)
Definition Factory.hpp:1654
void update_current_damping_force(const Col< T > &)
Definition Factory.hpp:2013
Col< T > & modify_current_damping_force()
Definition Factory.hpp:1830
void update_current_load_factor(const Col< T > &)
Definition Factory.hpp:1993
void commit_energy()
Definition Factory.hpp:1031
void commit_damping_force()
Definition Factory.hpp:1105
T get_error() const
Definition Factory.hpp:774
void update_trial_time_by(T)
Definition Factory.hpp:2048
void update_incre_acceleration(const Col< T > &)
Definition Factory.hpp:1978
const SpMat< T > & get_auxiliary_stiffness() const
Definition Factory.hpp:973
void assemble_inertial_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1437
void clear_status()
Definition Factory.hpp:1191
void set_bandwidth(unsigned, unsigned)
Definition Factory.hpp:747
void update_incre_velocity_by(const Col< T > &)
Definition Factory.hpp:2153
const Col< T > & get_current_load_factor() const
Definition Factory.hpp:1726
void commit_time()
Definition Factory.hpp:1076
void clear_mass()
Definition Factory.hpp:1396
const Col< T > & get_pre_inertial_force() const
Definition Factory.hpp:1762
void commit_pre_resistance()
Definition Factory.hpp:1175
void update_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1898
void reset_resistance()
Definition Factory.hpp:1338
Col< T > & modify_pre_temperature()
Definition Factory.hpp:1866
std::mutex & get_auxiliary_load_mutex()
Definition Factory.hpp:1005
const Col< T > & get_trial_acceleration() const
Definition Factory.hpp:1696
void assemble_resistance(const Mat< T > &, const uvec &)
Definition Factory.hpp:1422
void set_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1614
Col< T > & modify_incre_displacement()
Definition Factory.hpp:1812
Col< T > & modify_pre_load()
Definition Factory.hpp:1848
const SpCol< T > & get_trial_constraint_resistance() const
Definition Factory.hpp:975
void update_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1953
const Col< T > & get_pre_velocity() const
Definition Factory.hpp:1766
const Col< T > & get_current_resistance() const
Definition Factory.hpp:1732
void assemble_nonviscous_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1432
void initialize_velocity()
Definition Factory.hpp:881
std::mutex & get_stiffness_mutex()
Definition Factory.hpp:1023
Col< T > & modify_pre_acceleration()
Definition Factory.hpp:1864
void update_incre_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2143
const Col< T > & get_current_velocity() const
Definition Factory.hpp:1742
void update_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1933
SpMat< T > & modify_auxiliary_stiffness()
Definition Factory.hpp:1570
void set_incre_resistance(const Col< T > &)
Definition Factory.hpp:1612
void initialize_nonviscous()
Definition Factory.hpp:908
Col< T > & modify_trial_velocity()
Definition Factory.hpp:1790
Col< T > & modify_trial_displacement()
Definition Factory.hpp:1788
const Col< T > & get_pre_temperature() const
Definition Factory.hpp:1770
Col< T > & modify_trial_acceleration()
Definition Factory.hpp:1792
void clear_load()
Definition Factory.hpp:1222
const Col< T > & get_incre_temperature() const
Definition Factory.hpp:1722
Col< T > & modify_pre_load_factor()
Definition Factory.hpp:1846
Factory(unsigned=0, AnalysisType=AnalysisType::NONE, StorageScheme=StorageScheme::FULL)
Definition Factory.hpp:681
Col< T > & modify_trial_load_factor()
Definition Factory.hpp:1774
void set_size(unsigned)
Definition Factory.hpp:686
void update_trial_displacement(const Col< T > &)
Definition Factory.hpp:1908
const Col< T > & get_incre_resistance() const
Definition Factory.hpp:1708
Col< T > & modify_trial_resistance()
Definition Factory.hpp:1780
const Col< T > & get_sushi() const
Definition Factory.hpp:959
const Col< T > & get_auxiliary_resistance() const
Definition Factory.hpp:969
const Col< T > & get_trial_damping_force() const
Definition Factory.hpp:1686
Mat< T > & modify_eigenvector()
Definition Factory.hpp:1578
void update_current_resistance_by(const Col< T > &)
Definition Factory.hpp:2188
void set_pre_temperature(const Col< T > &)
Definition Factory.hpp:1674
void update_trial_load_by(const Col< T > &)
Definition Factory.hpp:2058
Col< T > & modify_auxiliary_lambda()
Definition Factory.hpp:1564
const SpCol< T > & get_current_constraint_resistance() const
Definition Factory.hpp:977
void clear_auxiliary_resistance()
Definition Factory.hpp:1292
const Col< T > & get_pre_nonviscous_force() const
Definition Factory.hpp:1760
bool contain_solver_type(SolverType) const
Definition Factory.hpp:721
void update_incre_resistance_by(const Col< T > &)
Definition Factory.hpp:2128
void update_sushi_by(const Col< T > &)
Definition Factory.hpp:931
void set_incre_settlement(const Col< T > &)
Definition Factory.hpp:1610
Col< T > & modify_pre_inertial_force()
Definition Factory.hpp:1858
void set_sushi(const Col< T > &)
Definition Factory.hpp:929
shared_ptr< MetaMat< T > > & modify_mass()
Definition Factory.hpp:1544
void update_incre_settlement(const Col< T > &)
Definition Factory.hpp:1943
void set_pre_displacement(const Col< T > &)
Definition Factory.hpp:1668
std::mutex & get_nonviscous_mutex()
Definition Factory.hpp:1021
void set_current_load_factor(const Col< T > &)
Definition Factory.hpp:1630
void set_trial_displacement(const Col< T > &)
Definition Factory.hpp:1596
void update_trial_resistance(const Col< T > &)
Definition Factory.hpp:1888
Col< T > & modify_current_load_factor()
Definition Factory.hpp:1822
void clear_eigen()
Definition Factory.hpp:1391
void clear_auxiliary()
Definition Factory.hpp:1406
void set_reference_load(const SpMat< T > &)
Definition Factory.hpp:941
T & modify_incre_time()
Definition Factory.hpp:1796
void update_incre_resistance(const Col< T > &)
Definition Factory.hpp:1948
SpMat< T > & modify_reference_load()
Definition Factory.hpp:1560
Col< T > & modify_incre_damping_force()
Definition Factory.hpp:1806
Col< T > & modify_incre_settlement()
Definition Factory.hpp:1802
void update_current_load_factor_by(const Col< T > &)
Definition Factory.hpp:2173
void set_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1582
void initialize_eigen()
Definition Factory.hpp:922
void update_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1963
void clear_time()
Definition Factory.hpp:1213
void set_stiffness(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:949
void clear_displacement()
Definition Factory.hpp:1264
const shared_ptr< MetaMat< T > > & get_geometry() const
Definition Factory.hpp:999
Col< T > & modify_current_load()
Definition Factory.hpp:1824
void reset_status()
Definition Factory.hpp:1297
Col< T > & modify_current_temperature()
Definition Factory.hpp:1842
void update_current_inertial_force(const Col< T > &)
Definition Factory.hpp:2023
const Col< T > & get_trial_temperature() const
Definition Factory.hpp:1698
void set_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1590
std::mutex & get_trial_settlement_mutex()
Definition Factory.hpp:1013
void initialize_mass()
Definition Factory.hpp:904
Col< T > & modify_sushi()
Definition Factory.hpp:1556
void set_pre_damping_force(const Col< T > &)
Definition Factory.hpp:1662
void clear_temperature()
Definition Factory.hpp:1285
Col< T > & modify_current_displacement()
Definition Factory.hpp:1836
void initialize_acceleration()
Definition Factory.hpp:887
void update_trial_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2083
void set_current_temperature(const Col< T > &)
Definition Factory.hpp:1650
Col< T > & modify_incre_velocity()
Definition Factory.hpp:1814
void set_damping(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:945
void reset_acceleration()
Definition Factory.hpp:1374
void reset_nonviscous_force()
Definition Factory.hpp:1350
const Col< T > & get_pre_resistance() const
Definition Factory.hpp:1756
void clear_stiffness()
Definition Factory.hpp:1402
void update_incre_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2138
std::set< T > set
Definition container.h:54
Definition SolverSetting.hpp:28
#define suanpan_info
Definition suanPan.h:369