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;
93 SolverSetting<T> setting{};
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{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; }
227 [[nodiscard]] std::pair<unsigned, unsigned>
get_bandwidth()
const;
327 void set_mass(
const shared_ptr<MetaMat<T>>&);
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;
766 if(
S == n_rfld)
return;
783 reference_dof.clear();
785 if(initialized || n_size == 0)
return 0;
792 switch(analysis_type) {
794 initialize_displacement();
798 initialize_stiffness();
804 initialize_resistance();
805 initialize_displacement();
806 initialize_stiffness();
807 initialize_geometry();
811 initialize_resistance();
812 initialize_damping_force();
813 initialize_nonviscous_force();
814 initialize_inertial_force();
815 initialize_displacement();
816 initialize_velocity();
817 initialize_acceleration();
819 initialize_damping();
820 initialize_nonviscous();
821 initialize_stiffness();
822 initialize_geometry();
828 initialize_auxiliary_resistance();
830 access::rw(initialized) =
true;
836 if(n_rfld == 0)
return;
838 trial_load_factor.zeros(n_rfld);
839 incre_load_factor.zeros(n_rfld);
840 current_load_factor.zeros(n_rfld);
842 reference_load.zeros(n_size, n_rfld);
846 trial_load.zeros(n_size);
847 incre_load.zeros(n_size);
848 current_load.zeros(n_size);
852 trial_settlement.zeros(n_size);
853 incre_settlement.zeros(n_size);
854 current_settlement.zeros(n_size);
858 trial_resistance.zeros(n_size);
859 incre_resistance.zeros(n_size);
860 current_resistance.zeros(n_size);
864 trial_damping_force.zeros(n_size);
865 incre_damping_force.zeros(n_size);
866 current_damping_force.zeros(n_size);
870 trial_nonviscous_force.zeros(n_size);
871 incre_nonviscous_force.zeros(n_size);
872 current_nonviscous_force.zeros(n_size);
876 trial_inertial_force.zeros(n_size);
877 incre_inertial_force.zeros(n_size);
878 current_inertial_force.zeros(n_size);
882 trial_displacement.zeros(n_size);
883 incre_displacement.zeros(n_size);
884 current_displacement.zeros(n_size);
888 trial_velocity.zeros(n_size);
889 incre_velocity.zeros(n_size);
890 current_velocity.zeros(n_size);
894 trial_acceleration.zeros(n_size);
895 incre_acceleration.zeros(n_size);
896 current_acceleration.zeros(n_size);
900 trial_temperature.zeros(n_size);
901 incre_temperature.zeros(n_size);
902 current_temperature.zeros(n_size);
906 trial_constraint_resistance.zeros(n_size);
907 current_constraint_resistance.zeros(n_size);
915 if(!nonviscous)
return;
917 global_nonviscous = get_matrix_container();
925 global_geometry = get_matrix_container();
929 eigenvalue.zeros(n_size);
930 eigenvector.zeros(n_size, n_size);
941 auxiliary_encoding.zeros(n_mpc);
942 auxiliary_resistance.zeros(n_mpc);
943 auxiliary_load.zeros(n_mpc);
944 auxiliary_stiffness.zeros(n_size, n_mpc);
1038 auto se = std::async([&] {
if(!trial_resistance.empty() && !incre_displacement.empty()) strain_energy += .5 * dot(trial_resistance + current_resistance, incre_displacement); });
1039 auto ke = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) kinetic_energy = .5 * dot(global_mass * trial_velocity, trial_velocity); });
1040 auto ve = std::async([&] {
if(!trial_damping_force.empty() && !incre_displacement.empty()) viscous_energy += .5 * dot(trial_damping_force + current_damping_force, incre_displacement); });
1041 auto ne = std::async([&] {
if(!trial_nonviscous_force.empty() && !incre_displacement.empty()) nonviscous_energy += .5 * dot(trial_nonviscous_force + current_nonviscous_force, incre_displacement); });
1042 auto ce = std::async([&] {
if(!trial_displacement.empty() && !incre_resistance.empty()) complementary_energy += .5 * dot(trial_displacement + current_displacement, incre_resistance); });
1043 auto mm = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) momentum = global_mass * trial_velocity; });
1054 strain_energy =
T(0);
1055 kinetic_energy =
T(0);
1056 viscous_energy =
T(0);
1057 nonviscous_energy =
T(0);
1058 complementary_energy =
T(0);
1068 commit_load_factor();
1070 commit_settlement();
1071 commit_resistance();
1072 commit_damping_force();
1073 commit_nonviscous_force();
1074 commit_inertial_force();
1075 commit_displacement();
1077 commit_acceleration();
1078 commit_temperature();
1079 commit_auxiliary_resistance();
1083 current_time = trial_time;
1088 if(trial_load_factor.is_empty())
return;
1089 current_load_factor = trial_load_factor;
1090 incre_load_factor.zeros();
1094 if(trial_load.is_empty())
return;
1095 current_load = trial_load;
1100 if(trial_settlement.is_empty())
return;
1101 current_settlement = trial_settlement;
1102 incre_settlement.zeros();
1106 if(trial_resistance.is_empty())
return;
1107 current_resistance = trial_resistance;
1108 incre_resistance.zeros();
1112 if(trial_damping_force.is_empty())
return;
1113 current_damping_force = trial_damping_force;
1114 incre_damping_force.zeros();
1118 if(trial_nonviscous_force.is_empty())
return;
1119 current_nonviscous_force = trial_nonviscous_force;
1120 incre_nonviscous_force.zeros();
1124 if(trial_inertial_force.is_empty())
return;
1125 current_inertial_force = trial_inertial_force;
1126 incre_inertial_force.zeros();
1130 if(trial_displacement.is_empty())
return;
1131 current_displacement = trial_displacement;
1132 incre_displacement.zeros();
1136 if(trial_velocity.is_empty())
return;
1137 current_velocity = trial_velocity;
1138 incre_velocity.zeros();
1142 if(trial_acceleration.is_empty())
return;
1143 current_acceleration = trial_acceleration;
1144 incre_acceleration.zeros();
1148 if(trial_temperature.is_empty())
return;
1149 current_temperature = trial_temperature;
1150 incre_temperature.zeros();
1154 if(trial_constraint_resistance.is_empty())
return;
1155 current_constraint_resistance = trial_constraint_resistance;
1160 commit_pre_load_factor();
1162 commit_pre_settlement();
1163 commit_pre_resistance();
1164 commit_pre_damping_force();
1165 commit_pre_nonviscous_force();
1166 commit_pre_inertial_force();
1167 commit_pre_displacement();
1168 commit_pre_velocity();
1169 commit_pre_acceleration();
1170 commit_pre_temperature();
1198 access::rw(initialized) =
false;
1205 clear_load_factor();
1209 clear_damping_force();
1210 clear_nonviscous_force();
1211 clear_inertial_force();
1212 clear_displacement();
1214 clear_acceleration();
1215 clear_temperature();
1216 clear_auxiliary_resistance();
1222 if(!pre_load_factor.is_empty()) pre_load_factor.zeros();
1223 if(!trial_load_factor.is_empty()) trial_load_factor.zeros();
1224 if(!incre_load_factor.is_empty()) incre_load_factor.zeros();
1225 if(!current_load_factor.is_empty()) current_load_factor.zeros();
1229 if(!pre_load.is_empty()) pre_load.zeros();
1230 if(!trial_load.is_empty()) trial_load.zeros();
1231 if(!incre_load.is_empty()) incre_load.zeros();
1232 if(!current_load.is_empty()) current_load.zeros();
1236 if(!pre_settlement.is_empty()) pre_settlement.zeros();
1237 if(!trial_settlement.is_empty()) trial_settlement.zeros();
1238 if(!incre_settlement.is_empty()) incre_settlement.zeros();
1239 if(!current_settlement.is_empty()) current_settlement.zeros();
1243 if(!pre_resistance.is_empty()) pre_resistance.zeros();
1244 if(!trial_resistance.is_empty()) trial_resistance.zeros();
1245 if(!incre_resistance.is_empty()) incre_resistance.zeros();
1246 if(!current_resistance.is_empty()) current_resistance.zeros();
1250 if(!pre_damping_force.is_empty()) pre_damping_force.zeros();
1251 if(!trial_damping_force.is_empty()) trial_damping_force.zeros();
1252 if(!incre_damping_force.is_empty()) incre_damping_force.zeros();
1253 if(!current_damping_force.is_empty()) current_damping_force.zeros();
1257 if(!pre_nonviscous_force.is_empty()) pre_nonviscous_force.zeros();
1258 if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force.zeros();
1259 if(!incre_nonviscous_force.is_empty()) incre_nonviscous_force.zeros();
1260 if(!current_nonviscous_force.is_empty()) current_nonviscous_force.zeros();
1264 if(!pre_inertial_force.is_empty()) pre_inertial_force.zeros();
1265 if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros();
1266 if(!incre_inertial_force.is_empty()) incre_inertial_force.zeros();
1267 if(!current_inertial_force.is_empty()) current_inertial_force.zeros();
1271 if(!pre_displacement.is_empty()) pre_displacement.zeros();
1272 if(!trial_displacement.is_empty()) trial_displacement.zeros();
1273 if(!incre_displacement.is_empty()) incre_displacement.zeros();
1274 if(!current_displacement.is_empty()) current_displacement.zeros();
1278 if(!pre_velocity.is_empty()) pre_velocity.zeros();
1279 if(!trial_velocity.is_empty()) trial_velocity.zeros();
1280 if(!incre_velocity.is_empty()) incre_velocity.zeros();
1281 if(!current_velocity.is_empty()) current_velocity.zeros();
1285 if(!pre_acceleration.is_empty()) pre_acceleration.zeros();
1286 if(!trial_acceleration.is_empty()) trial_acceleration.zeros();
1287 if(!incre_acceleration.is_empty()) incre_acceleration.zeros();
1288 if(!current_acceleration.is_empty()) current_acceleration.zeros();
1292 if(!pre_temperature.is_empty()) pre_temperature.zeros();
1293 if(!trial_temperature.is_empty()) trial_temperature.zeros();
1294 if(!incre_temperature.is_empty()) incre_temperature.zeros();
1295 if(!current_temperature.is_empty()) current_temperature.zeros();
1299 if(!trial_constraint_resistance.is_empty()) trial_constraint_resistance.zeros();
1300 if(!current_constraint_resistance.is_empty()) current_constraint_resistance.zeros();
1307 reset_load_factor();
1311 reset_damping_force();
1312 reset_nonviscous_force();
1313 reset_inertial_force();
1314 reset_displacement();
1316 reset_acceleration();
1317 reset_temperature();
1318 reset_auxiliary_resistance();
1322 trial_time = current_time;
1327 if(trial_load_factor.is_empty())
return;
1328 trial_load_factor = current_load_factor;
1329 incre_load_factor.zeros();
1333 if(trial_load.is_empty())
return;
1334 trial_load = current_load;
1339 if(trial_settlement.is_empty())
return;
1340 trial_settlement = current_settlement;
1341 incre_settlement.zeros();
1345 if(trial_resistance.is_empty())
return;
1346 trial_resistance = current_resistance;
1347 incre_resistance.zeros();
1351 if(trial_damping_force.is_empty())
return;
1352 trial_damping_force = current_damping_force;
1353 incre_damping_force.zeros();
1357 if(trial_nonviscous_force.is_empty())
return;
1358 trial_nonviscous_force = current_nonviscous_force;
1359 incre_nonviscous_force.zeros();
1363 if(trial_inertial_force.is_empty())
return;
1364 trial_inertial_force = current_inertial_force;
1365 incre_inertial_force.zeros();
1369 if(trial_displacement.is_empty())
return;
1370 trial_displacement = current_displacement;
1371 incre_displacement.zeros();
1375 if(trial_velocity.is_empty())
return;
1376 trial_velocity = current_velocity;
1377 incre_velocity.zeros();
1381 if(trial_acceleration.is_empty())
return;
1382 trial_acceleration = current_acceleration;
1383 incre_acceleration.zeros();
1387 if(trial_temperature.is_empty())
return;
1388 trial_temperature = current_temperature;
1389 incre_temperature.zeros();
1393 if(trial_constraint_resistance.is_empty())
return;
1394 trial_constraint_resistance = current_constraint_resistance;
1398 if(!eigenvalue.is_empty()) eigenvalue.zeros();
1399 if(!eigenvector.is_empty()) eigenvector.zeros();
1414 auxiliary_load.reset();
1415 auxiliary_stiffness.set_size(n_size, 0);
1416 auxiliary_resistance.reset();
1417 auxiliary_encoding.reset();
1421 global_mass =
nullptr;
1422 global_damping =
nullptr;
1423 global_nonviscous =
nullptr;
1424 global_stiffness =
nullptr;
1425 global_geometry =
nullptr;
1429 if(ER.is_empty())
return;
1430 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_resistance(EI(I)) += ER(I);
1434 if(ER.is_empty())
return;
1435 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_damping_force(EI(I)) += ER(I);
1439 if(ER.is_empty())
return;
1440 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_nonviscous_force(EI(I)) += ER(I);
1444 if(ER.is_empty())
return;
1445 for(
auto I = 0llu; I < EI.n_elem; ++I) trial_inertial_force(EI(I)) += ER(I);
1449 if(EM.is_empty())
return;
1452 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);
1455template<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); }
1457template<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); }
1459template<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); }
1461template<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); }
1463template<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); }
1466 if(EK.is_empty())
return;
1467 for(
auto I = EK.begin(); I != EK.end(); ++I) global_stiffness->at(EI(I.row()), EI(I.col())) += *I;
1471 suanpan_info(
"A Factory object with size of {}.\n", n_size);
1475 switch(storage_type) {
1478 if(
SolverType::CUDA == solver)
return std::make_unique<FullMatCUDA<T>>(n_size, n_size);
1480 return std::make_unique<FullMat<T>>(n_size, n_size);
1482 if(
SolverType::SPIKE == solver)
return std::make_unique<BandMatSpike<T>>(n_size, n_lobw, n_upbw);
1483 return std::make_unique<BandMat<T>>(n_size, n_lobw, n_upbw);
1485 return std::make_unique<BandSymmMat<T>>(n_size, n_lobw);
1487 return std::make_unique<SymmPackMat<T>>(n_size);
1489 if(
SolverType::MUMPS == solver)
return std::make_unique<SparseMatMUMPS<T>>(n_size, n_size, n_elem);
1490 if(
SolverType::LIS == solver)
return std::make_unique<SparseMatLis<T>>(n_size, n_size, n_elem);
1491 if(
SolverType::SUPERLU == solver)
return std::make_unique<SparseMatSuperLU<T>>(n_size, n_size, n_elem);
1493 if(
SolverType::PARDISO == solver)
return std::make_unique<SparseMatPARDISO<T>>(n_size, n_size, n_elem);
1494 if(
SolverType::FGMRES == solver)
return std::make_unique<SparseMatFGMRES<T>>(n_size, n_size, n_elem);
1497 if(
SolverType::CUDA == solver)
return std::make_unique<SparseMatCUDA<T>>(n_size, n_size, n_elem);
1499 if(
SolverType::MAGMA == solver)
return std::make_unique<SparseMatMAGMA<T>>(n_size, n_size, magma_setting);
1502 return std::make_unique<SparseMatSuperLU<T>>(n_size, n_size, n_elem);
1505 if(
SolverType::FGMRES == solver)
return std::make_unique<SparseSymmMatFGMRES<T>>(n_size, n_size, n_elem);
1507 return std::make_unique<SparseSymmMatMUMPS<T>>(n_size, n_size, n_elem);
1509 throw invalid_argument(
"need a proper storage scheme");
1514 auto global_mat = get_basic_container();
1516 global_mat->set_solver_setting(setting);
1847 incre_time = trial_time - current_time;
1851 trial_load_factor = L;
1852 incre_load_factor = trial_load_factor - current_load_factor;
1857 incre_load = trial_load - current_load;
1861 trial_settlement =
S;
1862 incre_settlement = trial_settlement - current_settlement;
1866 trial_resistance = R;
1867 incre_resistance = trial_resistance - current_resistance;
1871 trial_damping_force = R;
1872 incre_damping_force = trial_damping_force - current_damping_force;
1876 trial_nonviscous_force = R;
1877 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
1881 trial_inertial_force = R;
1882 incre_inertial_force = trial_inertial_force - current_inertial_force;
1886 trial_displacement = D;
1887 incre_displacement = trial_displacement - current_displacement;
1892 incre_velocity = trial_velocity - current_velocity;
1896 trial_acceleration =
A;
1897 incre_acceleration = trial_acceleration - current_acceleration;
1901 trial_temperature =
M;
1902 incre_temperature = trial_temperature - current_temperature;
1907 trial_time = current_time + incre_time;
1911 incre_load_factor = L;
1912 trial_load_factor = current_load_factor + incre_load_factor;
1917 trial_load = current_load + incre_load;
1921 incre_settlement =
S;
1922 trial_settlement = current_settlement + incre_settlement;
1926 incre_resistance = R;
1927 trial_resistance = current_resistance + incre_resistance;
1931 incre_damping_force = R;
1932 trial_damping_force = current_damping_force + incre_damping_force;
1936 incre_nonviscous_force = R;
1937 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
1941 incre_inertial_force = R;
1942 trial_inertial_force = current_inertial_force + incre_inertial_force;
1946 incre_displacement = D;
1947 trial_displacement = current_displacement + incre_displacement;
1952 trial_velocity = current_velocity + incre_velocity;
1956 incre_acceleration =
A;
1957 trial_acceleration = current_acceleration + incre_acceleration;
1961 incre_temperature =
M;
1962 trial_temperature = current_temperature + incre_temperature;
1966 trial_time = current_time =
M;
1971 trial_load_factor = current_load_factor = L;
1972 incre_load_factor.zeros();
1976 trial_load = current_load = L;
1981 trial_settlement = current_settlement =
S;
1982 incre_settlement.zeros();
1986 trial_resistance = current_resistance = R;
1987 incre_resistance.zeros();
1991 trial_damping_force = current_damping_force = R;
1992 incre_damping_force.zeros();
1996 trial_nonviscous_force = current_nonviscous_force = R;
1997 incre_nonviscous_force.zeros();
2001 trial_inertial_force = current_inertial_force = R;
2002 incre_inertial_force.zeros();
2006 trial_displacement = current_displacement = D;
2007 incre_displacement.zeros();
2011 trial_velocity = current_velocity =
V;
2012 incre_velocity.zeros();
2016 trial_acceleration = current_acceleration =
A;
2017 incre_acceleration.zeros();
2021 trial_temperature = current_temperature =
M;
2022 incre_temperature.zeros();
2027 incre_time = trial_time - current_time;
2031 trial_load_factor += L;
2032 incre_load_factor = trial_load_factor - current_load_factor;
2037 incre_load = trial_load - current_load;
2041 trial_settlement +=
S;
2042 incre_settlement = trial_settlement - current_settlement;
2046 trial_resistance += R;
2047 incre_resistance = trial_resistance - current_resistance;
2051 trial_damping_force += R;
2052 incre_damping_force = trial_damping_force - current_damping_force;
2056 trial_nonviscous_force += R;
2057 incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force;
2061 trial_inertial_force += R;
2062 incre_inertial_force = trial_inertial_force - current_inertial_force;
2066 trial_displacement += D;
2067 incre_displacement = trial_displacement - current_displacement;
2071 trial_velocity +=
V;
2072 incre_velocity = trial_velocity - current_velocity;
2076 trial_acceleration +=
A;
2077 incre_acceleration = trial_acceleration - current_acceleration;
2081 trial_temperature +=
M;
2082 incre_temperature = trial_temperature - current_temperature;
2087 trial_time = current_time + incre_time;
2091 incre_load_factor += L;
2092 trial_load_factor = current_load_factor + incre_load_factor;
2097 trial_load = current_load + incre_load;
2101 incre_settlement +=
S;
2102 trial_settlement = current_settlement + incre_settlement;
2106 incre_resistance += R;
2107 trial_resistance = current_resistance + incre_resistance;
2111 incre_damping_force += R;
2112 trial_damping_force = current_damping_force + incre_damping_force;
2116 incre_nonviscous_force += R;
2117 trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force;
2121 incre_inertial_force += R;
2122 trial_inertial_force = current_inertial_force + incre_inertial_force;
2126 incre_displacement += D;
2127 trial_displacement = current_displacement + incre_displacement;
2131 incre_velocity +=
V;
2132 trial_velocity = current_velocity + incre_velocity;
2136 incre_acceleration +=
A;
2137 trial_acceleration = current_acceleration + incre_acceleration;
2141 incre_temperature +=
M;
2142 trial_temperature = current_temperature + incre_temperature;
2146 trial_time = current_time +=
M;
2151 trial_load_factor = current_load_factor += L;
2152 incre_load_factor.zeros();
2156 trial_load = current_load += L;
2161 trial_settlement = current_settlement +=
S;
2162 incre_settlement.zeros();
2166 trial_resistance = current_resistance += R;
2167 incre_resistance.zeros();
2171 trial_damping_force = current_damping_force += R;
2172 incre_damping_force.zeros();
2176 trial_nonviscous_force = current_nonviscous_force += R;
2177 incre_nonviscous_force.zeros();
2181 trial_inertial_force = current_inertial_force += R;
2182 incre_inertial_force.zeros();
2186 trial_displacement = current_displacement += D;
2187 incre_displacement.zeros();
2191 trial_velocity = current_velocity +=
V;
2192 incre_velocity.zeros();
2196 trial_acceleration = current_acceleration +=
A;
2197 incre_acceleration.zeros();
2201 trial_temperature = current_temperature +=
M;
2202 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:1643
T & modify_trial_time()
Definition Factory.hpp:1749
void set_eigenvalue(const Col< T > &)
Definition Factory.hpp:959
void clear_acceleration()
Definition Factory.hpp:1284
void initialize_load()
Definition Factory.hpp:845
void set_mpc(unsigned)
Definition Factory.hpp:939
shared_ptr< MetaMat< T > > & modify_stiffness()
Definition Factory.hpp:1527
Col< T > & modify_trial_inertial_force()
Definition Factory.hpp:1763
Col< T > & modify_trial_nonviscous_force()
Definition Factory.hpp:1761
void commit_temperature()
Definition Factory.hpp:1147
bool is_sparse() const
Definition Factory.hpp:751
void update_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1995
void set_incre_velocity(const Col< T > &)
Definition Factory.hpp:1599
uword get_entry() const
Definition Factory.hpp:709
void set_incre_temperature(const Col< T > &)
Definition Factory.hpp:1603
void assemble_stiffness(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1461
void print() const
Definition Factory.hpp:1470
void clear_resistance()
Definition Factory.hpp:1242
void initialize_auxiliary_resistance()
Definition Factory.hpp:905
void clear_load_factor()
Definition Factory.hpp:1221
void set_incre_acceleration(const Col< T > &)
Definition Factory.hpp:1601
int initialize()
Definition Factory.hpp:782
Col< T > & modify_incre_load()
Definition Factory.hpp:1777
const Col< T > & get_current_acceleration() const
Definition Factory.hpp:1721
void update_incre_damping_force_by(const Col< T > &)
Definition Factory.hpp:2110
const Col< T > & get_pre_damping_force() const
Definition Factory.hpp:1735
void reset_displacement()
Definition Factory.hpp:1368
void update_incre_temperature_by(const Col< T > &)
Definition Factory.hpp:2140
void set_ninja(const Col< T > &)
Definition Factory.hpp:933
Col< T > & modify_trial_damping_force()
Definition Factory.hpp:1759
void update_trial_temperature_by(const Col< T > &)
Definition Factory.hpp:2080
bool is_nlgeom() const
Definition Factory.hpp:717
void update_incre_load_factor_by(const Col< T > &)
Definition Factory.hpp:2090
const Mat< T > & get_eigenvector() const
Definition Factory.hpp:1035
const Col< T > & get_trial_velocity() const
Definition Factory.hpp:1671
const Col< T > & get_trial_resistance() const
Definition Factory.hpp:1661
void update_trial_load_factor_by(const Col< T > &)
Definition Factory.hpp:2030
const Col< T > & get_ninja() const
Definition Factory.hpp:963
Col< T > & modify_trial_temperature()
Definition Factory.hpp:1771
void set_pre_velocity(const Col< T > &)
Definition Factory.hpp:1647
const Col< T > & get_current_load() const
Definition Factory.hpp:1705
void set_trial_settlement(const Col< T > &)
Definition Factory.hpp:1563
void set_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1583
void set_trial_time(T)
Definition Factory.hpp:1557
Col< T > & modify_incre_resistance()
Definition Factory.hpp:1781
void update_incre_load_by(const Col< T > &)
Definition Factory.hpp:2095
void set_solver_type(SolverType)
Definition Factory.hpp:727
const Col< T > & get_pre_load() const
Definition Factory.hpp:1729
void commit_acceleration()
Definition Factory.hpp:1141
AnalysisType get_analysis_type() const
Definition Factory.hpp:741
void clear_nonviscous()
Definition Factory.hpp:1406
void set_current_resistance(const Col< T > &)
Definition Factory.hpp:1613
void update_incre_displacement(const Col< T > &)
Definition Factory.hpp:1945
void set_incre_displacement(const Col< T > &)
Definition Factory.hpp:1597
void update_current_acceleration_by(const Col< T > &)
Definition Factory.hpp:2195
const uvec & get_auxiliary_encoding() const
Definition Factory.hpp:971
void reset_auxiliary_resistance()
Definition Factory.hpp:1392
Col< T > & modify_pre_displacement()
Definition Factory.hpp:1837
void commit_resistance()
Definition Factory.hpp:1105
const Col< T > & get_incre_inertial_force() const
Definition Factory.hpp:1691
void set_storage_scheme(StorageScheme)
Definition Factory.hpp:743
void update_trial_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2055
void initialize_damping()
Definition Factory.hpp:912
void update_incre_velocity(const Col< T > &)
Definition Factory.hpp:1950
Col< T > & modify_incre_acceleration()
Definition Factory.hpp:1793
void initialize_geometry()
Definition Factory.hpp:922
void update_incre_displacement_by(const Col< T > &)
Definition Factory.hpp:2125
void update_current_damping_force_by(const Col< T > &)
Definition Factory.hpp:2170
void assemble_mass(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1455
void set_trial_velocity(const Col< T > &)
Definition Factory.hpp:1575
void update_current_resistance(const Col< T > &)
Definition Factory.hpp:1985
void clear_inertial_force()
Definition Factory.hpp:1263
Col< T > & modify_ninja()
Definition Factory.hpp:1531
void set_pre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1641
void update_trial_damping_force_by(const Col< T > &)
Definition Factory.hpp:2050
unsigned get_mpc() const
Definition Factory.hpp:967
Col< T > & modify_eigenvalue()
Definition Factory.hpp:1553
const Col< T > & get_current_settlement() const
Definition Factory.hpp:1707
const SolverSetting< double > & get_solver_setting() const
Definition Factory.hpp:733
void commit_load_factor()
Definition Factory.hpp:1087
std::mutex & get_damping_mutex()
Definition Factory.hpp:1025
void update_trial_velocity_by(const Col< T > &)
Definition Factory.hpp:2070
void update_current_load_by(const Col< T > &)
Definition Factory.hpp:2155
SpCol< T > & modify_trial_constraint_resistance()
Definition Factory.hpp:1549
const shared_ptr< MetaMat< T > > & get_damping() const
Definition Factory.hpp:999
void set_pre_settlement(const Col< T > &)
Definition Factory.hpp:1635
void set_nlgeom(bool)
Definition Factory.hpp:711
StorageScheme get_storage_scheme() const
Definition Factory.hpp:749
void commit_inertial_force()
Definition Factory.hpp:1123
void update_current_time(T)
Definition Factory.hpp:1965
void initialize_resistance()
Definition Factory.hpp:857
const Col< T > & get_current_damping_force() const
Definition Factory.hpp:1711
void set_solver_setting(const SolverSetting< double > &)
Definition Factory.hpp:731
void update_trial_displacement_by(const Col< T > &)
Definition Factory.hpp:2065
void set_mass(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:949
void reset_velocity()
Definition Factory.hpp:1374
const shared_ptr< MetaMat< T > > & get_nonviscous() const
Definition Factory.hpp:1001
const Col< T > & get_trial_load_factor() const
Definition Factory.hpp:1655
void set_current_load(const Col< T > &)
Definition Factory.hpp:1609
std::mutex & get_trial_load_mutex()
Definition Factory.hpp:1017
void initialize_stiffness()
Definition Factory.hpp:920
void initialize_damping_force()
Definition Factory.hpp:863
T get_current_time() const
Definition Factory.hpp:1701
const Col< T > & get_pre_settlement() const
Definition Factory.hpp:1731
void update_trial_temperature(const Col< T > &)
Definition Factory.hpp:1900
void commit_velocity()
Definition Factory.hpp:1135
void set_pre_time(T)
Definition Factory.hpp:1629
T get_complementary_energy()
Definition Factory.hpp:993
void reset()
Definition Factory.hpp:1420
const Col< T > & get_incre_displacement() const
Definition Factory.hpp:1693
void set_current_damping_force(const Col< T > &)
Definition Factory.hpp:1615
Col< T > & modify_current_nonviscous_force()
Definition Factory.hpp:1809
void update_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1895
void set_current_time(T)
Definition Factory.hpp:1605
const Col< T > & get_auxiliary_load() const
Definition Factory.hpp:977
void commit_pre_settlement()
Definition Factory.hpp:1179
Col< T > & modify_pre_settlement()
Definition Factory.hpp:1827
const shared_ptr< MetaMat< T > > & get_mass() const
Definition Factory.hpp:997
void commit_status()
Definition Factory.hpp:1062
void commit_pre_load_factor()
Definition Factory.hpp:1175
const suanpan::set< uword > & get_reference_dof() const
Definition Factory.hpp:776
std::pair< unsigned, unsigned > get_bandwidth() const
Definition Factory.hpp:761
void set_incre_time(T)
Definition Factory.hpp:1581
shared_ptr< MetaMat< T > > & modify_damping()
Definition Factory.hpp:1523
Col< T > & modify_pre_velocity()
Definition Factory.hpp:1839
std::mutex & get_reference_load_mutex()
Definition Factory.hpp:1021
void assemble_damping(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1457
void update_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1935
void update_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1880
void set_current_velocity(const Col< T > &)
Definition Factory.hpp:1623
void commit_displacement()
Definition Factory.hpp:1129
void update_current_velocity_by(const Col< T > &)
Definition Factory.hpp:2190
const Col< T > & get_incre_damping_force() const
Definition Factory.hpp:1687
void update_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1850
void reset_load_factor()
Definition Factory.hpp:1326
void clear_velocity()
Definition Factory.hpp:1277
void update_current_load(const Col< T > &)
Definition Factory.hpp:1975
void update_incre_time(T)
Definition Factory.hpp:1905
void update_incre_settlement_by(const Col< T > &)
Definition Factory.hpp:2100
unsigned get_reference_size() const
Definition Factory.hpp:770
void update_current_acceleration(const Col< T > &)
Definition Factory.hpp:2015
StorageScheme
Definition Factory.hpp:52
void commit_pre_temperature()
Definition Factory.hpp:1195
void commit_pre_status()
Definition Factory.hpp:1158
void update_current_time_by(T)
Definition Factory.hpp:2145
suanpan::set< uword > & modify_reference_dof()
Definition Factory.hpp:1535
void set_trial_acceleration(const Col< T > &)
Definition Factory.hpp:1577
void update_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1870
const Col< T > & get_incre_settlement() const
Definition Factory.hpp:1683
void reset_inertial_force()
Definition Factory.hpp:1362
void set_reference_dof(const suanpan::set< uword > &)
Definition Factory.hpp:774
const Col< T > & get_momentum()
Definition Factory.hpp:995
void update_current_displacement(const Col< T > &)
Definition Factory.hpp:2005
void clear_settlement()
Definition Factory.hpp:1235
void set_pre_load(const Col< T > &)
Definition Factory.hpp:1633
std::mutex & get_auxiliary_stiffness_mutex()
Definition Factory.hpp:1013
T get_incre_time() const
Definition Factory.hpp:1677
void commit_pre_damping_force()
Definition Factory.hpp:1183
Col< T > & modify_current_inertial_force()
Definition Factory.hpp:1811
const Col< T > & get_current_nonviscous_force() const
Definition Factory.hpp:1713
T get_strain_energy()
Definition Factory.hpp:985
void commit_pre_inertial_force()
Definition Factory.hpp:1187
void update_trial_settlement(const Col< T > &)
Definition Factory.hpp:1860
void set_trial_inertial_force(const Col< T > &)
Definition Factory.hpp:1571
const Col< T > & get_eigenvalue() const
Definition Factory.hpp:1033
void commit_pre_displacement()
Definition Factory.hpp:1189
std::mutex & get_geometry_mutex()
Definition Factory.hpp:1031
void set_incre_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1593
void commit_pre_acceleration()
Definition Factory.hpp:1193
const Col< T > & get_incre_velocity() const
Definition Factory.hpp:1695
Col< T > & modify_current_settlement()
Definition Factory.hpp:1803
T get_trial_time() const
Definition Factory.hpp:1653
void update_current_temperature_by(const Col< T > &)
Definition Factory.hpp:2200
void set_geometry(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:957
void set_incre_load(const Col< T > &)
Definition Factory.hpp:1585
void update_reference_size()
Definition Factory.hpp:763
void set_pre_acceleration(const Col< T > &)
Definition Factory.hpp:1649
void set_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1595
const Col< T > & get_trial_nonviscous_force() const
Definition Factory.hpp:1665
T get_kinetic_energy()
Definition Factory.hpp:987
void set_current_settlement(const Col< T > &)
Definition Factory.hpp:1611
void update_trial_settlement_by(const Col< T > &)
Definition Factory.hpp:2040
void initialize_inertial_force()
Definition Factory.hpp:875
void set_pre_resistance(const Col< T > &)
Definition Factory.hpp:1637
void commit_load()
Definition Factory.hpp:1093
void update_current_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2175
void update_trial_acceleration_by(const Col< T > &)
Definition Factory.hpp:2075
const Col< T > & get_pre_acceleration() const
Definition Factory.hpp:1745
void update_incre_acceleration_by(const Col< T > &)
Definition Factory.hpp:2135
void commit_pre_nonviscous_force()
Definition Factory.hpp:1185
void commit_pre_load()
Definition Factory.hpp:1177
void commit_pre_velocity()
Definition Factory.hpp:1191
void update_trial_resistance_by(const Col< T > &)
Definition Factory.hpp:2045
Col< T > & modify_current_resistance()
Definition Factory.hpp:1805
AnalysisType
Definition Factory.hpp:43
bool is_nonviscous() const
Definition Factory.hpp:725
void commit_pre_time()
Definition Factory.hpp:1173
shared_ptr< MetaMat< T > > & modify_geometry()
Definition Factory.hpp:1529
void commit_auxiliary_resistance()
Definition Factory.hpp:1153
void update_current_settlement(const Col< T > &)
Definition Factory.hpp:1980
void update_trial_load(const Col< T > &)
Definition Factory.hpp:1855
Col< T > & modify_pre_nonviscous_force()
Definition Factory.hpp:1833
void update_incre_load(const Col< T > &)
Definition Factory.hpp:1915
void update_trial_time(T)
Definition Factory.hpp:1845
void clear_nonviscous_force()
Definition Factory.hpp:1256
const shared_ptr< MetaMat< T > > & get_stiffness() const
Definition Factory.hpp:1003
void commit_settlement()
Definition Factory.hpp:1099
void set_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1569
const Col< T > & get_auxiliary_lambda() const
Definition Factory.hpp:973
void reset_load()
Definition Factory.hpp:1332
void reset_damping_force()
Definition Factory.hpp:1350
void update_current_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2180
void set_trial_temperature(const Col< T > &)
Definition Factory.hpp:1579
std::mutex & get_auxiliary_encoding_mutex()
Definition Factory.hpp:1007
Col< T > & modify_trial_load()
Definition Factory.hpp:1753
SolverType
Definition Factory.hpp:61
void assemble_damping_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1433
void set_current_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1617
const Col< T > & get_pre_displacement() const
Definition Factory.hpp:1741
const Col< T > & get_current_inertial_force() const
Definition Factory.hpp:1715
std::mutex & get_mass_mutex()
Definition Factory.hpp:1023
void set_nonviscous(bool)
Definition Factory.hpp:719
const Col< T > & get_pre_load_factor() const
Definition Factory.hpp:1727
Col< T > & modify_current_acceleration()
Definition Factory.hpp:1817
const Col< T > & get_trial_displacement() const
Definition Factory.hpp:1669
void update_trial_velocity(const Col< T > &)
Definition Factory.hpp:1890
void update_current_temperature(const Col< T > &)
Definition Factory.hpp:2020
void reset_temperature()
Definition Factory.hpp:1386
std::mutex & get_auxiliary_resistance_mutex()
Definition Factory.hpp:1009
void set_current_acceleration(const Col< T > &)
Definition Factory.hpp:1625
T get_nonviscous_energy()
Definition Factory.hpp:991
void update_current_settlement_by(const Col< T > &)
Definition Factory.hpp:2160
void initialize_settlement()
Definition Factory.hpp:851
void clear_damping()
Definition Factory.hpp:1404
const Col< T > & get_incre_nonviscous_force() const
Definition Factory.hpp:1689
const Col< T > & get_incre_load_factor() const
Definition Factory.hpp:1679
void clear_energy()
Definition Factory.hpp:1053
const SpMat< T > & get_reference_load() const
Definition Factory.hpp:969
void initialize_displacement()
Definition Factory.hpp:881
Col< T > & modify_auxiliary_load()
Definition Factory.hpp:1545
void reset_time()
Definition Factory.hpp:1321
const Col< T > & get_current_displacement() const
Definition Factory.hpp:1717
Col< T > & modify_current_velocity()
Definition Factory.hpp:1815
unsigned get_size() const
Definition Factory.hpp:702
T & modify_current_time()
Definition Factory.hpp:1797
void reset_settlement()
Definition Factory.hpp:1338
void clear_damping_force()
Definition Factory.hpp:1249
void set_analysis_type(AnalysisType)
Definition Factory.hpp:735
const Col< T > & get_incre_load() const
Definition Factory.hpp:1681
void initialize_nonviscous_force()
Definition Factory.hpp:869
void set_entry(uword)
Definition Factory.hpp:704
Col< T > & modify_pre_damping_force()
Definition Factory.hpp:1831
const Col< T > & get_incre_acceleration() const
Definition Factory.hpp:1697
T get_pre_time() const
Definition Factory.hpp:1725
void clear_geometry()
Definition Factory.hpp:1410
T get_viscous_energy()
Definition Factory.hpp:989
std::mutex & get_trial_constraint_resistance_mutex()
Definition Factory.hpp:1015
const Col< T > & get_current_temperature() const
Definition Factory.hpp:1723
void update_incre_time_by(T)
Definition Factory.hpp:2085
void assemble_nonviscous(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1459
void set_reference_size(unsigned)
Definition Factory.hpp:765
Col< T > & modify_trial_settlement()
Definition Factory.hpp:1755
void initialize_temperature()
Definition Factory.hpp:899
void set_current_displacement(const Col< T > &)
Definition Factory.hpp:1621
void update_reference_dof(const uvec &)
Definition Factory.hpp:772
const Col< T > & get_trial_inertial_force() const
Definition Factory.hpp:1667
void set_current_inertial_force(const Col< T > &)
Definition Factory.hpp:1619
SpCol< T > & modify_current_constraint_resistance()
Definition Factory.hpp:1551
Col< T > & modify_incre_load_factor()
Definition Factory.hpp:1775
void set_trial_load(const Col< T > &)
Definition Factory.hpp:1561
Col< T > & modify_auxiliary_resistance()
Definition Factory.hpp:1543
Col< T > & modify_pre_resistance()
Definition Factory.hpp:1829
Col< T > & modify_incre_temperature()
Definition Factory.hpp:1795
T & modify_pre_time()
Definition Factory.hpp:1821
void update_incre_temperature(const Col< T > &)
Definition Factory.hpp:1960
shared_ptr< MetaMat< T > > & modify_nonviscous()
Definition Factory.hpp:1525
void update_current_velocity(const Col< T > &)
Definition Factory.hpp:2010
void set_error(T)
Definition Factory.hpp:778
Col< T > & modify_incre_nonviscous_force()
Definition Factory.hpp:1785
void assemble_geometry(const Mat< T > &, const uvec &, const std::vector< MappingDOF > &)
Definition Factory.hpp:1463
const Col< T > & get_trial_settlement() const
Definition Factory.hpp:1659
void set_eigenvector(const Mat< T > &)
Definition Factory.hpp:961
void initialize_load_factor()
Definition Factory.hpp:835
Col< T > & modify_incre_inertial_force()
Definition Factory.hpp:1787
const Col< T > & get_trial_load() const
Definition Factory.hpp:1657
uvec & modify_auxiliary_encoding()
Definition Factory.hpp:1539
void update_current_displacement_by(const Col< T > &)
Definition Factory.hpp:2185
void set_trial_resistance(const Col< T > &)
Definition Factory.hpp:1565
void commit_nonviscous_force()
Definition Factory.hpp:1117
void set_pre_load_factor(const Col< T > &)
Definition Factory.hpp:1631
void update_current_damping_force(const Col< T > &)
Definition Factory.hpp:1990
Col< T > & modify_current_damping_force()
Definition Factory.hpp:1807
void update_current_load_factor(const Col< T > &)
Definition Factory.hpp:1970
void commit_energy()
Definition Factory.hpp:1037
void commit_damping_force()
Definition Factory.hpp:1111
T get_error() const
Definition Factory.hpp:780
void update_trial_time_by(T)
Definition Factory.hpp:2025
void update_incre_acceleration(const Col< T > &)
Definition Factory.hpp:1955
const SpMat< T > & get_auxiliary_stiffness() const
Definition Factory.hpp:979
void assemble_inertial_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1443
void clear_status()
Definition Factory.hpp:1197
void set_bandwidth(unsigned, unsigned)
Definition Factory.hpp:753
void update_incre_velocity_by(const Col< T > &)
Definition Factory.hpp:2130
const Col< T > & get_current_load_factor() const
Definition Factory.hpp:1703
void commit_time()
Definition Factory.hpp:1082
void clear_mass()
Definition Factory.hpp:1402
const Col< T > & get_pre_inertial_force() const
Definition Factory.hpp:1739
void commit_pre_resistance()
Definition Factory.hpp:1181
void update_trial_nonviscous_force(const Col< T > &)
Definition Factory.hpp:1875
void reset_resistance()
Definition Factory.hpp:1344
SolverType get_solver_type() const
Definition Factory.hpp:729
Col< T > & modify_pre_temperature()
Definition Factory.hpp:1843
std::mutex & get_auxiliary_load_mutex()
Definition Factory.hpp:1011
const Col< T > & get_trial_acceleration() const
Definition Factory.hpp:1673
void assemble_resistance(const Mat< T > &, const uvec &)
Definition Factory.hpp:1428
void set_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1591
Col< T > & modify_incre_displacement()
Definition Factory.hpp:1789
Col< T > & modify_pre_load()
Definition Factory.hpp:1825
const SpCol< T > & get_trial_constraint_resistance() const
Definition Factory.hpp:981
void update_incre_damping_force(const Col< T > &)
Definition Factory.hpp:1930
const Col< T > & get_pre_velocity() const
Definition Factory.hpp:1743
const Col< T > & get_current_resistance() const
Definition Factory.hpp:1709
void assemble_nonviscous_force(const Mat< T > &, const uvec &)
Definition Factory.hpp:1438
void initialize_velocity()
Definition Factory.hpp:887
std::mutex & get_stiffness_mutex()
Definition Factory.hpp:1029
Col< T > & modify_pre_acceleration()
Definition Factory.hpp:1841
void update_incre_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2120
const Col< T > & get_current_velocity() const
Definition Factory.hpp:1719
void update_incre_load_factor(const Col< T > &)
Definition Factory.hpp:1910
SpMat< T > & modify_auxiliary_stiffness()
Definition Factory.hpp:1547
void set_incre_resistance(const Col< T > &)
Definition Factory.hpp:1589
void initialize_nonviscous()
Definition Factory.hpp:914
Col< T > & modify_trial_velocity()
Definition Factory.hpp:1767
Col< T > & modify_trial_displacement()
Definition Factory.hpp:1765
const Col< T > & get_pre_temperature() const
Definition Factory.hpp:1747
Col< T > & modify_trial_acceleration()
Definition Factory.hpp:1769
void clear_load()
Definition Factory.hpp:1228
const Col< T > & get_incre_temperature() const
Definition Factory.hpp:1699
Col< T > & modify_pre_load_factor()
Definition Factory.hpp:1823
Factory(unsigned=0, AnalysisType=AnalysisType::NONE, StorageScheme=StorageScheme::FULL)
Definition Factory.hpp:691
Col< T > & modify_trial_load_factor()
Definition Factory.hpp:1751
void set_size(unsigned)
Definition Factory.hpp:696
void update_trial_displacement(const Col< T > &)
Definition Factory.hpp:1885
const Col< T > & get_incre_resistance() const
Definition Factory.hpp:1685
Col< T > & modify_trial_resistance()
Definition Factory.hpp:1757
const Col< T > & get_sushi() const
Definition Factory.hpp:965
const Col< T > & get_auxiliary_resistance() const
Definition Factory.hpp:975
const Col< T > & get_trial_damping_force() const
Definition Factory.hpp:1663
Mat< T > & modify_eigenvector()
Definition Factory.hpp:1555
void update_current_resistance_by(const Col< T > &)
Definition Factory.hpp:2165
void set_pre_temperature(const Col< T > &)
Definition Factory.hpp:1651
void update_trial_load_by(const Col< T > &)
Definition Factory.hpp:2035
Col< T > & modify_auxiliary_lambda()
Definition Factory.hpp:1541
const SpCol< T > & get_current_constraint_resistance() const
Definition Factory.hpp:983
void clear_auxiliary_resistance()
Definition Factory.hpp:1298
const Col< T > & get_pre_nonviscous_force() const
Definition Factory.hpp:1737
void update_incre_resistance_by(const Col< T > &)
Definition Factory.hpp:2105
void update_sushi_by(const Col< T > &)
Definition Factory.hpp:937
void set_incre_settlement(const Col< T > &)
Definition Factory.hpp:1587
Col< T > & modify_pre_inertial_force()
Definition Factory.hpp:1835
void set_sushi(const Col< T > &)
Definition Factory.hpp:935
shared_ptr< MetaMat< T > > & modify_mass()
Definition Factory.hpp:1521
void update_incre_settlement(const Col< T > &)
Definition Factory.hpp:1920
void set_pre_displacement(const Col< T > &)
Definition Factory.hpp:1645
std::mutex & get_nonviscous_mutex()
Definition Factory.hpp:1027
void set_current_load_factor(const Col< T > &)
Definition Factory.hpp:1607
void set_trial_displacement(const Col< T > &)
Definition Factory.hpp:1573
void update_trial_resistance(const Col< T > &)
Definition Factory.hpp:1865
Col< T > & modify_current_load_factor()
Definition Factory.hpp:1799
void clear_eigen()
Definition Factory.hpp:1397
void clear_auxiliary()
Definition Factory.hpp:1412
void set_reference_load(const SpMat< T > &)
Definition Factory.hpp:947
T & modify_incre_time()
Definition Factory.hpp:1773
void update_incre_resistance(const Col< T > &)
Definition Factory.hpp:1925
SpMat< T > & modify_reference_load()
Definition Factory.hpp:1537
Col< T > & modify_incre_damping_force()
Definition Factory.hpp:1783
Col< T > & modify_incre_settlement()
Definition Factory.hpp:1779
void update_current_load_factor_by(const Col< T > &)
Definition Factory.hpp:2150
void set_trial_load_factor(const Col< T > &)
Definition Factory.hpp:1559
void initialize_eigen()
Definition Factory.hpp:928
void update_incre_inertial_force(const Col< T > &)
Definition Factory.hpp:1940
void clear_time()
Definition Factory.hpp:1219
void set_stiffness(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:955
void clear_displacement()
Definition Factory.hpp:1270
const shared_ptr< MetaMat< T > > & get_geometry() const
Definition Factory.hpp:1005
Col< T > & modify_current_load()
Definition Factory.hpp:1801
void reset_status()
Definition Factory.hpp:1303
Col< T > & modify_current_temperature()
Definition Factory.hpp:1819
void update_current_inertial_force(const Col< T > &)
Definition Factory.hpp:2000
const Col< T > & get_trial_temperature() const
Definition Factory.hpp:1675
void set_trial_damping_force(const Col< T > &)
Definition Factory.hpp:1567
std::mutex & get_trial_settlement_mutex()
Definition Factory.hpp:1019
void initialize_mass()
Definition Factory.hpp:910
Col< T > & modify_sushi()
Definition Factory.hpp:1533
void set_pre_damping_force(const Col< T > &)
Definition Factory.hpp:1639
void clear_temperature()
Definition Factory.hpp:1291
Col< T > & modify_current_displacement()
Definition Factory.hpp:1813
void initialize_acceleration()
Definition Factory.hpp:893
void update_trial_inertial_force_by(const Col< T > &)
Definition Factory.hpp:2060
void set_current_temperature(const Col< T > &)
Definition Factory.hpp:1627
Col< T > & modify_incre_velocity()
Definition Factory.hpp:1791
void set_damping(const shared_ptr< MetaMat< T > > &)
Definition Factory.hpp:951
void reset_acceleration()
Definition Factory.hpp:1380
void reset_nonviscous_force()
Definition Factory.hpp:1356
const Col< T > & get_pre_resistance() const
Definition Factory.hpp:1733
void clear_stiffness()
Definition Factory.hpp:1408
void update_incre_nonviscous_force_by(const Col< T > &)
Definition Factory.hpp:2115
std::vector< T > vector
Definition container.h:53
#define suanpan_info
Definition suanPan.h:305