[{"data":1,"prerenderedAt":1997},["ShallowReactive",2],{"kb-en-\u002Fkb\u002Fanalysis\u002Fsolvers":3,"kb-nav-en":1616},{"page":4,"fallback":1606},{"id":5,"title":6,"body":7,"description":1604,"extension":1605,"faq":1606,"meta":1607,"navigation":1608,"ogImage":1609,"order":1610,"path":1611,"raw":1606,"robots":1609,"schemaOrg":1609,"seo":1612,"sitemap":1613,"stem":1614,"__hash__":1615},"content_en\u002Fkb\u002Fanalysis\u002Fsolvers.md","Choosing a linear solver",{"type":8,"value":9,"toc":1585},"minimark",[10,85,90,303,315,323,327,330,399,404,411,457,464,468,471,496,504,508,514,520,649,860,865,869,874,1074,1092,1106,1109,1112,1124,1129,1157,1163,1167,1173,1184,1190,1196,1210,1220,1223,1226,1367,1382,1415,1424,1435,1439,1446,1473,1476,1480,1539,1548,1552],[11,12,13,14,69,70,74,75,78,79,84],"p",{},"Every analysis ends in a linear system ",[15,16,19],"span",{"className":17},[18],"katex",[15,20,24,57],{"className":21,"ariaHidden":23},[22],"katex-html","true",[15,25,28,33,40,44,49,54],{"className":26},[27],"base",[15,29],{"className":30,"style":32},[31],"strut","height:0.6833em;",[15,34,39],{"className":35,"style":38},[36,37],"mord","mathnormal","margin-right:0.0715em;","K",[15,41,43],{"className":42},[36,37],"u",[15,45],{"className":46,"style":48},[47],"mspace","margin-right:0.2778em;",[15,50,53],{"className":51},[52],"mrel","=",[15,55],{"className":56,"style":48},[47],[15,58,60,64],{"className":59},[27],[15,61],{"className":62,"style":63},[31],"height:0.8889em;vertical-align:-0.1944em;",[15,65,68],{"className":66,"style":67},[36,37],"margin-right:0.1076em;","f",", and there is more than one way to solve\nit. Elementarium lets you choose, per analysis setup, between an ",[71,72,73],"strong",{},"iterative"," conjugate\ngradient method with a preconditioner and a ",[71,76,77],{},"direct"," factorisation. Most models are\nindifferent to the choice; some are not. The ",[80,81,83],"a",{"href":82},"#the-solve-monitor","solve monitor"," shows\neither one converging while it runs.",[86,87,89],"h2",{"id":88},"the-solvers","The solvers",[91,92,93,109],"table",{},[94,95,96],"thead",{},[97,98,99,103,106],"tr",{},[100,101,102],"th",{},"Solver",[100,104,105],{},"Kind",[100,107,108],{},"What it does",[110,111,112,127,235],"tbody",{},[97,113,114,121,124],{},[115,116,117,120],"td",{},[71,118,119],{},"Conjugate gradient"," — the default",[115,122,123],{},"Iterative",[115,125,126],{},"Improves an initial guess step by step until the relative residual falls below a tolerance you set. Stores the matrix and a few vectors, nothing more",[97,128,129,197,200],{},[115,130,131],{},[71,132,133,134,196],{},"Cholesky (",[15,135,137],{"className":136},[18],[15,138,140],{"className":139,"ariaHidden":23},[22],[15,141,143,147,151],{"className":142},[27],[15,144],{"className":145,"style":146},[31],"height:0.8491em;",[15,148,150],{"className":149},[36,37],"L",[15,152,154,157],{"className":153},[36],[15,155,150],{"className":156},[36,37],[15,158,161],{"className":159},[160],"msupsub",[15,162,165],{"className":163},[164],"vlist-t",[15,166,169],{"className":167},[168],"vlist-r",[15,170,173],{"className":171,"style":146},[172],"vlist",[15,174,176,181],{"style":175},"top:-3.063em;margin-right:0.05em;",[15,177],{"className":178,"style":180},[179],"pstrut","height:2.7em;",[15,182,188],{"className":183},[184,185,186,187],"sizing","reset-size6","size3","mtight",[15,189,191],{"className":190},[36,187],[15,192,195],{"className":193},[36,194,187],"mathsf","T",")",[115,198,199],{},"Direct",[115,201,202,203,218,219,234],{},"Factorises ",[15,204,206],{"className":205},[18],[15,207,209],{"className":208,"ariaHidden":23},[22],[15,210,212,215],{"className":211},[27],[15,213],{"className":214,"style":32},[31],[15,216,39],{"className":217,"style":38},[36,37]," into a lower-triangular matrix and its transpose. Needs ",[15,220,222],{"className":221},[18],[15,223,225],{"className":224,"ariaHidden":23},[22],[15,226,228,231],{"className":227},[27],[15,229],{"className":230,"style":32},[31],[15,232,39],{"className":233,"style":38},[36,37]," symmetric positive definite",[97,236,237,293,295],{},[115,238,239],{},[71,240,133,241,196],{},[15,242,244],{"className":243},[18],[15,245,247],{"className":246,"ariaHidden":23},[22],[15,248,250,253,256,261],{"className":249},[27],[15,251],{"className":252,"style":146},[31],[15,254,150],{"className":255},[36,37],[15,257,260],{"className":258,"style":259},[36,37],"margin-right:0.0278em;","D",[15,262,264,267],{"className":263},[36],[15,265,150],{"className":266},[36,37],[15,268,270],{"className":269},[160],[15,271,273],{"className":272},[164],[15,274,276],{"className":275},[168],[15,277,279],{"className":278,"style":146},[172],[15,280,281,284],{"style":175},[15,282],{"className":283,"style":180},[179],[15,285,287],{"className":286},[184,185,186,187],[15,288,290],{"className":289},[36,187],[15,291,195],{"className":292},[36,194,187],[115,294,199],{},[115,296,297,298,302],{},"The same with a diagonal pulled out, so it also handles symmetric matrices that are indefinite — which is what the ",[80,299,301],{"href":300},"\u002Fkb\u002Fanalysis\u002Fsecond-order","second-order"," iteration watches for",[11,304,305,306,309,310,314],{},"The direct solvers are ",[71,307,308],{},"sparse",": they exploit the fact that a stiffness matrix is mostly\nzeros, so the cost grows far more slowly than the square of the number of degrees of\nfreedom would suggest. The matrix does not store the zeros ",[311,312,313],"em",{},"inside"," each node's 6 × 6\nblock either.",[11,316,317,318,322],{},"All three run threaded where the browser grants cross-origin isolation — see\n",[80,319,321],{"href":320},"#solver-threads","Solver threads"," below.",[86,324,326],{"id":325},"preconditioners-for-cg","Preconditioners for CG",[11,328,329],{},"Conjugate gradients converge at a rate set by the conditioning of the system. A stiffness\nmatrix, with stiffnesses spanning orders of magnitude between a stiff column and a soft\nspring, is usually badly conditioned. A preconditioner transforms the problem into one\nthat converges faster:",[91,331,332,345],{},[94,333,334],{},[97,335,336,339,342],{},[100,337,338],{},"Preconditioner",[100,340,341],{},"Cost per iteration",[100,343,344],{},"Effect",[110,346,347,360,373,386],{},[97,348,349,354,357],{},[115,350,351,120],{},[71,352,353],{},"Jacobi (diagonal)",[115,355,356],{},"Negligible",[115,358,359],{},"Removes the scaling differences between degrees of freedom. Cheap, fully threaded, and enough for frames",[97,361,362,367,370],{},[115,363,364],{},[71,365,366],{},"Incomplete Cholesky",[115,368,369],{},"Moderate",[115,371,372],{},"An approximate factorisation (IC0); usually cuts iterations by an order of magnitude, at the price of a sequential setup",[97,374,375,380,383],{},[115,376,377],{},[71,378,379],{},"Algebraic multigrid (AMG)",[115,381,382],{},"Higher setup",[115,384,385],{},"Attacks the long-wavelength error that Jacobi-CG resolves slowly. The strongest on large surface meshes",[97,387,388,393,396],{},[115,389,390],{},[71,391,392],{},"None",[115,394,395],{},"—",[115,397,398],{},"Plain CG, for comparison only",[400,401,403],"h3",{"id":402},"multigrid","Multigrid",[11,405,406,407,410],{},"Multigrid got three changes in 0.5.0 that make it the preconditioner to reach for on a\nmodel with plates — the analysis manager suggests ",[71,408,409],{},"Switch to AMG"," when it sees one:",[412,413,414,429,451],"ul",{},[415,416,417,420,421,424,425,428],"li",{},[71,418,419],{},"It is told about rigid-body modes."," With ",[71,422,423],{},"Rigid-body modes"," on ",[311,426,427],{},"Auto",", the coarse\nlevels are built knowing how a shell or a frame moves when it is not strained, so a\ntypical solve converges in tens of iterations rather than hundreds or thousands.",[415,430,431,434,435,438,439,442,443,446,447,450],{},[71,432,433],{},"Its default smoother is threaded."," The smoother is now ",[71,436,437],{},"SPAI(0)",", which runs on\nevery core. ILU(0), the old default, ran on one core and slowed down when threaded; it is\nstill offered, marked as such. ",[71,440,441],{},"Chebyshev",", ",[71,444,445],{},"Damped Jacobi"," and the sequential\n",[71,448,449],{},"Gauss-Seidel"," are the other choices.",[415,452,453,456],{},[71,454,455],{},"It solves load cases together."," Up to eight load cases share one pass through the\nmultigrid hierarchy, using the processor's vector (SIMD) instructions — 1.2–1.7× faster\non models with several load cases.",[11,458,459,460,463],{},"The cycle (V or W), the number of sweeps, the strength threshold and the size of the\ncoarsest level are all exposed under the AMG settings. Leave them alone unless the\n",[71,461,462],{},"Last solve"," readout gives you a reason not to.",[86,465,467],{"id":466},"where-the-choice-is-made","Where the choice is made",[11,469,470],{},"Two places, the second overriding the first:",[412,472,473,479],{},[415,474,475,478],{},[71,476,477],{},"Project settings → Analysis → Solver"," — the project default every analysis starts\nfrom.",[415,480,481,484,485,488,489,492,493,495],{},[71,482,483],{},"Analysis manager → Linear solver"," — per analysis setup. ",[71,486,487],{},"Use project defaults","\nfollows the project; ",[71,490,491],{},"Make default"," promotes this setup's choice to the project. The\n",[71,494,462],{}," line reports what the settings did the last time this analysis ran: the\nmost iterations any load case took, the worst relative residual recomputed from the\nanswer, and the solve time.",[11,497,498,499,503],{},"Modal analysis has no linear-solver section; its eigenvalue settings are on\n",[80,500,502],{"href":501},"\u002Fkb\u002Fanalysis\u002Fmodal","Modal analysis",".",[86,505,507],{"id":506},"the-solve-monitor","The solve monitor",[11,509,510,511,513],{},"A solve that takes more than a moment opens the ",[71,512,83],{}," beside the model. It\nshows the run as it happens: which load case is being solved, the current iteration out\nof the ceiling, the error, and a convergence chart with one curve per load case.",[515,516],"kb-figure",{"alt":517,"caption":518,"src":519},"The solve monitor panel: Linear static, Converged, 1.2 s; Case 8\u002F8, Iteration 119 max, Energy error 8.26×10⁻⁷, Tolerance 1×10⁻⁶; the Convergence tab with eight energy-error curves falling from 10⁰ to below 10⁻⁶ between 110 and 120 iterations, and chips G1, G2, Q1, Q2, Q3, Q4, T1, W1 all ticked","The solve monitor after F5 in the road overpass example: Linear static, converged in 1.2 s; all 8 load cases solved by CG with the multigrid preconditioner, the slowest in 119 iterations, to an energy error of 8.26×10⁻⁷ against a 1×10⁻⁶ tolerance. One curve per load case, G1 to W1.","\u002Fkb\u002Fsolve-monitor-convergence.webp",[91,521,522,532],{},[94,523,524],{},[97,525,526,529],{},[100,527,528],{},"Part",[100,530,531],{},"What it tells you",[110,533,534,569,594,616,626],{},[97,535,536,539],{},[115,537,538],{},"Header",[115,540,541,542,442,545,442,548,442,551,554,555,442,558,442,561,564,565,568],{},"The analysis, its state — ",[311,543,544],{},"Preparing",[311,546,547],{},"Assembling",[311,549,550],{},"Factorizing",[311,552,553],{},"Iterating",", then ",[311,556,557],{},"Converged",[311,559,560],{},"Not converged",[311,562,563],{},"Stopped"," or ",[311,566,567],{},"Failed"," — and the elapsed time",[97,570,571,574],{},[115,572,573],{},"Readouts",[115,575,576,579,580,442,583,564,586,589,590,593],{},[71,577,578],{},"Case"," (this one of how many), ",[71,581,582],{},"Iteration",[71,584,585],{},"Energy error",[71,587,588],{},"Residual",", and the ",[71,591,592],{},"Tolerance"," it is working to",[97,595,596,602],{},[115,597,598,601],{},[71,599,600],{},"Convergence"," tab",[115,603,604,605,442,607,442,610,442,613],{},"The error per iteration on a log scale, one curve per load case, the tolerance as a dashed line. A chip per load case: ",[311,606,557],{},[311,608,609],{},"Solving",[311,611,612],{},"To solve",[311,614,615],{},"Did not converge",[97,617,618,623],{},[115,619,620,601],{},[71,621,622],{},"Stats",[115,624,625],{},"The run in numbers — see below",[97,627,628,631],{},[115,629,630],{},"Footer",[115,632,633,636,637,640,641,644,645,648],{},[71,634,635],{},"Open while solving",", and ",[71,638,639],{},"Stop"," while it runs (",[71,642,643],{},"Run"," \u002F ",[71,646,647],{},"Run all"," when it has finished)",[11,650,651,652,655,656,855,856,859],{},"The chart can plot two measures. The ",[71,653,654],{},"energy error"," ",[15,657,659],{"className":658},[18],[15,660,662,720],{"className":661,"ariaHidden":23},[22],[15,663,665,669,674,708,712,717],{"className":664},[27],[15,666],{"className":667,"style":668},[31],"height:1em;vertical-align:-0.25em;",[15,670,673],{"className":671},[672],"mopen","∥",[15,675,677,680],{"className":676},[36],[15,678,43],{"className":679},[36,37],[15,681,683],{"className":682},[160],[15,684,686],{"className":685},[164],[15,687,689],{"className":688},[168],[15,690,693],{"className":691,"style":692},[172],"height:0.6887em;",[15,694,695,698],{"style":175},[15,696],{"className":697,"style":180},[179],[15,699,701],{"className":700},[184,185,186,187],[15,702,704],{"className":703},[36,187],[15,705,707],{"className":706},[36,187],"∗",[15,709],{"className":710,"style":711},[47],"margin-right:0.2222em;",[15,713,716],{"className":714},[715],"mbin","−",[15,718],{"className":719,"style":711},[47],[15,721,723,726,729,776,780,783,815],{"className":722},[27],[15,724],{"className":725,"style":668},[31],[15,727,43],{"className":728},[36,37],[15,730,733,736],{"className":731},[732],"mclose",[15,734,673],{"className":735},[732],[15,737,739],{"className":738},[160],[15,740,743,767],{"className":741},[164,742],"vlist-t2",[15,744,746,762],{"className":745},[168],[15,747,750],{"className":748,"style":749},[172],"height:0.3283em;",[15,751,753,756],{"style":752},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[15,754],{"className":755,"style":180},[179],[15,757,759],{"className":758},[184,185,186,187],[15,760,39],{"className":761,"style":38},[36,37,187],[15,763,766],{"className":764},[765],"vlist-s","​",[15,768,770],{"className":769},[168],[15,771,774],{"className":772,"style":773},[172],"height:0.15em;",[15,775],{},[15,777,779],{"className":778},[36],"\u002F",[15,781,673],{"className":782},[672],[15,784,786,789],{"className":785},[36],[15,787,43],{"className":788},[36,37],[15,790,792],{"className":791},[160],[15,793,795],{"className":794},[164],[15,796,798],{"className":797},[168],[15,799,801],{"className":800,"style":692},[172],[15,802,803,806],{"style":175},[15,804],{"className":805,"style":180},[179],[15,807,809],{"className":808},[184,185,186,187],[15,810,812],{"className":811},[36,187],[15,813,707],{"className":814},[36,187],[15,816,818,821],{"className":817},[732],[15,819,673],{"className":820},[732],[15,822,824],{"className":823},[160],[15,825,827,847],{"className":826},[164,742],[15,828,830,844],{"className":829},[168],[15,831,833],{"className":832,"style":749},[172],[15,834,835,838],{"style":752},[15,836],{"className":837,"style":180},[179],[15,839,841],{"className":840},[184,185,186,187],[15,842,39],{"className":843,"style":38},[36,37,187],[15,845,766],{"className":846},[765],[15,848,850],{"className":849},[168],[15,851,853],{"className":852,"style":773},[172],[15,854],{},"\nis what CG minimises, so its curve never rises; it is the true picture of how close the\nanswer is. The ",[71,857,858],{},"residual"," is what the tolerance tests, so it is what decides when a case\nis done; it can sit high, or climb for a while, as the answer improves. A direct solver\nreports neither: it has no iterations, and the monitor shows the factorisation instead.",[11,861,862,864],{},[71,863,639],{}," cancels the run cleanly between iterations. Results already solved stay; the\nrest are reported as not solved.",[400,866,868],{"id":867},"the-stats-tab","The Stats tab",[515,870],{"alt":871,"caption":872,"src":873,":narrow":23},"The solve monitor Stats tab listing Solver Conjugate gradient, Load cases All 8 solved, Iterations 119, Worst residual 9.38×10⁻⁷, Mechanism check Reused, Condition estimate 211, Time 1.11 s and Solve 983 ms","The same run on the Stats tab: Conjugate gradient, all 8 load cases solved, 119 iterations, a worst residual of 9.38×10⁻⁷ recomputed from the answer, the mechanism check reused, a condition estimate of 211, and 1.11 s in all, 983 ms of it the solve.","\u002Fkb\u002Fsolve-monitor-stats.webp",[91,875,876,886],{},[94,877,878],{},[97,879,880,883],{},[100,881,882],{},"Row",[100,884,885],{},"Meaning",[110,887,888,896,904,969,982,1058,1066],{},[97,889,890,893],{},[115,891,892],{},"Result, Solver, Load cases",[115,894,895],{},"What ran, with which method and preconditioner, and how many cases were solved",[97,897,898,901],{},[115,899,900],{},"Iterations",[115,902,903],{},"The most any load case needed to reach the tolerance",[97,905,906,909],{},[115,907,908],{},"Worst residual",[115,910,911,655,965,968],{},[15,912,914],{"className":913},[18],[15,915,917,941],{"className":916,"ariaHidden":23},[22],[15,918,920,923,926,929,932,935,938],{"className":919},[27],[15,921],{"className":922,"style":668},[31],[15,924,673],{"className":925},[672],[15,927,39],{"className":928,"style":38},[36,37],[15,930,43],{"className":931},[36,37],[15,933],{"className":934,"style":711},[47],[15,936,716],{"className":937},[715],[15,939],{"className":940,"style":711},[47],[15,942,944,947,950,953,956,959,962],{"className":943},[27],[15,945],{"className":946,"style":668},[31],[15,948,68],{"className":949,"style":67},[36,37],[15,951,673],{"className":952},[732],[15,954,779],{"className":955},[36],[15,957,673],{"className":958},[672],[15,960,68],{"className":961,"style":67},[36,37],[15,963,673],{"className":964},[732],[71,966,967],{},"recomputed from the answer",", the largest over the load cases. It says whether the answer satisfies equilibrium, whatever the solver reported",[97,970,971,974],{},[115,972,973],{},"Mechanism check",[115,975,976,977,981],{},"Whether the ",[80,978,980],{"href":979},"\u002Fkb\u002Ftroubleshooting\u002Fsingular-stiffness-matrix","pre-solve check"," passed, or was reused from the last run",[97,983,984,987],{},[115,985,986],{},"Condition estimate",[115,988,989,990,1005,1006,1057],{},"How ill-conditioned ",[15,991,993],{"className":992},[18],[15,994,996],{"className":995,"ariaHidden":23},[22],[15,997,999,1002],{"className":998},[27],[15,1000],{"className":1001,"style":32},[31],[15,1003,39],{"className":1004,"style":38},[36,37]," is. Above about ",[15,1007,1009],{"className":1008},[18],[15,1010,1012],{"className":1011,"ariaHidden":23},[22],[15,1013,1015,1019,1023],{"className":1014},[27],[15,1016],{"className":1017,"style":1018},[31],"height:0.8141em;",[15,1020,1022],{"className":1021},[36],"1",[15,1024,1026,1030],{"className":1025},[36],[15,1027,1029],{"className":1028},[36],"0",[15,1031,1033],{"className":1032},[160],[15,1034,1036],{"className":1035},[164],[15,1037,1039],{"className":1038},[168],[15,1040,1042],{"className":1041,"style":1018},[172],[15,1043,1044,1047],{"style":175},[15,1045],{"className":1046,"style":180},[179],[15,1048,1050],{"className":1049},[184,185,186,187],[15,1051,1053],{"className":1052},[36,187],[15,1054,1056],{"className":1055},[36,187],"12"," the answer loses digits — look for a near-mechanism or a very soft spring",[97,1059,1060,1063],{},[115,1061,1062],{},"Free rotations locked",[115,1064,1065],{},"Node rotations no member stiffens, such as truss joints, held so the system can be solved. They carry no result",[97,1067,1068,1071],{},[115,1069,1070],{},"Time",[115,1072,1073],{},"The run split into model build, solve, member forces, plate results, error estimate, displacements and reactions",[11,1075,1076,1079,1080,1083,1084,1087,1088,1091],{},[71,1077,1078],{},"Last run"," and ",[71,1081,1082],{},"By analysis"," switch between the most recent solve and a summary per\nanalysis setup. The header picker does the same for the convergence chart: ",[71,1085,1086],{},"Current\nsolve"," follows whatever is running, ",[71,1089,1090],{},"All analyses"," lists them.",[1093,1094,1097],"callout",{"title":1095,"type":1096},"Turning it off","tip",[11,1098,1099,1100,1102,1103,503],{},"Untick ",[71,1101,635],{}," and the monitor stays closed. It is still one click away:\nthe solver pill at the left of the status bar fills up as a solve progresses, and its menu\nhas ",[71,1104,1105],{},"Solve monitor — convergence & stats",[86,1107,321],{"id":1108},"solver-threads",[11,1110,1111],{},"The threaded build splits assembly, the matrix product and — since 0.4.0 — every other\nstep of each CG iteration across processor threads. How many is a setting:",[412,1113,1114],{},[415,1115,1116,1119,1120,1123],{},[71,1117,1118],{},"Settings → Solver engine → Threads"," — ",[71,1121,1122],{},"Automatic"," (the hint says how many are\navailable) or a fixed count.",[515,1125],{"alt":1126,"caption":1127,"src":1128,":narrow":23},"The Settings dialog with Appearance (theme and language) and Solver engine sections: Engine Parallel or Serial, Threads Automatic, Re-solve automatically and Report paused analyses toggles, and a readout of 8 of 8 threads","Settings, top half: Appearance, then Solver engine — 8 of 8 threads on this machine, the Parallel engine, Threads on Automatic, and the Re-solve automatically and Report paused analyses switches.","\u002Fkb\u002Fsettings-solver-engine.png",[412,1130,1131,1140],{},[415,1132,1133,1135,1136,1139],{},[311,1134,1122],{}," takes ",[71,1137,1138],{},"half the logical processors, at most eight",". Logical processors\nare usually two hyperthreads per physical core; an iterative solve is limited by memory\nbandwidth, so the second hyperthread adds a participant to every synchronisation and no\nbandwidth. Past eight threads, coordinating that many browser workers costs more than it\nsaves.",[415,1141,1142,1145,1146,564,1149,1152,1153,503],{},[71,1143,1144],{},"Solver engine"," itself is ",[71,1147,1148],{},"Parallel",[71,1150,1151],{},"Serial",". Where the page is not\ncross-origin isolated, the engine runs single-threaded and the setting says so — see\n",[80,1154,1156],{"href":1155},"\u002Fkb\u002Fgetting-started\u002Fsystem-requirements","System requirements",[11,1158,1159,1160,1162],{},"Fewer threads leave room for the rest of the machine — a video call, a second browser\nwindow solving something else. A fixed count can only lower the number: ",[311,1161,1122],{}," is also the ceiling.",[86,1164,1166],{"id":1165},"which-to-use","Which to use",[11,1168,1169,1172],{},[71,1170,1171],{},"Start with the default."," Conjugate gradients with Jacobi is cheap, threaded end to end,\nand converges quickly on frames and trusses.",[11,1174,1175,1178,1179,1183],{},[71,1176,1177],{},"Switch to multigrid"," when the model has plates and the solve monitor shows hundreds or\nthousands of iterations per case. Plate meshes are where Jacobi-CG is weakest and AMG is\nstrongest. The overpass above is that case: 18,654 degrees of freedom, mostly deck\nshells. Jacobi-CG needs 3,147 iterations for its slowest load case; AMG needs 119. The\n",[80,1180,1182],{"href":1181},"\u002Fexamples","worked examples"," ship with AMG.",[11,1185,1186,1189],{},[71,1187,1188],{},"Leave incomplete Cholesky for the odd ill-conditioned frame."," Its setup and its\ntriangular solves run on one thread, so on a large model it is the slowest of the three:\nthe overpass takes around ten seconds under IC0 against one to two under Jacobi or AMG.",[11,1191,1192,1195],{},[71,1193,1194],{},"Use a direct solver"," when:",[412,1197,1198,1201,1207],{},[415,1199,1200],{},"you are solving the same matrix against many load cases and memory is not the\nconstraint — the factorisation happens once and every case after it is a cheap pair of\ntriangular solves;",[415,1202,1203,1204,1206],{},"the model is badly conditioned and the iterative solver stalls (",[311,1205,615],{},");",[415,1208,1209],{},"you want an independent check on an iterative result. Two different algorithms agreeing\nto five figures is evidence of a kind that re-running the same one is not.",[1093,1211,1214],{"title":1212,"type":1213},"Never trust CG on a singular system","danger",[11,1215,1216,1217,503],{},"An under-restrained model has no unique solution. A direct solver stops and says so; an\niterative one may wander towards something that looks like an answer. The pre-solve model\ncheck catches rigid-body motion before either solver runs, which is the main reason it\nexists — see ",[80,1218,1219],{"href":979},"Singular stiffness matrix",[86,1221,592],{"id":1222},"tolerance",[11,1224,1225],{},"CG stops when its estimate of the relative residual falls below the tolerance:",[15,1227,1230],{"className":1228},[1229],"katex-display",[15,1231,1233],{"className":1232},[18],[15,1234,1236,1352],{"className":1235,"ariaHidden":23},[22],[15,1237,1239,1243,1342,1345,1349],{"className":1238},[27],[15,1240],{"className":1241,"style":1242},[31],"height:2.363em;vertical-align:-0.936em;",[15,1244,1246,1250,1339],{"className":1245},[36],[15,1247],{"className":1248},[672,1249],"nulldelimiter",[15,1251,1254],{"className":1252},[1253],"mfrac",[15,1255,1257,1330],{"className":1256},[164,742],[15,1258,1260,1327],{"className":1259},[168],[15,1261,1264,1283,1294],{"className":1262,"style":1263},[172],"height:1.427em;",[15,1265,1267,1271],{"style":1266},"top:-2.314em;",[15,1268],{"className":1269,"style":1270},[179],"height:3em;",[15,1272,1274,1277,1280],{"className":1273},[36],[15,1275,673],{"className":1276},[672],[15,1278,68],{"className":1279,"style":67},[36,37],[15,1281,673],{"className":1282},[732],[15,1284,1286,1289],{"style":1285},"top:-3.23em;",[15,1287],{"className":1288,"style":1270},[179],[15,1290],{"className":1291,"style":1293},[1292],"frac-line","border-bottom-width:0.04em;",[15,1295,1297,1300],{"style":1296},"top:-3.677em;",[15,1298],{"className":1299,"style":1270},[179],[15,1301,1303,1306,1309,1312,1315,1318,1321,1324],{"className":1302},[36],[15,1304,673],{"className":1305},[672],[15,1307,68],{"className":1308,"style":67},[36,37],[15,1310],{"className":1311,"style":711},[47],[15,1313,716],{"className":1314},[715],[15,1316],{"className":1317,"style":711},[47],[15,1319,39],{"className":1320,"style":38},[36,37],[15,1322,43],{"className":1323},[36,37],[15,1325,673],{"className":1326},[732],[15,1328,766],{"className":1329},[765],[15,1331,1333],{"className":1332},[168],[15,1334,1337],{"className":1335,"style":1336},[172],"height:0.936em;",[15,1338],{},[15,1340],{"className":1341},[732,1249],[15,1343],{"className":1344,"style":48},[47],[15,1346,1348],{"className":1347},[52],"\u003C",[15,1350],{"className":1351,"style":48},[47],[15,1353,1355,1359],{"className":1354},[27],[15,1356],{"className":1357,"style":1358},[31],"height:0.6944em;",[15,1360,1363],{"className":1361},[36,1362],"text",[15,1364,1366],{"className":1365},[36],"tol",[11,1368,1369,1370,1374,1375,1378,1379,503],{},"The default is ",[1371,1372,1373],"code",{},"1e-6"," with a ceiling of 10,000 iterations; the tolerance can be set\nanywhere from ",[1371,1376,1377],{},"1e-12"," to ",[1371,1380,1381],{},"1e-3",[91,1383,1384,1393],{},[94,1385,1386],{},[97,1387,1388,1390],{},[100,1389,592],{},[100,1391,1392],{},"Use",[110,1394,1395,1404],{},[97,1396,1397,1401],{},[115,1398,1399],{},[1371,1400,1373],{},[115,1402,1403],{},"The default. The displacement error is bounded by the condition estimate times the residual: with a condition estimate in the hundreds, about four figures — still beyond any engineering need",[97,1405,1406,1412],{},[115,1407,1408,1411],{},[1371,1409,1410],{},"1e-5"," and looser",[115,1413,1414],{},"Visible in the results: displacements and reactions carry the residual with them. A quick look, not a report",[11,1416,1417,1418,1420,1421,1423],{},"The number to distrust is a loose tolerance on a badly conditioned model, where the\nresidual can be small while the displacement error is not. The ",[71,1419,908],{}," and\n",[71,1422,986],{}," rows on the Stats tab are there to catch exactly that.",[11,1425,1426,1427,1429,1430,1434],{},"If two setups, one direct and one CG at ",[1371,1428,1373],{},", disagree beyond the fourth figure, the\nconditioning is poor and the reason is in the model: a very stiff spring, a section in the\nwrong units, a near-mechanism. ",[80,1431,1433],{"href":1432},"\u002Fkb\u002Ftroubleshooting\u002Fsolver-errors","Solver errors"," lists\nthe usual causes.",[86,1436,1438],{"id":1437},"two-answers-side-by-side","Two answers, side by side",[11,1440,1441,1442,1445],{},"Each analysis in Elementarium is a ",[71,1443,1444],{},"named setup"," that stores its solver choice and keeps\nits own results. For a result you are not sure of:",[1447,1448,1449],"steps",{},[1450,1451,1452,1458,1467],"ol",{},[415,1453,1454,1457],{},[71,1455,1456],{},"Create a second setup with a different solver"," — direct against CG, or a different\npreconditioner.",[415,1459,1460,1463,1464,1466],{},[71,1461,1462],{},"Solve both",", and compare their ",[71,1465,462],{}," lines in the analysis manager.",[415,1468,1469,1472],{},[71,1470,1471],{},"Pin one to each viewer panel"," and read the governing quantity in both.",[11,1474,1475],{},"The difference answers \"does the solver matter here\". It is almost always no, and now you\ncan say so with a number instead of an assumption.",[86,1477,1479],{"id":1478},"what-the-choice-does-not-affect","What the choice does not affect",[11,1481,1482,1483,655,1486,1522,1523,1538],{},"The solver decides ",[311,1484,1485],{},"how",[15,1487,1489],{"className":1488},[18],[15,1490,1492,1513],{"className":1491,"ariaHidden":23},[22],[15,1493,1495,1498,1501,1504,1507,1510],{"className":1494},[27],[15,1496],{"className":1497,"style":32},[31],[15,1499,39],{"className":1500,"style":38},[36,37],[15,1502,43],{"className":1503},[36,37],[15,1505],{"className":1506,"style":48},[47],[15,1508,53],{"className":1509},[52],[15,1511],{"className":1512,"style":48},[47],[15,1514,1516,1519],{"className":1515},[27],[15,1517],{"className":1518,"style":63},[31],[15,1520,68],{"className":1521,"style":67},[36,37]," is solved, not what ",[15,1524,1526],{"className":1525},[18],[15,1527,1529],{"className":1528,"ariaHidden":23},[22],[15,1530,1532,1535],{"className":1531},[27],[15,1533],{"className":1534,"style":32},[31],[15,1536,39],{"className":1537,"style":38},[36,37]," is. Element formulation, mesh\ndensity, supports, releases and loads are the same for every solver, and every error in\nthem is reproduced faithfully by all of them. A converged CG result and a direct result of\nthe same wrong model agree perfectly.",[11,1540,1541,1542,1420,1544,503],{},"Modal and stability analyses solve an eigenvalue problem rather than a linear system.\nTheir settings (number of modes, mass target, the Sturm-sequence completeness check) are\ndescribed on ",[80,1543,502],{"href":501},[80,1545,1547],{"href":1546},"\u002Fkb\u002Fanalysis\u002Fbuckling","Linear buckling",[86,1549,1551],{"id":1550},"related","Related",[11,1553,1554,1558,1559,1574,1575,1579,1580,1584],{},[80,1555,1557],{"href":1556},"\u002Fkb\u002Ftheory\u002Fdirect-stiffness-method","The direct stiffness method"," explains where ",[15,1560,1562],{"className":1561},[18],[15,1563,1565],{"className":1564,"ariaHidden":23},[22],[15,1566,1568,1571],{"className":1567},[27],[15,1569],{"className":1570,"style":32},[31],[15,1572,39],{"className":1573,"style":38},[36,37]," comes\nfrom; ",[80,1576,1578],{"href":1577},"\u002Fkb\u002Ftheory\u002Felement-formulations","Element formulations"," what each element\ncontributes to it; the ",[80,1581,1583],{"href":1582},"\u002Fkb\u002Frelease-notes","release notes"," record what each solver change\ndid to solve times.",{"title":1586,"searchDepth":1587,"depth":1587,"links":1588},"",2,[1589,1590,1594,1595,1598,1599,1600,1601,1602,1603],{"id":88,"depth":1587,"text":89},{"id":325,"depth":1587,"text":326,"children":1591},[1592],{"id":402,"depth":1593,"text":403},3,{"id":466,"depth":1587,"text":467},{"id":506,"depth":1587,"text":507,"children":1596},[1597],{"id":867,"depth":1593,"text":868},{"id":1108,"depth":1587,"text":321},{"id":1165,"depth":1587,"text":1166},{"id":1222,"depth":1587,"text":592},{"id":1437,"depth":1587,"text":1438},{"id":1478,"depth":1587,"text":1479},{"id":1550,"depth":1587,"text":1551},"Conjugate gradients with Jacobi, incomplete Cholesky or multigrid, or a direct factorisation — what each does, how to watch it, and when the choice matters.","md",false,{},true,null,5,"\u002Fkb\u002Fanalysis\u002Fsolvers",{"title":6,"description":1604},{"loc":1611},"kb\u002Fanalysis\u002Fsolvers","cyfahYo_Ub6Q9VUTyrXuOukQ95xJGLTwO3P0wlBEs0M",{"sections":1617,"extras":1914,"flat":1926},[1618,1651,1694,1713,1748,1771,1798,1829,1856,1879,1891],{"path":1619,"slug":1620,"title":1621,"description":1622,"icon":1623,"articles":1624},"\u002Fkb\u002Fgetting-started","getting-started","Getting started","From an empty tab to a solved, checked structure — the three guides that get you productive in Elementarium.","lucide:rocket",[1625,1629,1633,1637,1639,1643,1647],{"path":1626,"title":1627,"description":1628,"translated":1608},"\u002Fkb\u002Fgetting-started\u002Fkeyboard-shortcuts","Keyboard shortcuts","Every key binding in the workspace, the pointer gestures in the viewports, what the number fields accept, and what the command palette understands.",{"path":1630,"title":1631,"description":1632,"translated":1608},"\u002Fkb\u002Fgetting-started\u002Fquickstart","Quickstart","Build a portal frame, load it, solve it and read the bending moment diagram — about ten minutes from an empty tab.",{"path":1634,"title":1635,"description":1636,"translated":1608},"\u002Fkb\u002Fgetting-started\u002Fscope-and-limits","Scope and limits","What Elementarium models, solves and checks today, and what it does not — on one page, before you commit a job to it.",{"path":1155,"title":1156,"description":1638,"translated":1608},"Which browsers and devices run Elementarium, how threading affects solve speed, and where the practical ceiling on model size comes from.",{"path":1640,"title":1641,"description":1642,"translated":1608},"\u002Fkb\u002Fgetting-started\u002Finterface-tour","Tour of the workspace","The ribbon, properties panel, dockable viewports, table dock, command palette and status bar — what each part of the editor is for.",{"path":1644,"title":1645,"description":1646,"translated":1608},"\u002Fkb\u002Fgetting-started\u002Funits","Units","How units work in Elementarium — SI inside, your unit system on screen — and the handful of conversions that cause most wrong answers in structural models.",{"path":1648,"title":1649,"description":1650,"translated":1608},"\u002Fkb\u002Fgetting-started\u002Ffirst-analysis","Your first analysis","Load cases, combinations and a linear static solve — then how to decide whether the answer is trustworthy.",{"path":1652,"slug":1653,"title":1654,"description":1655,"icon":1656,"articles":1657},"\u002Fkb\u002Fmodeling","modeling","Modeling","Bars, beams, 3D frames, slabs and walls. Geometry, sections, supports and releases that behave like the real structure.","lucide:frame",[1658,1662,1666,1670,1674,1678,1682,1686,1690],{"path":1659,"title":1660,"description":1661,"translated":1608},"\u002Fkb\u002Fmodeling\u002Fbars-beams-and-trusses","Bars, beams and trusses","When a member should be a bar and when a beam, how to model trusses and bracing, and what to do about members that only work in tension.",{"path":1663,"title":1664,"description":1665,"translated":1608},"\u002Fkb\u002Fmodeling\u002Fdrawings-and-snapping","Drawings & snapping","Importing a DXF as a reference underlay, choosing its units and plane, and snapping model geometry onto it accurately.",{"path":1667,"title":1668,"description":1669,"translated":1608},"\u002Fkb\u002Fmodeling\u002Felastic-foundations","Elastic foundations","Grade beams, strip footings and walls on ground as line supports on springs — choosing a subgrade modulus, and where the model stops being true.",{"path":1671,"title":1672,"description":1673,"translated":1608},"\u002Fkb\u002Fmodeling\u002Fplane-frames-in-3d","Plane frames in a 3D solver","When to use the 2D Frame and 2D Truss model types, why a flat structure in a 3D model is a mechanism, and how to restrain it.",{"path":1675,"title":1676,"description":1677,"translated":1608},"\u002Fkb\u002Fmodeling\u002Fsections-and-materials","Sections & materials","What a section and a material contribute to the stiffness matrix and the design checks, and the values worth checking twice.",{"path":1679,"title":1680,"description":1681,"translated":1608},"\u002Fkb\u002Fmodeling\u002Fsurfaces","Slabs, walls and shells","Modelling surfaces in Elementarium — outlines, openings and thickness, how a beam or a wall attaches to a slab, local axes, and what a surface result means.",{"path":1683,"title":1684,"description":1685,"translated":1608},"\u002Fkb\u002Fmodeling\u002Fstructure-generators","Structure generators","Thirty-five parametric structures — trusses, frames, arches, towers, domes and shells — generated from a few dimensions, with supports and loads.",{"path":1687,"title":1688,"description":1689,"translated":1608},"\u002Fkb\u002Fmodeling\u002Fsupports-and-releases","Supports & releases","Pins, fixities, springs and end releases — what each one does to the stiffness matrix, and when each is right.",{"path":1691,"title":1692,"description":1693,"translated":1608},"\u002Fkb\u002Fmodeling\u002Ffirst-model","Your first model","The modeling loop end to end — geometry, sections, supports and releases — on a structure small enough to check by hand.",{"path":1695,"slug":1696,"title":1697,"description":1698,"icon":1699,"articles":1700},"\u002Fkb\u002Fmeshing","meshing","Meshing","Mesh density, local refinement and the quality checks that tell you when a mesh is fine enough to trust.","lucide:grid-3x3",[1701,1705,1709],{"path":1702,"title":1703,"description":1704,"translated":1608},"\u002Fkb\u002Fmeshing\u002Felement-size","Choosing element size","Starting mesh densities for slabs, walls and rafts, and the convergence test that decides whether a mesh is fine enough.",{"path":1706,"title":1707,"description":1708,"translated":1608},"\u002Fkb\u002Fmeshing\u002Frefinement","Local refinement","Where to spend elements, where not to bother, and how to refine without wrecking element shape.",{"path":1710,"title":1711,"description":1712,"translated":1608},"\u002Fkb\u002Fmeshing\u002Fquality-checks","Mesh quality","Aspect ratio, skew and warping — what degrades a result, what the mesher reports, and how to tell whether the elements you are worried about matter.",{"path":1714,"slug":1715,"title":1716,"description":1717,"icon":1718,"articles":1719},"\u002Fkb\u002Floads","loads","Loads & combinations","Build load cases, generate code combinations automatically and find out which one actually governs.","lucide:arrow-down-to-line",[1720,1724,1728,1732,1736,1740,1744],{"path":1721,"title":1722,"description":1723,"translated":1608},"\u002Fkb\u002Floads\u002Fasce-7-combinations","ASCE 7 combinations","LRFD and ASD combinations to ASCE 7-22 — how the generator maps your load groups onto D, L, Lr, S, W and E, and pairing them with the AISC check.",{"path":1725,"title":1726,"description":1727,"translated":1608},"\u002Fkb\u002Floads\u002Fcombinations","Automatic combinations","Generating EN 1990 and ASCE 7 combinations, understanding the equations behind them, and reading the generated set critically.",{"path":1729,"title":1730,"description":1731,"translated":1608},"\u002Fkb\u002Floads\u002Fenvelopes","Envelopes","Extracting the governing value across dozens of combinations without reading every one — and the traps in doing so.",{"path":1733,"title":1734,"description":1735,"translated":1608},"\u002Fkb\u002Floads\u002Fload-cases","Load cases","Actions, self-weight, imposed loads and load arrangements — how to build cases that stay separable.",{"path":1737,"title":1738,"description":1739,"translated":1608},"\u002Fkb\u002Floads\u002Fload-panels","Load panels","Areas that hand a floor, roof or wall pressure to the members around them as line loads, one way or two way, without meshing a slab.",{"path":1741,"title":1742,"description":1743,"translated":1608},"\u002Fkb\u002Floads\u002Ftemperature-loads","Temperature loads","Uniform temperature change and through-depth gradients — what each does to a free and a restrained structure, and the coefficients to use.",{"path":1745,"title":1746,"description":1747,"translated":1608},"\u002Fkb\u002Floads\u002Fwind-and-snow","Wind and snow","Wind to EN 1991-1-4 and snow to EN 1991-1-3, generated on a building envelope — site inputs, recognised roof shapes, the cases produced, and the limits.",{"path":1749,"slug":1750,"title":1751,"description":1752,"icon":1753,"articles":1754},"\u002Fkb\u002Fanalysis","analysis","Analysis types","Linear static, modal, linear buckling and second-order — what each analysis assumes, what it returns and how to read the result.","lucide:activity",[1755,1756,1758,1762,1764,1767],{"path":1611,"title":6,"description":1604,"translated":1608},{"path":1546,"title":1547,"description":1757,"translated":1608},"Critical load factors and buckling shapes — what α_cr means, why it is an upper bound, and how to use it for second-order effects.",{"path":1759,"title":1760,"description":1761,"translated":1608},"\u002Fkb\u002Fanalysis\u002Flinear-static","Linear static analysis","The workhorse analysis — what K u = f actually assumes, what it returns, and where linearity stops being a reasonable model.",{"path":501,"title":502,"description":1763,"translated":1608},"Natural frequencies and mode shapes — mass modelling, participation factors and what the numbers are good for.",{"path":300,"title":1765,"description":1766,"translated":1608},"Second-order analysis","P-Δ and P-δ solved by iteration, geometric imperfections to EN 1993-1-1 §5.3, and why a second-order result cannot be superposed.",{"path":1768,"title":1769,"description":1770,"translated":1608},"\u002Fkb\u002Fanalysis\u002Fverification","Verifying the solver","Closed-form cases you can build in ten minutes to test the solver — beams, frames, columns, plates, frequencies — with the expected error of each.",{"path":1772,"slug":1773,"title":1774,"description":1775,"icon":1776,"articles":1777},"\u002Fkb\u002Fdesign-checks","design-checks","Design checks","Utilisation ratios, governing cases and the clause behind every number a check reports.","lucide:clipboard-check",[1778,1782,1786,1790,1794],{"path":1779,"title":1780,"description":1781,"translated":1608},"\u002Fkb\u002Fdesign-checks\u002Fnational-annexes","National annexes","Where nationally determined parameters change the answer, how to select the right annex, and what to state in the report.",{"path":1783,"title":1784,"description":1785,"translated":1608},"\u002Fkb\u002Fdesign-checks\u002Fsection-classification","Section classification","How EN 1993-1-1 Table 5.2 classifies a steel section, why the class depends on the combination, and what the check does with shapes it cannot classify.",{"path":1787,"title":1788,"description":1789,"translated":1608},"\u002Fkb\u002Fdesign-checks\u002Fserviceability","Serviceability checks","Deflection, drift and floor frequency checked member by member at SLS, to the national annexes, EN 1990:2023, IBC, AISC or EN 1995-1-1.",{"path":1791,"title":1792,"description":1793,"translated":1608},"\u002Fkb\u002Fdesign-checks\u002Faisc","Steel — AISC 360","Member strength to Chapters D to H, LRFD or ASD — compression buckling, lateral-torsional buckling and every C_b option written down.",{"path":1795,"title":1796,"description":1797,"translated":1608},"\u002Fkb\u002Fdesign-checks\u002Fsteel","Steel — EN 1993-1-1","Member resistance to §6.2 and §6.3 — what is checked at every station, where buckling lengths come from, and the clauses left to you.",{"path":1799,"slug":1800,"title":1801,"description":1802,"icon":1803,"articles":1804},"\u002Fkb\u002Freports","reports","Results & reports","Diagrams, contours and tables in the viewport, and the calculation package you hand to a reviewer.","lucide:file-chart-column",[1805,1809,1813,1817,1821,1825],{"path":1806,"title":1807,"description":1808,"translated":1608},"\u002Fkb\u002Freports\u002Fexporting","Exporting a report","Assembling a calculation package a reviewer can follow — inputs, model, results and checks, in the order a calc package should be.",{"path":1810,"title":1811,"description":1812,"translated":1608},"\u002Fkb\u002Freports\u002Fifc","IFC structural models","The IFC structural analysis view in and out — what IFC2X3, IFC4 and IFC4X3 files bring, what an export carries, and what IFC cannot say.",{"path":1814,"title":1815,"description":1816,"translated":1608},"\u002Fkb\u002Freports\u002Fexchange","Import & export formats","IFC structural models and SAF workbooks in and out, DXF as a reference drawing, result tables as CSV or xlsx, and an OOFEM input deck.",{"path":1818,"title":1819,"description":1820,"translated":1608},"\u002Fkb\u002Freports\u002Freading-diagrams","Reading diagrams","Bending, shear and axial diagrams, contour plots and deformed shapes — the conventions behind what you are looking at.",{"path":1822,"title":1823,"description":1824,"translated":1608},"\u002Fkb\u002Freports\u002Fresult-tables","Result tables","Filtering, sorting and extracting numbers — getting the value you need out of a solved model without scrolling.",{"path":1826,"title":1827,"description":1828,"translated":1608},"\u002Fkb\u002Freports\u002Freviewing","Reviewing a calculation","For the checking engineer — how to interrogate a model you did not build, what the report guarantees, and the questions to ask first.",{"path":1830,"slug":1831,"title":1832,"description":1833,"icon":1834,"articles":1835},"\u002Fkb\u002Fcollaboration","collaboration","Collaboration & sync","Shared models, real-time editing, and offline edits that merge cleanly when you reconnect.","lucide:users-round",[1836,1840,1844,1848,1852],{"path":1837,"title":1838,"description":1839,"translated":1608},"\u002Fkb\u002Fcollaboration\u002Fcomments","Comments","Threads pinned to nodes, members, plates or points, @mentions, blocking comments that hold up a report, and the notifications they send.",{"path":1841,"title":1842,"description":1843,"translated":1608},"\u002Fkb\u002Fcollaboration\u002Fsharing-projects","Sharing a project","Inviting people to a model, what each role can do, and how to coordinate two engineers in the same structure.",{"path":1845,"title":1846,"description":1847,"translated":1608},"\u002Fkb\u002Fcollaboration\u002Fversion-history","Version history","Automatic checkpoints and named versions — how long they are kept, previewing an earlier state, and restoring it in place or as a new project.",{"path":1849,"title":1850,"description":1851,"translated":1608},"\u002Fkb\u002Fcollaboration\u002Fdevices","Working across devices","One account on every device — how a project follows you from desk to laptop, tablet or phone, and what changes on a small screen.",{"path":1853,"title":1854,"description":1855,"translated":1608},"\u002Fkb\u002Fcollaboration\u002Fworking-offline","Working offline","What keeps working with no connection, what does not, and how offline edits merge when you come back.",{"path":1857,"slug":1858,"title":1859,"description":1860,"icon":1861,"articles":1862},"\u002Fkb\u002Ftheory","theory","Theory notes","The mechanics inside the solver — element formulations, sign conventions, numerical assumptions and their limits.","lucide:sigma",[1863,1865,1869,1873,1875],{"path":1577,"title":1578,"description":1864,"translated":1608},"Degrees of freedom, interpolation and limits for every element type in the solver — what each one can represent and what it cannot.",{"path":1866,"title":1867,"description":1868,"translated":1608},"\u002Fkb\u002Ftheory\u002Fglossary","Glossary","Finite element and structural terms as Elementarium uses them, from degrees of freedom to MITC4 and utilisation, each linked to its page.",{"path":1870,"title":1871,"description":1872,"translated":1608},"\u002Fkb\u002Ftheory\u002Fsign-conventions","Sign conventions","Axes, positive directions and how to read a diagram without guessing — the page that prevents most result confusion.",{"path":1556,"title":1557,"description":1874,"translated":1608},"How a finite element solver turns a model into K u = f and back — stiffness, transformation, assembly, constraints, solution and recovery.",{"path":1876,"title":1877,"description":1878,"translated":1608},"\u002Fkb\u002Ftheory\u002Fwinkler-foundations","Winkler foundations","The bedding model behind elastic foundations — what it assumes, how to choose a modulus, and precisely where the idealisation stops being true.",{"path":1880,"slug":1881,"title":1882,"description":1883,"icon":1884,"articles":1885},"\u002Fkb\u002Ftroubleshooting","troubleshooting","Troubleshooting","Solver errors, unstable models and results that look wrong — with the usual causes listed first.","lucide:life-buoy",[1886,1888],{"path":1432,"title":1433,"description":1887,"translated":1608},"What each class of solver message means, what usually causes it, and what to do next.",{"path":979,"title":1889,"description":1890,"translated":1608},"Why the solver reports a singular stiffness matrix","The most common solver failure — what singularity means mechanically, the six causes in order of frequency, and how to find yours in minutes.",{"path":1892,"slug":1893,"title":1894,"description":1895,"icon":1896,"articles":1897},"\u002Fkb\u002Faccount","account","Account & billing","Plans, limits, invoices, and what happens to your projects when a subscription ends.","lucide:credit-card",[1898,1902,1906,1910],{"path":1899,"title":1900,"description":1901,"translated":1608},"\u002Fkb\u002Faccount\u002Finvoices","Invoices & VAT","Billing details, receipts, VAT handling and how to get an invoice your accounts department will accept.",{"path":1903,"title":1904,"description":1905,"translated":1608},"\u002Fkb\u002Faccount\u002Fcancelling","Pausing or cancelling","How to stop paying without losing your work — what happens to projects, reports and history when a subscription ends.",{"path":1907,"title":1908,"description":1909,"translated":1608},"\u002Fkb\u002Faccount\u002Fplans","Plans & limits","What the free plan includes, what Pro adds, and how the caps are actually measured.",{"path":1911,"title":1912,"description":1913,"translated":1608},"\u002Fkb\u002Faccount\u002Fstudent","Student accounts","A larger free tier for students and researchers — verify an academic email address, what it unlocks, and why it is re-confirmed every year.",[1915,1919,1922],{"path":1916,"title":1917,"description":1918,"translated":1608},"\u002Fkb\u002Ffaq","Frequently asked questions","The questions engineers ask before they trust a new finite element package — answered directly.",{"path":1582,"title":1920,"description":1921,"translated":1608},"Release notes","What shipped in the tab, and what it changes in your models.",{"path":1923,"title":1924,"description":1925,"translated":1608},"\u002Fkb\u002Fall","All articles","Every article in the Elementarium knowledge base, grouped by section.",[1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996],{"path":1619,"title":1621,"description":1622,"translated":1608},{"path":1626,"title":1627,"description":1628,"translated":1608},{"path":1630,"title":1631,"description":1632,"translated":1608},{"path":1634,"title":1635,"description":1636,"translated":1608},{"path":1155,"title":1156,"description":1638,"translated":1608},{"path":1640,"title":1641,"description":1642,"translated":1608},{"path":1644,"title":1645,"description":1646,"translated":1608},{"path":1648,"title":1649,"description":1650,"translated":1608},{"path":1652,"title":1654,"description":1655,"translated":1608},{"path":1659,"title":1660,"description":1661,"translated":1608},{"path":1663,"title":1664,"description":1665,"translated":1608},{"path":1667,"title":1668,"description":1669,"translated":1608},{"path":1671,"title":1672,"description":1673,"translated":1608},{"path":1675,"title":1676,"description":1677,"translated":1608},{"path":1679,"title":1680,"description":1681,"translated":1608},{"path":1683,"title":1684,"description":1685,"translated":1608},{"path":1687,"title":1688,"description":1689,"translated":1608},{"path":1691,"title":1692,"description":1693,"translated":1608},{"path":1695,"title":1697,"description":1698,"translated":1608},{"path":1702,"title":1703,"description":1704,"translated":1608},{"path":1706,"title":1707,"description":1708,"translated":1608},{"path":1710,"title":1711,"description":1712,"translated":1608},{"path":1714,"title":1716,"description":1717,"translated":1608},{"path":1721,"title":1722,"description":1723,"translated":1608},{"path":1725,"title":1726,"description":1727,"translated":1608},{"path":1729,"title":1730,"description":1731,"translated":1608},{"path":1733,"title":1734,"description":1735,"translated":1608},{"path":1737,"title":1738,"description":1739,"translated":1608},{"path":1741,"title":1742,"description":1743,"translated":1608},{"path":1745,"title":1746,"description":1747,"translated":1608},{"path":1749,"title":1751,"description":1752,"translated":1608},{"path":1611,"title":6,"description":1604,"translated":1608},{"path":1546,"title":1547,"description":1757,"translated":1608},{"path":1759,"title":1760,"description":1761,"translated":1608},{"path":501,"title":502,"description":1763,"translated":1608},{"path":300,"title":1765,"description":1766,"translated":1608},{"path":1768,"title":1769,"description":1770,"translated":1608},{"path":1772,"title":1774,"description":1775,"translated":1608},{"path":1779,"title":1780,"description":1781,"translated":1608},{"path":1783,"title":1784,"description":1785,"translated":1608},{"path":1787,"title":1788,"description":1789,"translated":1608},{"path":1791,"title":1792,"description":1793,"translated":1608},{"path":1795,"title":1796,"description":1797,"translated":1608},{"path":1799,"title":1801,"description":1802,"translated":1608},{"path":1806,"title":1807,"description":1808,"translated":1608},{"path":1810,"title":1811,"description":1812,"translated":1608},{"path":1814,"title":1815,"description":1816,"translated":1608},{"path":1818,"title":1819,"description":1820,"translated":1608},{"path":1822,"title":1823,"description":1824,"translated":1608},{"path":1826,"title":1827,"description":1828,"translated":1608},{"path":1830,"title":1832,"description":1833,"translated":1608},{"path":1837,"title":1838,"description":1839,"translated":1608},{"path":1841,"title":1842,"description":1843,"translated":1608},{"path":1845,"title":1846,"description":1847,"translated":1608},{"path":1849,"title":1850,"description":1851,"translated":1608},{"path":1853,"title":1854,"description":1855,"translated":1608},{"path":1857,"title":1859,"description":1860,"translated":1608},{"path":1577,"title":1578,"description":1864,"translated":1608},{"path":1866,"title":1867,"description":1868,"translated":1608},{"path":1870,"title":1871,"description":1872,"translated":1608},{"path":1556,"title":1557,"description":1874,"translated":1608},{"path":1876,"title":1877,"description":1878,"translated":1608},{"path":1880,"title":1882,"description":1883,"translated":1608},{"path":1432,"title":1433,"description":1887,"translated":1608},{"path":979,"title":1889,"description":1890,"translated":1608},{"path":1892,"title":1894,"description":1895,"translated":1608},{"path":1899,"title":1900,"description":1901,"translated":1608},{"path":1903,"title":1904,"description":1905,"translated":1608},{"path":1907,"title":1908,"description":1909,"translated":1608},{"path":1911,"title":1912,"description":1913,"translated":1608},1792160747052]