Archive for 7 月, 2007

暑期班的“项目组”

暑期班从第一原理(Ab Initio),经过分子动力学(MD)、蒙特卡罗方法(Monto Carlo)、相变模拟(Phase Field)到连续介质力学。项目亦有5个,想来想去,最后还是做了一个熟悉的方法。所有的项目都是基于安装SuSE 10的IBM T30,最后做PPT时才转到一台Windows的IBM X60S,毕竟还是不熟悉Linux,没有办法修改一个结果的动画。

参与小组名为“有限元2组”,项目组成员:
西班牙人S,在奥地利维也纳;荷兰人R,在荷兰Delft;埃及人N,在德国马普所;中国人G,在德国一研究中心。

项目题目,对于涂层材料压痕实验的有限元分析。

项目报告人,G。

做项目时,使用了一种不是很熟悉的软件,名为Zebula。做的时候发现一些问题,争论非常激烈。

关于项目报告,最后一个晚上一直争论到半夜1点,终于还是定了下来。大家不想做报告的原因各异:做太多报告、不熟悉题目、紧张等等。反正几乎到了要抽签决定的地步,最后我想,反正我1/4的几率是自己,反正其实也是一个不错的机会。第一次接手一个报告,在10演讲前10小时,并且讲稿不是自己做的。

结果第二天做报告时,上了台,发现手头的X60无法使用投影仪...转到Linux倒是有OpenOffice,可惜做的一个wmv格式的动画估计是没戏了。幸好技术员M,寻找到一台Windows的T30,虽然其中的几个公式显示有问题,可是我也不想多讲,正好跳过。最后发现,昨天晚上,4个人花了很多时间完成的动画,还是很受欢迎的。一些不了解有限元方法的,看到动画倒是挺直观。

Powered by ScribeFire.

Comments (6)

伊拉克赢得亚洲杯

刚在BBC新闻上看到的。亚洲杯决赛伊拉克国家队1:0击败对手沙特。

一个饱经战火的国家,难得在足球上寻找到一点民族的尊严。在赢得半决赛之后,伊拉克国内依然有一次自杀式袭击,30多人伤亡。

前不久看到CNN一段对于伊拉克儿童的报道,儿童们只能在破损的建筑物附近消磨童年,没有学校教育,没有安全。眼见的只是一片废墟、杀戮和持枪荷弹的美国大兵。不知道美国给这个国家带来的创伤,需要多久才能够愈合。想想这个区域也曾经是四大文明古国之一,实在有些扼腕。也许美国说,这个是民主的代价,可是这真是伊拉克人民想要的结果吗?看看现在的伊拉克,其实与抗战时期的日占区有些类似:同样有侵略者(美国)、伪军(警察武装)、汪精卫政府(伊拉克政府)、大东亚共融圈的“理想”(民主)。

但愿足球的快乐,可以给苦难带来一丝的安慰。

Powered by ScribeFire.

发表评论

从森林里归来

为期一周的暑期班,举行的地点在Aachen附近的山区,没有任何公共交通。据说是主办者刻意的安排,让人无法“逃离”,可以静心学上一周。

见到不少牛,草地上的奶牛,以及学术上的几头大牛......

发表评论

亚洲联队大战欧洲全明星队

今天下午的天气一改中午的骤雨,异常晴朗。温度27度左右,足球比赛的最佳温度。到场地的有10个人,竟然有4个中国人,发队服的时候,一个中国球友有意要把4个国人分到两组,由于上周吃了大亏。不过后来竟然说要分成欧洲队和亚洲队,因为还有一个印度人,这样一来倒略有些实力不均。不过无所谓啦,友谊比赛嘛,赢了是实力,输了就是友谊第一。

亚洲联队身穿黄绿色训练服,而欧洲全明星就显得有些凌乱了。上半场一开场,亚洲联队就以速度、灵活和团队精神,先下一城。考虑到对方守门员接近2米的身高和职业作风,这个进球还是非常精彩的(虽然,入球队员事后说是踢赼了,不过由此可见配合之精妙)。欧洲全明星这下傻眼了,利用波兰边锋的速度和控球还以颜色。大家你来我往,上半场4:5,欧洲队略为领先。不过中场休息的要求竟然是一个德国人提出的,我们只答应休息5分钟,否则如何显示我队的体能优势哪。

下半场对方果然占到了休息的好处,连连猛攻,可惜收效甚微。加上我方的边路反击,倘使不是那个半职业的门将,敌人实在难以获得任何好处。全场的转机就在于,印度同志开始守门,对于几个单刀球竟然不出击。最后双方都是进球连连,都计算不了进球数,只能记住差额。其中,本人攻进一粒“公认”本场最佳入球,首先是远射,使得门将扑球脱手,紧接着一个头球,越过门将直挂死角。只可惜,最后我方差3球惜败。

[赛后总结]
实际上那个印度阿三实在是拖了后腿,不过可能由于语言不利于交流。倒是个对方的德国人学中文挺起劲,连叫刚学的“不急不急”,想让我方放慢进攻速度。如果加上今天缺席的号称“糙快猛”中场老王,搞定欧洲全明星还是绰绰有余的。不过场面上,一点没有劣势。球员技术、力量上虽仍与欧洲全明星有一定的差距,最重要的是气势上压倒了对手。

强烈建议朱光沪同志带领国足过来,好好地、谦虚地、认真地参观学习一下!

Powered by ScribeFire.

Comments (3)

色彩空间:HSL和RGB的相互转换

做一个计算程序的可视化程序要用到的,需要用色彩表示数值的大小。

试过了很多RGB的组合,还是没有满意的效果,其实用Hue就可以了。不过最后给后处理程序的还是RBG的参数,就需要HSL和RGB之间的相互转换关系了。RGB如左图所示,XYZ为红绿蓝三色空间;右图则是HSL空间,HSL表示色调H、饱和度S和亮度L。

400px-RGBCube_b.svg   300px-Color_cones

一般在有限元中,采用的表示应力、应变的方法就是采用在一定S/L参数下的Hue,根据数值的大小,在空间中一般只占有从0~240度,即从红到蓝的范围。如下图所示:

250px-HueScale.svg
Max ---------------- Min

它们之间的转换公式可以参照 Wiki 上的介绍。“染色”工作已经完成......

PS: RGB=(red, green, blue); HSL=(hue, saturation, lightness)

附录子程序,从HSL到RGB转换。输入HSL参数得到的C[i]就是需要的RGB参数。
其中H~[0,240];S和L~[0,1]。

/*HSL to RGB space transformation. */
double C[3];
void HSL2RGB(double H, double S, double L)
{
    double Q;
    double P;
    double T[3];
    H=H*1.0*1/360;
    T[0]=H+1.0*1/3;
    T[1]=H;
    T[2]=H-1.0*1/3;

    int j;
    for(j=0;j<3;j++)
    {
        if(T[j]<0) T[j]=T[j]+1.0;
        if(T[j]>1) T[j]=T[j]-1.0;
    }
   
    if(L<0.5) Q=L*(1.0+S);
    if(L>=0.5) Q=L+S-(L*S);
    P=2.0*L-Q;
   
    int k;
    for(k=0;k<3;k++)
    {
        if(T[k]<1.0*1/6) C[k]=P+((Q-P)*6.0*T[k]);
        if(T[k]<0.5 && T[k]>=1.0*1/6) C[k]=Q;
        if(T[k]>=0.5 && T[k]<1.0*2/3)  C[k]=P+((Q-P)*(1.0*2/3-T[k])*6.0);
        if(T[k]>=1.0*2/3)  C[k]=P;
    }
}

Comments (2)