基于CAD-Abaqus的混凝土三維細觀模型建立(一)

摘要

混凝土作為一種三相復合材料,從細觀層面來說是由粗骨料、砂漿和過渡區(界面層)組成。這三種材料具有不同的力學特性,在混凝土的性能中起著重要作用。過去,主要基于宏觀層次的混凝土力學研究已經不能很好地解釋混凝土材料的損傷和破壞機理。由于骨料形態的復雜性和空間分布的隨機性,建立一個能反映混凝土實際骨料級配、含量及其形態的隨機骨料模型并進行有限元分析,是深入解釋混凝土損傷機理的關鍵,也為研究混凝土性能提升提供了高效的方向指導。本文通過使用CAD插件實現Abaqus的模型構建,建立包含球形、凸型多面體(碎石)骨料,并考慮了界面層的三維混凝土細觀隨機模型,并對骨料的空間分布進行探討。

1 引言

本文運用CAD插件進行模型建立,并將模型導入Abaqus內,實現了隨機骨料模型建模,極大地簡化了混凝土細觀力學研究的工作量。結合了參數化建模的思想,提出球形骨料生成算法,在此基礎上進一步提出多面隨機剖切算法,生成了隨機凸型多面體骨料模型。同時,采用干涉判別算法,分別對球形骨料和多面體骨料進行了投放試驗,形成包含骨料、砂漿、過渡區在內的三相混凝土模型。多面體骨料投放算法采用嚴格的空間三角網格碰撞數學運算,且提高了骨料體積含量。通過重力堆積算法,模擬混凝土中骨料的排列和分布情況。CAD插件內置的建模算法可以做到骨料、界面層、骨料分布的多參數控制,對于高效構建符合真實情況的混凝土細觀模型具有重要意義。

2 三維球形骨料模型的生成

參數化建模允許研究者通過調整一系列參數來控制模型的特性,例如骨料的大小、級配、分布等。這種可控性使得研究者能夠靈活地模擬不同情況下的混凝土結構,更好地理解材料的行為。三維球體骨料模型的構建采用CAD隨機球體顆粒&過渡區插件。

基于CAD-Abaqus的混凝土三維細觀模型建立(一)的圖1

2.1 骨料及分布參數

在混凝土試件中,骨料的各種參數通常是隨機的。使用C#語言,可以調用多種生成隨機數的函數來模擬這些參數。以下是一個示例,演示如何使用C#語言隨機生成球體的半徑和空間坐標:

using System;

 

class Program

{

    static void Main()

    {

        // 創建隨機數生成器

        Random random = new Random();

 

        // 生成隨機半徑,假設半徑范圍在1到10之間

        double radius = random.NextDouble() * (10 - 1) + 1;

 

        // 生成隨機空間坐標,假設坐標范圍在三維空間中

        double xCoordinate = random.NextDouble() * 100;

        double yCoordinate = random.NextDouble() * 100;

        double zCoordinate = random.NextDouble() * 100;

 

        // 打印生成的結果

        Console.WriteLine("外接球的半徑: " + radius);

        Console.WriteLine("空間坐標 (x, y, z): (" + xCoordinate + ", " + yCoordinate + ", " + zCoordinate + ")");

    }

}

這里使用了Random類來生成隨機數。通過NextDouble方法可以獲得0到1之間的隨機浮點數。這樣的隨機生成可以模擬混凝土試件中骨料的隨機性,使得模擬更加真實和多樣化。

2.2 骨料的投放參數

骨料生成后進行隨機投放程序,投放中需要對骨料間的相交性進行判別,同時需要考慮骨料與骨料間間距過小將導致小邊的出現的問題。小邊通常指的是與整個幾何體相比較小的邊緣或特征,它們可能導致在有限元分析中網格變得不規則或包含過多的小單元,從而增加計算復雜度并可能引發數值不穩定性。因此在骨料相交判別程序中插件引入球體最小間距參數。下面是采用C#對球體間的相交性進行判別的程序演示。

using System;

 

class Program

{

    static void Main()

    {

        // 定義第一個球體的參數

        double x1 = 0;  // 第一個球體的中心 x 坐標

        double y1 = 0;  // 第一個球體的中心 y 坐標

        double z1 = 0;  // 第一個球體的中心 z 坐標

        double radius1 = 5;  // 第一個球體的半徑

 

        // 定義第二個球體的參數

        double x2 = 10;  // 第二個球體的中心 x 坐標

        double y2 = 0;   // 第二個球體的中心 y 坐標

        double z2 = 0;   // 第二個球體的中心 z 坐標

        double radius2 = 7;  // 第二個球體的半徑

 

        // 定義兩球體之間的最小距離閾值

        double minDistance = 3; // 假設兩球體之間的最小距離為3

 

        // 計算兩個球體中心之間的距離

        double distance = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2) + Math.Pow(z2 - z1, 2));

 

        // 判斷兩個球體是否隔開一定距離

        if (distance >= radius1 + radius2 + minDistance)

        {

            Console.WriteLine("True");

        }

        else

        {

            Console.WriteLine("False");

        }

    }

}

同時使用C#中的for循環函數對n個骨料進行相交性判別

// 利用for循環遍歷每對骨料,并進行相交性判別

        for (int i = 0; i < n; i++)

        {

            for (int j = i + 1; j < n; j++)

            {

                // 計算兩個骨料中心之間的距離

                double distance = Math.Sqrt(Math.Pow(spheres[j, 0] - spheres[i, 0], 2) +

                                            Math.Pow(spheres[j, 1] - spheres[i, 1], 2) +

                                            Math.Pow(spheres[j, 2] - spheres[i, 2], 2));

 

                // 判斷兩個骨料是否相交

                if (distance < spheres[i, 3] + spheres[j, 3] + minDistance)

                {

                    Console.WriteLine($"骨料{i + 1}和骨料{j + 1}相交.");

                }

                else

                {

                    Console.WriteLine($"骨料{i + 1}和骨料{j + 1}不相交.");

                }

            }

}

2.3 界面過渡區建模

界面過渡區ITZ(Interfacial Transition Zone)的模型構建,可采用布爾運算的方式實現。在骨料基礎上偏移一定距離,偏移距離為界面層的厚度,建立新的球體部件,再與之前的球形骨料做切割,即可生成其界面層。對于投放成功的骨料及過渡區,插件中采用數組記錄所有參數。最終的Abaqus三維球體骨料及過渡區模型完成如下。

基于CAD-Abaqus的混凝土三維細觀模型建立(一)的圖2
基于CAD-Abaqus的混凝土三維細觀模型建立(一)的圖3

(未完待續...)

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1
2