我正在用 C# 构建一个有限元分析库。在我要分析的每个结构中,都需要在元素级别执行多次计算,并将结果汇总到结构级别。当有许多元素时,所有这些计算都需要相当长的时间。
例如,计算单元刚度矩阵并将其组装到全局刚度矩阵中。
有没有办法让进程利用线程?
public class FEStructure
{
public List<Element> elements = new List<Element>;
public Matrix K;
Struct()
{
// Do some stuff not relevant here
}
public void CalcK()
{
// Create a Global stiffness matrix (n x n)
K = new DenseMatrix(SizeK());
// Process all elements - can it be threaded?
foreach (Element e in elements)
{
// Get the element stiffness matrix and assemble it into K
Matrix Ke = e.CalcKe();
Assemble(Ke);
}
}
public void Assemble(Matrix Ke)
{
// Assembles Ke into K using the element topology
// and lot of fields and methods left out. Code
// operates on K using syntax similar to:
K[i, j] = Ke[k, l];
}
}
编辑:
元素矩阵的e.CalcKe()
计算是一个独立的计算,可以按任意顺序进行。