71 unsigned n_sfbw = n_lobw + n_upbw;
90 SpMat<T> reference_load;
92 uvec auxiliary_encoding;
93 Col<T> auxiliary_lambda;
94 Col<T> auxiliary_resistance;
95 Col<T> auxiliary_load;
96 SpMat<T> auxiliary_stiffness;
98 SpCol<T> trial_constraint_resistance;
99 SpCol<T> current_constraint_resistance;
106 T strain_energy = 0.;
107 T kinetic_energy = 0.;
108 T viscous_energy = 0.;
109 T complementary_energy = 0.;
112 Col<T> trial_load_factor;
114 Col<T> trial_settlement;
115 Col<T> trial_resistance;
116 Col<T> trial_damping_force;
117 Col<T> trial_inertial_force;
118 Col<T> trial_displacement;
119 Col<T> trial_velocity;
120 Col<T> trial_acceleration;
121 Col<T> trial_temperature;
123 Col<T> incre_load_factor;
125 Col<T> incre_settlement;
126 Col<T> incre_resistance;
127 Col<T> incre_damping_force;
128 Col<T> incre_inertial_force;
129 Col<T> incre_displacement;
130 Col<T> incre_velocity;
131 Col<T> incre_acceleration;
132 Col<T> incre_temperature;
134 Col<T> current_load_factor;
136 Col<T> current_settlement;
137 Col<T> current_resistance;
138 Col<T> current_damping_force;
139 Col<T> current_inertial_force;
140 Col<T> current_displacement;
141 Col<T> current_velocity;
142 Col<T> current_acceleration;
143 Col<T> current_temperature;
145 Col<T> pre_load_factor;
147 Col<T> pre_settlement;
148 Col<T> pre_resistance;
149 Col<T> pre_damping_force;
150 Col<T> pre_inertial_force;
151 Col<T> pre_displacement;
153 Col<T> pre_acceleration;
154 Col<T> pre_temperature;
156 shared_ptr<MetaMat<T>> global_mass =
nullptr;
157 shared_ptr<MetaMat<T>> global_damping =
nullptr;
158 shared_ptr<MetaMat<T>> global_stiffness =
nullptr;
159 shared_ptr<MetaMat<T>> global_geometry =
nullptr;
161 std::vector<std::mutex> global_mutex = std::vector<std::mutex>(20);
170 void assemble_matrix_helper(shared_ptr<
MetaMat<T>>&,
const Mat<T>&,
const uvec&);
178 [[nodiscard]]
unsigned get_size()
const;
306 [[nodiscard]]
unsigned get_mpc()
const;
373 const shared_ptr<MetaMat<T>>&
get_mass()
const;
535 template<sp_d T1>
friend shared_ptr<MetaMat<T1>>&
get_mass(
const shared_ptr<
Factory<T1>>&);
631 , storage_type(
SS) {}
634 if(D == n_size)
return;
636 access::rw(initialized) =
false;
646 if(B == nlgeom)
return;
648 access::rw(initialized) =
false;
662 if(
AT == analysis_type)
return;
664 access::rw(initialized) =
false;
670 if(
SS == storage_type)
return;
672 access::rw(initialized) =
false;
680 if(L == n_lobw &&
U == n_upbw)
return;
684 access::rw(initialized) =
false;
695 if(
S == n_rfld)
return;
712 reference_dof.clear();
714 if(initialized || n_size == 0)
return 0;
721 switch(analysis_type) {
723 initialize_displacement();
727 initialize_stiffness();
733 initialize_resistance();
734 initialize_displacement();
735 initialize_stiffness();
736 initialize_geometry();
740 initialize_resistance();
741 initialize_damping_force();
742 initialize_inertial_force();
743 initialize_displacement();
744 initialize_velocity();
745 initialize_acceleration();
747 initialize_damping();
748 initialize_stiffness();
749 initialize_geometry();
755 initialize_auxiliary_resistance();
757 access::rw(initialized) =
true;
763 if(n_rfld == 0)
return;
765 trial_load_factor.zeros(n_rfld);
766 incre_load_factor.zeros(n_rfld);
767 current_load_factor.zeros(n_rfld);
769 reference_load.zeros(n_size, n_rfld);
773 trial_load.zeros(n_size);
774 incre_load.zeros(n_size);
775 current_load.zeros(n_size);
779 trial_settlement.zeros(n_size);
780 incre_settlement.zeros(n_size);
781 current_settlement.zeros(n_size);
785 trial_resistance.zeros(n_size);
786 incre_resistance.zeros(n_size);
787 current_resistance.zeros(n_size);
791 trial_damping_force.zeros(n_size);
792 incre_damping_force.zeros(n_size);
793 current_damping_force.zeros(n_size);
797 trial_inertial_force.zeros(n_size);
798 incre_inertial_force.zeros(n_size);
799 current_inertial_force.zeros(n_size);
803 trial_displacement.zeros(n_size);
804 incre_displacement.zeros(n_size);
805 current_displacement.zeros(n_size);
809 trial_velocity.zeros(n_size);
810 incre_velocity.zeros(n_size);
811 current_velocity.zeros(n_size);
815 trial_acceleration.zeros(n_size);
816 incre_acceleration.zeros(n_size);
817 current_acceleration.zeros(n_size);
821 trial_temperature.zeros(n_size);
822 incre_temperature.zeros(n_size);
823 current_temperature.zeros(n_size);
827 trial_constraint_resistance.zeros(n_size);
828 current_constraint_resistance.zeros(n_size);
844 eigenvalue.zeros(n_size);
845 eigenvector.zeros(n_size, n_size);
854 auxiliary_encoding.zeros(n_mpc);
855 auxiliary_resistance.zeros(n_mpc);
856 auxiliary_load.zeros(n_mpc);
857 auxiliary_stiffness.zeros(n_size, n_mpc);
1118 incre_time = trial_time - current_time;
1122 trial_load_factor = L;
1123 incre_load_factor = trial_load_factor - current_load_factor;
1128 incre_load = trial_load - current_load;
1132 trial_settlement =
S;
1133 incre_settlement = trial_settlement - current_settlement;
1137 trial_resistance = R;
1138 incre_resistance = trial_resistance - current_resistance;
1142 trial_damping_force = R;
1143 incre_damping_force = trial_damping_force - current_damping_force;
1147 trial_inertial_force = R;
1148 incre_inertial_force = trial_inertial_force - current_inertial_force;
1152 trial_displacement = D;
1153 incre_displacement = trial_displacement - current_displacement;
1158 incre_velocity = trial_velocity - current_velocity;
1162 trial_acceleration =
A;
1163 incre_acceleration = trial_acceleration - current_acceleration;
1167 trial_temperature =
M;
1168 incre_temperature = trial_temperature - current_temperature;
1173 trial_time = current_time + incre_time;
1177 incre_load_factor = L;
1178 trial_load_factor = current_load_factor + incre_load_factor;
1183 trial_load = current_load + incre_load;
1187 incre_settlement =
S;
1188 trial_settlement = current_settlement + incre_settlement;
1192 incre_resistance = R;
1193 trial_resistance = current_resistance + incre_resistance;
1197 incre_damping_force = R;
1198 trial_damping_force = current_damping_force + incre_damping_force;
1202 incre_inertial_force = R;
1203 trial_inertial_force = current_inertial_force + incre_inertial_force;
1207 incre_displacement = D;
1208 trial_displacement = current_displacement + incre_displacement;
1213 trial_velocity = current_velocity + incre_velocity;
1217 incre_acceleration =
A;
1218 trial_acceleration = current_acceleration + incre_acceleration;
1222 incre_temperature =
M;
1223 trial_temperature = current_temperature + incre_temperature;
1227 trial_time = current_time =
M;
1232 trial_load_factor = current_load_factor = L;
1233 incre_load_factor.zeros();
1237 trial_load = current_load = L;
1242 trial_settlement = current_settlement =
S;
1243 incre_settlement.zeros();
1247 trial_resistance = current_resistance = R;
1248 incre_resistance.zeros();
1252 trial_damping_force = current_damping_force = R;
1253 incre_damping_force.zeros();
1257 trial_inertial_force = current_inertial_force = R;
1258 incre_inertial_force.zeros();
1262 trial_displacement = current_displacement = D;
1263 incre_displacement.zeros();
1267 trial_velocity = current_velocity =
V;
1268 incre_velocity.zeros();
1272 trial_acceleration = current_acceleration =
A;
1273 incre_acceleration.zeros();
1277 trial_temperature = current_temperature =
M;
1278 incre_temperature.zeros();
1283 incre_time = trial_time - current_time;
1287 trial_load_factor += L;
1288 incre_load_factor = trial_load_factor - current_load_factor;
1293 incre_load = trial_load - current_load;
1297 trial_settlement +=
S;
1298 incre_settlement = trial_settlement - current_settlement;
1302 trial_resistance += R;
1303 incre_resistance = trial_resistance - current_resistance;
1307 trial_damping_force += R;
1308 incre_damping_force = trial_damping_force - current_damping_force;
1312 trial_inertial_force += R;
1313 incre_inertial_force = trial_inertial_force - current_inertial_force;
1317 trial_displacement += D;
1318 incre_displacement = trial_displacement - current_displacement;
1322 trial_velocity +=
V;
1323 incre_velocity = trial_velocity - current_velocity;
1327 trial_acceleration +=
A;
1328 incre_acceleration = trial_acceleration - current_acceleration;
1332 trial_temperature +=
M;
1333 incre_temperature = trial_temperature - current_temperature;
1338 trial_time = current_time + incre_time;
1342 incre_load_factor += L;
1343 trial_load_factor = current_load_factor + incre_load_factor;
1348 trial_load = current_load + incre_load;
1352 incre_settlement +=
S;
1353 trial_settlement = current_settlement + incre_settlement;
1357 incre_resistance += R;
1358 trial_resistance = current_resistance + incre_resistance;
1362 incre_damping_force += R;
1363 trial_damping_force = current_damping_force + incre_damping_force;
1367 incre_inertial_force += R;
1368 trial_inertial_force = current_inertial_force + incre_inertial_force;
1372 incre_displacement += D;
1373 trial_displacement = current_displacement + incre_displacement;
1377 incre_velocity +=
V;
1378 trial_velocity = current_velocity + incre_velocity;
1382 incre_acceleration +=
A;
1383 trial_acceleration = current_acceleration + incre_acceleration;
1387 incre_temperature +=
M;
1388 trial_temperature = current_temperature + incre_temperature;
1392 trial_time = current_time +=
M;
1397 trial_load_factor = current_load_factor += L;
1398 incre_load_factor.zeros();
1402 trial_load = current_load += L;
1407 trial_settlement = current_settlement +=
S;
1408 incre_settlement.zeros();
1412 trial_resistance = current_resistance += R;
1413 incre_resistance.zeros();
1417 trial_damping_force = current_damping_force += R;
1418 incre_damping_force.zeros();
1422 trial_inertial_force = current_inertial_force += R;
1423 incre_inertial_force.zeros();
1427 trial_displacement = current_displacement += D;
1428 incre_displacement.zeros();
1432 trial_velocity = current_velocity +=
V;
1433 incre_velocity.zeros();
1437 trial_acceleration = current_acceleration +=
A;
1438 incre_acceleration.zeros();
1442 trial_temperature = current_temperature +=
M;
1443 incre_temperature.zeros();
1447 auto se = std::async([&] {
if(!trial_resistance.empty() && !incre_displacement.empty()) strain_energy += .5 * dot(trial_resistance + current_resistance, incre_displacement); });
1448 auto ke = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) kinetic_energy = .5 * dot(global_mass * trial_velocity, trial_velocity); });
1449 auto ve = std::async([&] {
if(!trial_damping_force.empty() && !incre_displacement.empty()) viscous_energy += .5 * dot(trial_damping_force + current_damping_force, incre_displacement); });
1450 auto ce = std::async([&] {
if(!trial_displacement.empty() && !incre_resistance.empty()) complementary_energy += .5 * dot(trial_displacement + current_displacement, incre_resistance); });
1451 auto mm = std::async([&] {
if(!trial_inertial_force.empty() && !trial_velocity.empty()) momentum = global_mass * trial_velocity; });
1462 kinetic_energy = 0.;
1463 viscous_energy = 0.;
1464 complementary_energy = 0.;
1474 commit_load_factor();
1476 commit_settlement();
1477 commit_resistance();
1478 commit_damping_force();
1479 commit_inertial_force();
1480 commit_displacement();
1482 commit_acceleration();
1483 commit_temperature();
1484 commit_auxiliary_resistance();
1488 current_time = trial_time;
1493 if(trial_load_factor.is_empty())
return;
1494 current_load_factor = trial_load_factor;
1495 incre_load_factor.zeros();
1499 if(trial_load.is_empty())
return;
1500 current_load = trial_load;
1505 if(trial_settlement.is_empty())
return;
1506 current_settlement = trial_settlement;
1507 incre_settlement.zeros();
1511 if(trial_resistance.is_empty())
return;
1512 current_resistance = trial_resistance;
1513 incre_resistance.zeros();
1517 if(trial_damping_force.is_empty())
return;
1518 current_damping_force = trial_damping_force;
1519 incre_damping_force.zeros();
1523 if(trial_inertial_force.is_empty())
return;
1524 current_inertial_force = trial_inertial_force;
1525 incre_inertial_force.zeros();
1529 if(trial_displacement.is_empty())
return;
1530 current_displacement = trial_displacement;
1531 incre_displacement.zeros();
1535 if(trial_velocity.is_empty())
return;
1536 current_velocity = trial_velocity;
1537 incre_velocity.zeros();
1541 if(trial_acceleration.is_empty())
return;
1542 current_acceleration = trial_acceleration;
1543 incre_acceleration.zeros();
1547 if(trial_temperature.is_empty())
return;
1548 current_temperature = trial_temperature;
1549 incre_temperature.zeros();
1553 if(trial_constraint_resistance.is_empty())
return;
1554 current_constraint_resistance = trial_constraint_resistance;
1559 commit_pre_load_factor();
1561 commit_pre_settlement();
1562 commit_pre_resistance();
1563 commit_pre_damping_force();
1564 commit_pre_inertial_force();
1565 commit_pre_displacement();
1566 commit_pre_velocity();
1567 commit_pre_acceleration();
1568 commit_pre_temperature();
1594 access::rw(initialized) =
false;
1601 clear_load_factor();
1605 clear_damping_force();
1606 clear_inertial_force();
1607 clear_displacement();
1609 clear_acceleration();
1610 clear_temperature();
1611 clear_auxiliary_resistance();
1617 if(!pre_load_factor.is_empty()) pre_load_factor.zeros();
1618 if(!trial_load_factor.is_empty()) trial_load_factor.zeros();
1619 if(!incre_load_factor.is_empty()) incre_load_factor.zeros();
1620 if(!current_load_factor.is_empty()) current_load_factor.zeros();
1624 if(!pre_load.is_empty()) pre_load.zeros();
1625 if(!trial_load.is_empty()) trial_load.zeros();
1626 if(!incre_load.is_empty()) incre_load.zeros();
1627 if(!current_load.is_empty()) current_load.zeros();
1631 if(!pre_settlement.is_empty()) pre_settlement.zeros();
1632 if(!trial_settlement.is_empty()) trial_settlement.zeros();
1633 if(!incre_settlement.is_empty()) incre_settlement.zeros();
1634 if(!current_settlement.is_empty()) current_settlement.zeros();
1638 if(!pre_resistance.is_empty()) pre_resistance.zeros();
1639 if(!trial_resistance.is_empty()) trial_resistance.zeros();
1640 if(!incre_resistance.is_empty()) incre_resistance.zeros();
1641 if(!current_resistance.is_empty()) current_resistance.zeros();
1645 if(!pre_damping_force.is_empty()) pre_damping_force.zeros();
1646 if(!trial_damping_force.is_empty()) trial_damping_force.zeros();
1647 if(!incre_damping_force.is_empty()) incre_damping_force.zeros();
1648 if(!current_damping_force.is_empty()) current_damping_force.zeros();
1652 if(!pre_inertial_force.is_empty()) pre_inertial_force.zeros();
1653 if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros();
1654 if(!incre_inertial_force.is_empty()) incre_inertial_force.zeros();
1655 if(!current_inertial_force.is_empty()) current_inertial_force.zeros();
1659 if(!pre_displacement.is_empty()) pre_displacement.zeros();
1660 if(!trial_displacement.is_empty()) trial_displacement.zeros();
1661 if(!incre_displacement.is_empty()) incre_displacement.zeros();
1662 if(!current_displacement.is_empty()) current_displacement.zeros();
1666 if(!pre_velocity.is_empty()) pre_velocity.zeros();
1667 if(!trial_velocity.is_empty()) trial_velocity.zeros();
1668 if(!incre_velocity.is_empty()) incre_velocity.zeros();
1669 if(!current_velocity.is_empty()) current_velocity.zeros();
1673 if(!pre_acceleration.is_empty()) pre_acceleration.zeros();
1674 if(!trial_acceleration.is_empty()) trial_acceleration.zeros();
1675 if(!incre_acceleration.is_empty()) incre_acceleration.zeros();
1676 if(!current_acceleration.is_empty()) current_acceleration.zeros();
1680 if(!pre_temperature.is_empty()) pre_temperature.zeros();
1681 if(!trial_temperature.is_empty()) trial_temperature.zeros();
1682 if(!incre_temperature.is_empty()) incre_temperature.zeros();
1683 if(!current_temperature.is_empty()) current_temperature.zeros();
1687 if(!trial_constraint_resistance.is_empty()) trial_constraint_resistance.zeros();
1688 if(!current_constraint_resistance.is_empty()) current_constraint_resistance.zeros();
1695 reset_load_factor();
1699 reset_damping_force();
1700 reset_inertial_force();
1701 reset_displacement();
1703 reset_acceleration();
1704 reset_temperature();
1705 reset_auxiliary_resistance();
1709 trial_time = current_time;
1714 if(trial_load_factor.is_empty())
return;
1715 trial_load_factor = current_load_factor;
1716 incre_load_factor.zeros();
1720 if(trial_load.is_empty())
return;
1721 trial_load = current_load;
1726 if(trial_settlement.is_empty())
return;
1727 trial_settlement = current_settlement;
1728 incre_settlement.zeros();
1732 if(trial_resistance.is_empty())
return;
1733 trial_resistance = current_resistance;
1734 incre_resistance.zeros();
1738 if(trial_damping_force.is_empty())
return;
1739 trial_damping_force = current_damping_force;
1740 incre_damping_force.zeros();
1744 if(trial_inertial_force.is_empty())
return;
1745 trial_inertial_force = current_inertial_force;
1746 incre_inertial_force.zeros();
1750 if(trial_displacement.is_empty())
return;
1751 trial_displacement = current_displacement;
1752 incre_displacement.zeros();
1756 if(trial_velocity.is_empty())
return;
1757 trial_velocity = current_velocity;
1758 incre_velocity.zeros();
1762 if(trial_acceleration.is_empty())
return;
1763 trial_acceleration = current_acceleration;
1764 incre_acceleration.zeros();
1768 if(trial_temperature.is_empty())
return;
1769 trial_temperature = current_temperature;
1770 incre_temperature.zeros();
1774 if(trial_constraint_resistance.is_empty())
return;
1775 trial_constraint_resistance = current_constraint_resistance;
1779 if(!eigenvalue.is_empty()) eigenvalue.zeros();
1780 if(!eigenvector.is_empty()) eigenvector.zeros();
1793 auxiliary_load.reset();
1794 auxiliary_stiffness.set_size(n_size, 0);
1795 auxiliary_resistance.reset();
1796 auxiliary_encoding.reset();
1800 global_mass =
nullptr;
1801 global_damping =
nullptr;
1802 global_stiffness =
nullptr;
1803 global_geometry =
nullptr;
1807 if(ER.is_empty())
return;
1808 for(
unsigned I = 0; I < EI.n_elem; ++I) trial_resistance(EI(I)) += ER(I);
1812 if(ER.is_empty())
return;
1813 for(
unsigned I = 0; I < EI.n_elem; ++I) trial_damping_force(EI(I)) += ER(I);
1817 if(ER.is_empty())
return;
1818 for(
unsigned I = 0; I < EI.n_elem; ++I) trial_inertial_force(EI(I)) += ER(I);
1828 if(EM.is_empty())
return;
1831 const uvec NEI = sort_index(EI);
1832 for(
unsigned I = 0; I < NEI.n_elem; ++I)
for(
unsigned J = 0; J <= I; ++J) GM->unsafe_at(EI(NEI(I)), EI(NEI(J))) += EM(NEI(I), NEI(J));
1834 else for(
unsigned I = 0; I < EI.n_elem; ++I)
for(
unsigned J = 0; J < EI.n_elem; ++J) GM->unsafe_at(EI(J), EI(I)) += EM(J, I);
1846 if(EK.is_empty())
return;
1847 for(
auto I = EK.begin(); I != EK.end(); ++I) global_stiffness->at(EI(I.row()), EI(I.col())) += *I;
1851 suanpan_info(
"A Factory object with size of {}.\n", n_size);
void reset(ExternalMaterialData *data, int *info)
Definition: ElasticExternal.cpp:74
unique_ptr< MetaMat< T > > get_matrix_container(const Factory< T > *const W)
Definition: FactoryHelper.hpp:61
A Factory class.
Definition: Factory.hpp:67
friend Col< T1 > & get_pre_settlement(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_pre_velocity(const shared_ptr< Factory< T1 > > &)
friend SpMat< T1 > & get_reference_load(const shared_ptr< Factory< T1 > > &)
friend T1 & get_current_time(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_damping_force(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_resistance(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_auxiliary_resistance(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_inertial_force(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_displacement(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_load(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_acceleration(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_pre_temperature(const shared_ptr< Factory< T1 > > &)
friend SpMat< T1 > & get_auxiliary_stiffness(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_load(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_acceleration(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_temperature(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_pre_resistance(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_velocity(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_inertial_force(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_displacement(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_damping_force(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_settlement(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_pre_acceleration(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_damping_force(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_settlement(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_pre_displacement(const shared_ptr< Factory< T1 > > &)
friend unique_ptr< MetaMat< T1 > > get_basic_container(const Factory< T1 > *)
friend Col< T1 > & get_pre_load(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_pre_damping_force(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_temperature(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_auxiliary_load(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_pre_inertial_force(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_ninja(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_settlement(const shared_ptr< Factory< T1 > > &)
friend T1 & get_pre_time(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_resistance(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_inertial_force(const shared_ptr< Factory< T1 > > &)
friend suanpan::set< uword > & get_reference_dof(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_acceleration(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_temperature(const shared_ptr< Factory< T1 > > &)
friend T1 & get_incre_time(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_eigenvalue(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_current_resistance(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_sushi(const shared_ptr< Factory< T1 > > &)
const bool initialized
Definition: Factory.hpp:173
friend unique_ptr< MetaMat< T1 > > get_matrix_container(const Factory< T1 > *)
friend Col< T1 > & get_incre_load(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_velocity(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_incre_displacement(const shared_ptr< Factory< T1 > > &)
friend Mat< T1 > & get_eigenvector(const shared_ptr< Factory< T1 > > &)
friend Col< T1 > & get_trial_velocity(const shared_ptr< Factory< T1 > > &)
friend T1 & get_trial_time(const shared_ptr< Factory< T1 > > &)
void set_pre_inertial_force(const Col< T > &)
Definition: Factory.hpp:940
void set_eigenvalue(const Col< T > &)
Definition: Factory.hpp:958
void clear_acceleration()
Definition: Factory.hpp:1672
void initialize_load()
Definition: Factory.hpp:772
void set_mpc(unsigned)
Definition: Factory.hpp:852
void commit_temperature()
Definition: Factory.hpp:1546
bool is_sparse() const
Definition: Factory.hpp:677
void set_incre_velocity(const Col< T > &)
Definition: Factory.hpp:900
uword get_entry() const
Definition: Factory.hpp:643
void set_incre_temperature(const Col< T > &)
Definition: Factory.hpp:904
void print() const
Definition: Factory.hpp:1850
void clear_resistance()
Definition: Factory.hpp:1637
void initialize_auxiliary_resistance()
Definition: Factory.hpp:826
void clear_load_factor()
Definition: Factory.hpp:1616
void set_incre_acceleration(const Col< T > &)
Definition: Factory.hpp:902
int initialize()
Definition: Factory.hpp:711
const Col< T > & get_current_acceleration() const
Definition: Factory.hpp:1056
void update_incre_damping_force_by(const Col< T > &)
Definition: Factory.hpp:1361
const Col< T > & get_pre_damping_force() const
Definition: Factory.hpp:1070
void reset_displacement()
Definition: Factory.hpp:1749
void update_incre_temperature_by(const Col< T > &)
Definition: Factory.hpp:1386
void set_ninja(const Col< T > &)
Definition: Factory.hpp:848
void update_trial_temperature_by(const Col< T > &)
Definition: Factory.hpp:1331
bool is_nlgeom() const
Definition: Factory.hpp:651
void update_incre_load_factor_by(const Col< T > &)
Definition: Factory.hpp:1341
const Mat< T > & get_eigenvector() const
Definition: Factory.hpp:1114
const Col< T > & get_trial_velocity() const
Definition: Factory.hpp:1010
const Col< T > & get_trial_resistance() const
Definition: Factory.hpp:1002
void update_trial_load_factor_by(const Col< T > &)
Definition: Factory.hpp:1286
const Col< T > & get_ninja() const
Definition: Factory.hpp:962
void set_pre_velocity(const Col< T > &)
Definition: Factory.hpp:944
const Col< T > & get_current_load() const
Definition: Factory.hpp:1042
void set_trial_settlement(const Col< T > &)
Definition: Factory.hpp:868
void set_incre_load_factor(const Col< T > &)
Definition: Factory.hpp:886
void set_trial_time(T)
Definition: Factory.hpp:862
void update_incre_load_by(const Col< T > &)
Definition: Factory.hpp:1346
void set_solver_type(SolverType)
Definition: Factory.hpp:653
const Col< T > & get_pre_load() const
Definition: Factory.hpp:1064
void commit_acceleration()
Definition: Factory.hpp:1540
AnalysisType get_analysis_type() const
Definition: Factory.hpp:667
void set_current_resistance(const Col< T > &)
Definition: Factory.hpp:914
void update_incre_displacement(const Col< T > &)
Definition: Factory.hpp:1206
void set_incre_displacement(const Col< T > &)
Definition: Factory.hpp:898
void update_current_acceleration_by(const Col< T > &)
Definition: Factory.hpp:1436
const uvec & get_auxiliary_encoding() const
Definition: Factory.hpp:970
void reset_auxiliary_resistance()
Definition: Factory.hpp:1773
void commit_resistance()
Definition: Factory.hpp:1510
const Col< T > & get_incre_inertial_force() const
Definition: Factory.hpp:1028
void set_storage_scheme(StorageScheme)
Definition: Factory.hpp:669
void initialize_damping()
Definition: Factory.hpp:833
void update_incre_velocity(const Col< T > &)
Definition: Factory.hpp:1211
void initialize_geometry()
Definition: Factory.hpp:837
void update_incre_displacement_by(const Col< T > &)
Definition: Factory.hpp:1371
void update_current_damping_force_by(const Col< T > &)
Definition: Factory.hpp:1416
void set_trial_velocity(const Col< T > &)
Definition: Factory.hpp:878
void update_current_resistance(const Col< T > &)
Definition: Factory.hpp:1246
void clear_inertial_force()
Definition: Factory.hpp:1651
void update_trial_damping_force_by(const Col< T > &)
Definition: Factory.hpp:1306
unsigned get_mpc() const
Definition: Factory.hpp:966
const Col< T > & get_current_settlement() const
Definition: Factory.hpp:1044
void assemble_mass(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1837
const SolverSetting< double > & get_solver_setting() const
Definition: Factory.hpp:659
void commit_load_factor()
Definition: Factory.hpp:1492
std::mutex & get_damping_mutex()
Definition: Factory.hpp:1106
void update_trial_velocity_by(const Col< T > &)
Definition: Factory.hpp:1321
void update_current_load_by(const Col< T > &)
Definition: Factory.hpp:1401
const shared_ptr< MetaMat< T > > & get_damping() const
Definition: Factory.hpp:1084
void set_pre_settlement(const Col< T > &)
Definition: Factory.hpp:934
void set_nlgeom(bool)
Definition: Factory.hpp:645
StorageScheme get_storage_scheme() const
Definition: Factory.hpp:675
void commit_inertial_force()
Definition: Factory.hpp:1522
void update_current_time(T)
Definition: Factory.hpp:1226
void initialize_resistance()
Definition: Factory.hpp:784
const Col< T > & get_current_damping_force() const
Definition: Factory.hpp:1048
void set_solver_setting(const SolverSetting< double > &)
Definition: Factory.hpp:657
void update_trial_displacement_by(const Col< T > &)
Definition: Factory.hpp:1316
void set_mass(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:950
void reset_velocity()
Definition: Factory.hpp:1755
const Col< T > & get_trial_load_factor() const
Definition: Factory.hpp:996
void set_current_load(const Col< T > &)
Definition: Factory.hpp:910
std::mutex & get_trial_load_mutex()
Definition: Factory.hpp:1100
void initialize_stiffness()
Definition: Factory.hpp:835
void initialize_damping_force()
Definition: Factory.hpp:790
T get_current_time() const
Definition: Factory.hpp:1038
const Col< T > & get_pre_settlement() const
Definition: Factory.hpp:1066
void update_trial_temperature(const Col< T > &)
Definition: Factory.hpp:1166
void commit_velocity()
Definition: Factory.hpp:1534
void set_pre_time(T)
Definition: Factory.hpp:928
T get_complementary_energy()
Definition: Factory.hpp:990
void reset()
Definition: Factory.hpp:1799
const Col< T > & get_incre_displacement() const
Definition: Factory.hpp:1030
void set_current_damping_force(const Col< T > &)
Definition: Factory.hpp:916
void update_trial_acceleration(const Col< T > &)
Definition: Factory.hpp:1161
void set_current_time(T)
Definition: Factory.hpp:906
const Col< T > & get_auxiliary_load() const
Definition: Factory.hpp:976
void commit_pre_settlement()
Definition: Factory.hpp:1577
const shared_ptr< MetaMat< T > > & get_mass() const
Definition: Factory.hpp:1082
void commit_status()
Definition: Factory.hpp:1468
void commit_pre_load_factor()
Definition: Factory.hpp:1573
const suanpan::set< uword > & get_reference_dof() const
Definition: Factory.hpp:705
void set_incre_time(T)
Definition: Factory.hpp:884
void update_trial_inertial_force(const Col< T > &)
Definition: Factory.hpp:1146
void set_current_velocity(const Col< T > &)
Definition: Factory.hpp:922
void commit_displacement()
Definition: Factory.hpp:1528
void update_current_velocity_by(const Col< T > &)
Definition: Factory.hpp:1431
const Col< T > & get_incre_damping_force() const
Definition: Factory.hpp:1026
void update_trial_load_factor(const Col< T > &)
Definition: Factory.hpp:1121
void reset_load_factor()
Definition: Factory.hpp:1713
void clear_velocity()
Definition: Factory.hpp:1665
void update_current_load(const Col< T > &)
Definition: Factory.hpp:1236
void update_incre_time(T)
Definition: Factory.hpp:1171
void update_incre_settlement_by(const Col< T > &)
Definition: Factory.hpp:1351
unsigned get_reference_size() const
Definition: Factory.hpp:699
void update_current_acceleration(const Col< T > &)
Definition: Factory.hpp:1271
StorageScheme
Definition: Factory.hpp:48
void commit_pre_temperature()
Definition: Factory.hpp:1591
void commit_pre_status()
Definition: Factory.hpp:1557
void update_current_time_by(T)
Definition: Factory.hpp:1391
void set_trial_acceleration(const Col< T > &)
Definition: Factory.hpp:880
void update_trial_damping_force(const Col< T > &)
Definition: Factory.hpp:1141
const Col< T > & get_incre_settlement() const
Definition: Factory.hpp:1022
void reset_inertial_force()
Definition: Factory.hpp:1743
void set_reference_dof(const suanpan::set< uword > &)
Definition: Factory.hpp:703
const Col< T > & get_momentum()
Definition: Factory.hpp:992
void update_current_displacement(const Col< T > &)
Definition: Factory.hpp:1261
void clear_settlement()
Definition: Factory.hpp:1630
void set_pre_load(const Col< T > &)
Definition: Factory.hpp:932
std::mutex & get_auxiliary_stiffness_mutex()
Definition: Factory.hpp:1096
T get_incre_time() const
Definition: Factory.hpp:1016
void commit_pre_damping_force()
Definition: Factory.hpp:1581
T get_strain_energy()
Definition: Factory.hpp:984
void commit_pre_inertial_force()
Definition: Factory.hpp:1583
void update_trial_settlement(const Col< T > &)
Definition: Factory.hpp:1131
void set_trial_inertial_force(const Col< T > &)
Definition: Factory.hpp:874
const Col< T > & get_eigenvalue() const
Definition: Factory.hpp:1112
void commit_pre_displacement()
Definition: Factory.hpp:1585
std::mutex & get_geometry_mutex()
Definition: Factory.hpp:1110
void commit_pre_acceleration()
Definition: Factory.hpp:1589
const Col< T > & get_incre_velocity() const
Definition: Factory.hpp:1032
T get_trial_time() const
Definition: Factory.hpp:994
void update_current_temperature_by(const Col< T > &)
Definition: Factory.hpp:1441
void set_geometry(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:956
void set_incre_load(const Col< T > &)
Definition: Factory.hpp:888
void update_reference_size()
Definition: Factory.hpp:692
void set_pre_acceleration(const Col< T > &)
Definition: Factory.hpp:946
void set_incre_inertial_force(const Col< T > &)
Definition: Factory.hpp:896
T get_kinetic_energy()
Definition: Factory.hpp:986
void set_current_settlement(const Col< T > &)
Definition: Factory.hpp:912
void update_trial_settlement_by(const Col< T > &)
Definition: Factory.hpp:1296
void initialize_inertial_force()
Definition: Factory.hpp:796
void set_pre_resistance(const Col< T > &)
Definition: Factory.hpp:936
void commit_load()
Definition: Factory.hpp:1498
void update_trial_acceleration_by(const Col< T > &)
Definition: Factory.hpp:1326
const Col< T > & get_pre_acceleration() const
Definition: Factory.hpp:1078
void update_incre_acceleration_by(const Col< T > &)
Definition: Factory.hpp:1381
void commit_pre_load()
Definition: Factory.hpp:1575
void commit_pre_velocity()
Definition: Factory.hpp:1587
void update_trial_resistance_by(const Col< T > &)
Definition: Factory.hpp:1301
AnalysisType
Definition: Factory.hpp:39
void commit_pre_time()
Definition: Factory.hpp:1571
void commit_auxiliary_resistance()
Definition: Factory.hpp:1552
void update_current_settlement(const Col< T > &)
Definition: Factory.hpp:1241
void update_trial_load(const Col< T > &)
Definition: Factory.hpp:1126
void update_incre_load(const Col< T > &)
Definition: Factory.hpp:1181
void update_trial_time(T)
Definition: Factory.hpp:1116
const shared_ptr< MetaMat< T > > & get_stiffness() const
Definition: Factory.hpp:1086
void commit_settlement()
Definition: Factory.hpp:1504
const Col< T > & get_auxiliary_lambda() const
Definition: Factory.hpp:972
void reset_load()
Definition: Factory.hpp:1719
void reset_damping_force()
Definition: Factory.hpp:1737
void update_current_inertial_force_by(const Col< T > &)
Definition: Factory.hpp:1421
void set_trial_temperature(const Col< T > &)
Definition: Factory.hpp:882
std::mutex & get_auxiliary_encoding_mutex()
Definition: Factory.hpp:1090
SolverType
Definition: Factory.hpp:57
void assemble_damping_force(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1811
const Col< T > & get_pre_displacement() const
Definition: Factory.hpp:1074
void assemble_damping(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1839
const Col< T > & get_current_inertial_force() const
Definition: Factory.hpp:1050
std::mutex & get_mass_mutex()
Definition: Factory.hpp:1104
const Col< T > & get_pre_load_factor() const
Definition: Factory.hpp:1062
const Col< T > & get_trial_displacement() const
Definition: Factory.hpp:1008
void update_trial_velocity(const Col< T > &)
Definition: Factory.hpp:1156
void update_current_temperature(const Col< T > &)
Definition: Factory.hpp:1276
void reset_temperature()
Definition: Factory.hpp:1767
void assemble_stiffness(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1841
std::mutex & get_auxiliary_resistance_mutex()
Definition: Factory.hpp:1092
void set_current_acceleration(const Col< T > &)
Definition: Factory.hpp:924
void update_current_settlement_by(const Col< T > &)
Definition: Factory.hpp:1406
void initialize_settlement()
Definition: Factory.hpp:778
void clear_damping()
Definition: Factory.hpp:1785
const Col< T > & get_incre_load_factor() const
Definition: Factory.hpp:1018
void clear_energy()
Definition: Factory.hpp:1460
const SpMat< T > & get_reference_load() const
Definition: Factory.hpp:968
void initialize_displacement()
Definition: Factory.hpp:802
void reset_time()
Definition: Factory.hpp:1708
const Col< T > & get_current_displacement() const
Definition: Factory.hpp:1052
unsigned get_size() const
Definition: Factory.hpp:639
void reset_settlement()
Definition: Factory.hpp:1725
void clear_damping_force()
Definition: Factory.hpp:1644
void set_analysis_type(AnalysisType)
Definition: Factory.hpp:661
const Col< T > & get_incre_load() const
Definition: Factory.hpp:1020
void set_entry(uword)
Definition: Factory.hpp:641
const Col< T > & get_incre_acceleration() const
Definition: Factory.hpp:1034
T get_pre_time() const
Definition: Factory.hpp:1060
void clear_geometry()
Definition: Factory.hpp:1789
T get_viscous_energy()
Definition: Factory.hpp:988
std::mutex & get_trial_constraint_resistance_mutex()
Definition: Factory.hpp:1098
const Col< T > & get_current_temperature() const
Definition: Factory.hpp:1058
void update_incre_time_by(T)
Definition: Factory.hpp:1336
void set_reference_size(unsigned)
Definition: Factory.hpp:694
void initialize_temperature()
Definition: Factory.hpp:820
void set_current_displacement(const Col< T > &)
Definition: Factory.hpp:920
void update_reference_dof(const uvec &)
Definition: Factory.hpp:701
const Col< T > & get_trial_inertial_force() const
Definition: Factory.hpp:1006
void set_current_inertial_force(const Col< T > &)
Definition: Factory.hpp:918
void set_trial_load(const Col< T > &)
Definition: Factory.hpp:866
void update_incre_temperature(const Col< T > &)
Definition: Factory.hpp:1221
void update_current_velocity(const Col< T > &)
Definition: Factory.hpp:1266
void set_error(T)
Definition: Factory.hpp:707
const Col< T > & get_trial_settlement() const
Definition: Factory.hpp:1000
void set_eigenvector(const Mat< T > &)
Definition: Factory.hpp:960
void initialize_load_factor()
Definition: Factory.hpp:762
const Col< T > & get_trial_load() const
Definition: Factory.hpp:998
void update_current_displacement_by(const Col< T > &)
Definition: Factory.hpp:1426
void set_trial_resistance(const Col< T > &)
Definition: Factory.hpp:870
void set_pre_load_factor(const Col< T > &)
Definition: Factory.hpp:930
void update_current_damping_force(const Col< T > &)
Definition: Factory.hpp:1251
void update_current_load_factor(const Col< T > &)
Definition: Factory.hpp:1231
void commit_energy()
Definition: Factory.hpp:1446
void commit_damping_force()
Definition: Factory.hpp:1516
T get_error() const
Definition: Factory.hpp:709
void update_trial_time_by(T)
Definition: Factory.hpp:1281
void update_incre_acceleration(const Col< T > &)
Definition: Factory.hpp:1216
const SpMat< T > & get_auxiliary_stiffness() const
Definition: Factory.hpp:978
void assemble_inertial_force(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1816
void clear_status()
Definition: Factory.hpp:1593
void set_bandwidth(unsigned, unsigned)
Definition: Factory.hpp:679
void update_incre_velocity_by(const Col< T > &)
Definition: Factory.hpp:1376
const Col< T > & get_current_load_factor() const
Definition: Factory.hpp:1040
void commit_time()
Definition: Factory.hpp:1487
void clear_mass()
Definition: Factory.hpp:1783
void get_bandwidth(unsigned &, unsigned &) const
Definition: Factory.hpp:687
const Col< T > & get_pre_inertial_force() const
Definition: Factory.hpp:1072
void commit_pre_resistance()
Definition: Factory.hpp:1579
void reset_resistance()
Definition: Factory.hpp:1731
SolverType get_solver_type() const
Definition: Factory.hpp:655
std::mutex & get_auxiliary_load_mutex()
Definition: Factory.hpp:1094
const Col< T > & get_trial_acceleration() const
Definition: Factory.hpp:1012
void assemble_resistance(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1806
void set_incre_damping_force(const Col< T > &)
Definition: Factory.hpp:894
const SpCol< T > & get_trial_constraint_resistance() const
Definition: Factory.hpp:980
void update_incre_damping_force(const Col< T > &)
Definition: Factory.hpp:1196
const Col< T > & get_pre_velocity() const
Definition: Factory.hpp:1076
const Col< T > & get_current_resistance() const
Definition: Factory.hpp:1046
void initialize_velocity()
Definition: Factory.hpp:808
std::mutex & get_stiffness_mutex()
Definition: Factory.hpp:1108
void update_incre_inertial_force_by(const Col< T > &)
Definition: Factory.hpp:1366
const Col< T > & get_current_velocity() const
Definition: Factory.hpp:1054
void update_incre_load_factor(const Col< T > &)
Definition: Factory.hpp:1176
void set_incre_resistance(const Col< T > &)
Definition: Factory.hpp:892
const Col< T > & get_pre_temperature() const
Definition: Factory.hpp:1080
void clear_load()
Definition: Factory.hpp:1623
const Col< T > & get_incre_temperature() const
Definition: Factory.hpp:1036
Factory(unsigned=0, AnalysisType=AnalysisType::NONE, StorageScheme=StorageScheme::FULL)
Definition: Factory.hpp:628
void set_size(unsigned)
Definition: Factory.hpp:633
void update_trial_displacement(const Col< T > &)
Definition: Factory.hpp:1151
const Col< T > & get_incre_resistance() const
Definition: Factory.hpp:1024
void assemble_geometry(const Mat< T > &, const uvec &)
Definition: Factory.hpp:1843
const Col< T > & get_sushi() const
Definition: Factory.hpp:964
const Col< T > & get_auxiliary_resistance() const
Definition: Factory.hpp:974
const Col< T > & get_trial_damping_force() const
Definition: Factory.hpp:1004
void update_current_resistance_by(const Col< T > &)
Definition: Factory.hpp:1411
void set_pre_temperature(const Col< T > &)
Definition: Factory.hpp:948
void update_trial_load_by(const Col< T > &)
Definition: Factory.hpp:1291
const SpCol< T > & get_current_constraint_resistance() const
Definition: Factory.hpp:982
void clear_auxiliary_resistance()
Definition: Factory.hpp:1686
void update_incre_resistance_by(const Col< T > &)
Definition: Factory.hpp:1356
void set_incre_settlement(const Col< T > &)
Definition: Factory.hpp:890
void set_sushi(const Col< T > &)
Definition: Factory.hpp:850
void update_incre_settlement(const Col< T > &)
Definition: Factory.hpp:1186
void set_pre_displacement(const Col< T > &)
Definition: Factory.hpp:942
void set_current_load_factor(const Col< T > &)
Definition: Factory.hpp:908
void set_trial_displacement(const Col< T > &)
Definition: Factory.hpp:876
void update_trial_resistance(const Col< T > &)
Definition: Factory.hpp:1136
void clear_eigen()
Definition: Factory.hpp:1778
void clear_auxiliary()
Definition: Factory.hpp:1791
void set_reference_load(const SpMat< T > &)
Definition: Factory.hpp:860
void update_incre_resistance(const Col< T > &)
Definition: Factory.hpp:1191
void update_current_load_factor_by(const Col< T > &)
Definition: Factory.hpp:1396
void set_trial_load_factor(const Col< T > &)
Definition: Factory.hpp:864
void initialize_eigen()
Definition: Factory.hpp:843
void update_incre_inertial_force(const Col< T > &)
Definition: Factory.hpp:1201
void clear_time()
Definition: Factory.hpp:1614
void set_stiffness(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:954
void clear_displacement()
Definition: Factory.hpp:1658
const shared_ptr< MetaMat< T > > & get_geometry() const
Definition: Factory.hpp:1088
void reset_status()
Definition: Factory.hpp:1691
void update_current_inertial_force(const Col< T > &)
Definition: Factory.hpp:1256
const Col< T > & get_trial_temperature() const
Definition: Factory.hpp:1014
void set_trial_damping_force(const Col< T > &)
Definition: Factory.hpp:872
std::mutex & get_trial_settlement_mutex()
Definition: Factory.hpp:1102
void initialize_mass()
Definition: Factory.hpp:831
void set_pre_damping_force(const Col< T > &)
Definition: Factory.hpp:938
void clear_temperature()
Definition: Factory.hpp:1679
void initialize_acceleration()
Definition: Factory.hpp:814
void update_trial_inertial_force_by(const Col< T > &)
Definition: Factory.hpp:1311
void set_current_temperature(const Col< T > &)
Definition: Factory.hpp:926
void set_damping(const shared_ptr< MetaMat< T > > &)
Definition: Factory.hpp:952
void reset_acceleration()
Definition: Factory.hpp:1761
const Col< T > & get_pre_resistance() const
Definition: Factory.hpp:1068
void clear_stiffness()
Definition: Factory.hpp:1787
std::set< T > set
Definition: container.h:54
Definition: SolverSetting.hpp:40
#define suanpan_info
Definition: suanPan.h:293