如何解决waves2foam中setWaveField覆盖setFields设置的初始区域
-
大家好,目前我在做一个关于波浪与海堤相互作用的模拟,本意就是只想初始时刻只在海堤前方生成波浪水域,但是我发现在waves2foam工具箱中的setWaveField设置初始场时会根据waveProperties设置的水深进行全局水域的设置,无法指定某一区域,因此我使用了setFieldsDict计划单独设定
defaultFieldValues ( volScalarFieldValue alpha.water 0 ); regions ( // Set cell values // (does zerogradient on boundaries) boxToCell { box (0 -1 0) (8.9 1 0.256); fieldValues ( volScalarFieldValue alpha.water 1 ); } );
但是之后再运行setWaveField就会覆盖setFields的设置,导致还是全局的水深。我也试过先setWaveField再setFields,这样海堤后也还是会有水域。有没有大佬清楚该如何解决这个问题呀。谢谢
-
目前基于chatGpt等Ai,把setWaveFiled重新编译了一个自己的setWaveFiled1,把海堤后的alpha、U、pd的初始值都人为的归零了,目前看起来是跑成功了,不足的是每换一种Case就要重新编译一个新的setWaveFiled2、3、4……
// 设置海堤后方的阈值,例如 xBreak = 10m scalar xBreak = 5.8; forAll(alpha, cellI) { const scalar x = mesh.C()[cellI].x(); // 获取当前网格单元的 x 坐标 if (x > xBreak) // 如果网格位于海堤后方 { alpha[cellI] = 0.0; // 让海堤后方 alpha.water = 0 U[cellI] = vector::zero; // 让海堤后方速度 U = 0 pd[cellI] = 0.0; // 让海堤后方压力 p_rgh = 0 } }code_text