封闭空间的使用

封闭空间的主要思想在于:
JS中给一个变量外面加小括号,是不改变任何结果的。比如:

var show = function(){ //定义一个名字为show的函数
alert(12);
};
show(); //调用名字为show的函数
 上面的show()也可以写成(show)(),然后因为show本身又代表function(){alert(12);};,所以左边括号里的show完全可以用函数本身代替而写成 

( function( ){alert(12);} )( )。而右边的括号里可以传参数。
这样做的好处有:
1. 可以在定义函数的同时又可以执行它,省去命名的步骤;
2.封闭空间里定义的变量是这个空间里的局部变量。

   看下面这个典型错误的选项卡例子,是运用封闭空间来解决for循环里事件函数里i的问题
for (var i=0; i<aBtn.length; i++) {
    aBtn[i].onclick = function(){
        for (var i=0; i<aBtn.length; i++) {
            aBtn[i].className = '';
            aDiv[i].style.display = 'none';
        }
        this.className = 'active';
//这行的i就是有问题的,因为在没有点击aBtn[i]之前而执行里面代码的时候i早就变成了3,而不是我们要的每次循环得到的那个i
        aDiv[i].style.display = 'block'; 
    };
}

上述代码是错的,可以想到,如果for循环里的代码如果是一个函数执行,那函数执行就能和for循环同步执行,每次循环i,只要把i传进里面函数的参数里,就能保证同时递增(严格来讲也不是同步,这个以后再说)。所以完全可以用封闭空间的方式来直接执行函数,并把i当做参数传进封闭空间函数即可。

for (var i=0; i<aBtn.length; i++) {
    (function(index){ //在定义的时候就要求传一个index变量
        aBtn[i].onclick = function(){
            for (var i=0; i<aBtn.length; i++) {
                aBtn[i].className = '';
                aDiv[i].style.display = 'none';
            }
            this.className = 'active';
            //这里的index就相当于每次递增的i
            aDiv[index].style.display = 'block'; 
        };
    })(i); //这里将每次递增的i传给封闭函数里的参数
    }

上面的例子,最外层for循环里的代码是一个封闭空间函数,它在定义的同时就执行了,而且是通过传参的方式将每次递增的i传进了函数,所以可以每次执行i都不同。
封闭空间的注意事项
一般在工作中,用封闭空间可以很好地避免变量重名的问题,比如下面这个例子
//下面是员工A写的代码

var oBtn = document.getElementsByTagName('input')[0];
    oBtn.onclick = function(){
    alert(oBtn.value);
};

//下面是员工B写的代码,

var oBtn = document.getElementsByTagName('input')[1];
        oBtn.onclick = function(){
        alert(oBtn.value);
};

他们2个人是在相同的文件里写的,而他也定义了oBtn,所以把前面的覆盖了

为了避免这样的情况出现,可以用封闭空间的方法,把各自的变量封闭为局部变量
//下面是员工A写的代码

;(function(){
var oBtn = document.getElementsByTagName('input')[0];
        oBtn.onclick = function(){
        alert(oBtn.value);
};
})();

//下面是员工B写的代码

;(function(){
        var oBtn = document.getElementsByTagName('input')[1];
        oBtn.onclick = function(){
        alert(oBtn.value);
};
})();

这时每个函数里的oBtn只在各自的函数里起作用。
另外每个(function()前加一个;的目的是,在实际工作中,不同人写不同的部分,最后会压缩在一个文件中,而这个;是为了防止前面的一个人写的代码忘了用;结束,而导致后面的代码出错,但是即使2个;;连在一起也不会有问题。

### Fluent 封闭空间的边界条件设置方法及参数配置 在 Fluent 中,封闭空间的边界条件设置是仿真准确性的重要环节。对于封闭空间,需要特别注意流体流入、流出以及内部流动特性的影响。以下内容详细描述了封闭空间边界条件的设置方法和相关参数配置。 #### 1. 封闭空间的边界类型选择 封闭空间通常涉及以下几种主要边界类型: - **入口(Inlet)**:定义流体进入封闭空间的方式。可以指定流速、流量或质量流量等参数[^1]。 - **出口(Outlet)**:定义流体离开封闭空间的方式。通常设置为压力出口(Pressure Outlet),并提供出口处的压力值[^1]。 - **壁面(Wall)**:用于模拟封闭空间的固体边界。需要设置无滑移条件、热传递特性等。 - **对称面(Symmetry)**:如果封闭空间具有对称性,可以使用对称面减少计算量。 - **周期性边界(Periodic Boundary)**:适用于具有周期性特征的封闭空间,例如旋转机械中的流场[^1]。 #### 2. 参数配置的具体步骤 ##### 进入边界条件设置面板 在 Fluent 中,通过菜单路径 `Define > Boundary Conditions` 打开边界条件设置面板。 ##### 设置入口条件 - **速度入口(Velocity Inlet)**:指定入口流速的大小和方向。可以设置为均匀分布或非均匀分布。 - **压力入口(Pressure Inlet)**:指定入口压力值。适用于已知入口压力的情况。 - **温度**:根据实际需求设定入口温度。 - **湍流参数**:如果启用湍流模型,需要指定湍流强度和涡粘比等参数[^1]。 ##### 设置出口条件 - **压力出口(Pressure Outlet)**:指定出口压力值。通常设置为大气压或其他已知压力。 - **回流条件**:如果存在回流现象,需要指定回流速度和温度等参数[^1]。 ##### 设置壁面条件 - **无滑移条件**:默认情况下,壁面采用无滑移条件,即流体在壁面上的速度为零。 - **热边界条件**:可以选择绝热(Adiabatic)、恒定温度(Isothermal)或恒定热流(Heat Flux)等方式。 - **粗糙度**:如果壁面粗糙度对流动有显著影响,需要指定相应的粗糙度参数[^1]。 ##### 设置对称面 - 对称面不需要额外的参数设置。只需确保几何模型的对称性正确,并在 Fluent 中将相应边界指定为对称面。 ##### 设置周期性边界 - 周期性边界需要指定两个边界之间的相位差和速度匹配条件。适用于旋转机械或其他周期性流动场景[^1]。 #### 3. 验证边界条件 在仿真运行前,务必检查所有边界条件是否符合实际物理场景。可以通过 Fluent 的预处理工具查看边界条件的设置情况,并进行必要的调整。 ```python # 示例代码:Fluent 脚本设置入口条件 /define/boundary-conditions/velocity-inlet inlet-1 ( (velocity-magnitude 5.0) # 入口流速设为 5 m/s (temperature 300.0) # 入口温度设为 300 K ) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值