PLuTo 编译器示例9-12
9)dsyr2k
#pragma scopfor (i=0; i<NMAX; i++) {for (j=0; j<NMAX; j++) {for (k=j; k<NMAX; k++) {c[j][k] += a[i][j] * b[i][k] + b[i][j] * a[i][k];}}}
#pragma endscop
感觉就是矩阵矩阵乘吧
10)dsyrk
#pragma scopfor (i=0; i<NMAX; i++) {for (j=0; j<NMAX; j++) {for (k=j; k<NMAX; k++) {c[j][k] += a[i][j] * a[i][k];}}}
#pragma endscop
矩阵自己乘?
11)fdtd-1d
这玩意至少得解释一下这个示例是干嘛用的吧?
#pragma scopfor (t=1; t<=T; t++){for (i=1; i<=N-1; i++)e[i] = e[i] - coeff1*(h[i]-h[i-1]);for (i=0; i<=N-1; i++)h[i] = h[i] - coeff2*(e[i+1]-e[i]);}
#pragma endscop
时域有限差分(FDTD)方法是一种3D全波电磁求解器,通常用于纳米光子器件、流程和材料的建模。 在光子学领域,FDTD已成为行业标准,而在高频电子领域,有限元法(FEM)和矩量法(MoM)则是主导性的黄金标准计算电磁求解器,它们各有其自身优势。本文重点介绍光子学仿真中的FDTD。 FDTD于1966年由Kane S. Yee首次提出,是一种求解James Clerk Maxwell变换方程(正式名称为Maxwell方程)的算法方法。这些方程于19世纪被构想出来,不仅统一了电学和磁学,而且还为无线电、电视和无线通信等技术奠定了基础。直到20世纪80年代,Yee的数值方法才被广泛称为“FDTD”。
12)fdtd-2d
#pragma scopfor(t=0; t<tmax; t++) {for (j=0; j<ny; j++)ey[0][j] = t;for (i=1; i<nx; i++)for (j=0; j<ny; j++)ey[i][j] = ey[i][j] - 0.5*(hz[i][j]-hz[i-1][j]);for (i=0; i<nx; i++)for (j=1; j<ny; j++)ex[i][j] = ex[i][j] - 0.5*(hz[i][j]-hz[i][j-1]);for (i=0; i<nx; i++)for (j=0; j<ny; j++)hz[i][j]=hz[i][j]-0.7*(ex[i][j+1]-ex[i][j]+ey[i+1][j]-ey[i][j]);}
#pragma endscop
Pluto是Julia编程语言的一个新的计算笔记本。计算笔记本是一种在web浏览器中编程的方法,可以在一个地方存储代码、注释和输出,包括图形。随着Jupyter notebook的出现,它们变得流行起来,Jupyter最初针对Julia、Python和R——这些名字混合在一起形成了“Jupyter”这个词。
Pluto在很多方面与我之前写过的Jupyter相似。它使用基于输入和输出单元的相同基本交互模式;这两种笔记本格式都非常适合探索、共享计算和教育。在之前的一篇文章中,我回顾了Julia自两年前1.0版本发布以来的进展。它还详细介绍了Julia在科学计算领域的特殊吸引力。不熟悉Julia的读者可能想回顾一下之前的一些文章;在这里,我完全专注于冥王星。
和朱莉娅一样,布鲁托也有麻省理工学院的执照。它由Fons van der Plas和Mikołaj Bochenski创建,自2020年3月以来一直在GitHub上开发。尽管它最近才上市,但它已经足够成熟,可以认真使用;事实上,它正在麻省理工学院的一门开放课程中使用。但用户应该记住,截至本文撰写时,版本号仅为0.12.4;程序的行为当然不是一成不变的。Pluto会在启动时通知用户存储库中是否有更新的版本。
想要立即试用Pluto并且没有安装Julia的读者可以使用Binder服务运行一个只有网络浏览器的笔记本电脑。当用户访问此页面时,它会在服务器上启动一个Julia实例,并打开一个可供实验的笔记本界面。无论是通过Binder打开还是在本地运行,笔记本都为用户提供了一个初始页面,可以选择打开示例、现有或新笔记本。这一系列示例笔记本为冥王星的使用提供了极好的实践介绍。