星期三, 7月 13, 2011

/etc/sysconfig/iptables 被重設

最近某一台新機器的iptables改完之後常常會跑回原先的設定
仔細看一下/etc/sysconfig/iptables 的檔案,發現前二行是
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
大意是說,這個iptables是由 system-config-sercuritylevel 產生,查了一下
發現這是一個執行檔在/usr/bin下
改為root,執行system-config-sercuritylevel (文字介面即可)
嗯,是一個防火牆的設定介面…裏面的設定值大概固定時間會寫一次到iptables這個檔案,難怪怎麼設定都沒用。
怎麼解決?就把要開的埠在寫在自訂就好了5901,5902,5903 餘類推。

POM bcond

純個人紀錄用…
最近在計算海嘯的例子發現在邊界上有明顯的反射…

這個試了n天,這應該是預設邊界條件的ramp(一個介於1~0間的值)所致…
ramp的目的是要由邊界推動模式時,可以在一個時間內慢慢的起動,免得一下推太用力爆掉,但是這個算例(海嘯)是由計算區域內往外傳,所以ramp反而把該往外傳的值變的比較小…導致出去的不乾淨,造成反射。下面是原始的code,在bcond 的subroutine中(idx=2)。
       vaf(i,jm)=vabn(i)
     $          +rfn*sqrt(grav/h(i,jmm1))
     $          *(el(i,jmm1)-eln(i))
       vaf(i,jm)=ramp*vaf(i,jm)
下述的code應該有一個邏輯上的錯誤,就是不應該全部的值乘上ramp,而是只有邊界往內傳的部份要乘上ramp。照上面的想法,只要不要啟動ramp(即ramp一直為1)就應該不會有反射(或至少要變的比較小),試跑之後,得到下面的結果:
果然邊界的反射沒有了…
按上面的敘述把code改成如下(共四個邊界,這舉一隅,餘類推):
       vaf(i,jm)=ramp*vabn(i)
     $               +rfn*sqrt(grav/h(i,jmm1))
     $               *(el(i,jmm1)-ramp*eln(i))
這一行就不要了,看是刪掉還是註解掉。
c       vaf(i,jm)=ramp*vaf(i,jm)
註:話說回來rfn 放的地方也怪怪的…印像中,他是rfe=0或1,第於1就沒什麼意思,有乘等於沒乘。等於0就讓vaf=0,就等於設了一道牆,既然設為牆了,vabn(i)應該也要乘才是。不過目前為止,我的例子的rfn都是1,就暫且不管了。不過還是把認為對的寫在下面,當成記錄,方便哪天用到時可以查。
       vaf(i,jm)=ramp*vabn(i)
     $              +sqrt(grav/h(i,jmm1))
     $              *(el(i,jmm1)-ramp*eln(i))
       vaf(i,jm)=rfn*vabn(i)