黎曼面绘制
在研究非厄米问题的时候总是会遇到复平面的问题,此时就需要用到黎曼面的知识,这篇博客整理了如何利用Mathematica绘制黎曼面.{:.info} 外部程序绘制 函数多值法绘制黎曼面其实也就是多值函数的问题,所以可以将多个函数分支绘制到图一张图即可. Python绘制1234567891011121314151617181920212223242526272829303132import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm from mpl_toolkits.mplot3d import Axes3D # compute data to plot r, theta = np.mgrid[1:16, -2*np.pi:2*np.pi:50j] z = r * np.exp(1j*theta) w = np.sqrt(r) * np.exp(1j*theta/2) # plot data fig = plt.figure() for plot_index in [1, 2]: if plot_index == 1: z_data, c_data = w.real, w.imag z_comp, c_comp = 'Re', 'Im' else: z_data, c_data = w.imag, w.real z_comp, c_comp = 'Im', 'Re' c_data = (c_data - c_data.min()) / c_data.ptp() colors = cm.viridis(c_data) ax = fig.add_subplot(f'12{plot_index}', projection='3d') surf = ax.plot_surface(z.real, z.imag, z_data, facecolors=colors, ...
Mathamatica 绘图案例收集
这里正义一下平时自己在学习研究中使用到或者学习到的一些绘图案例.{:.info} 3D矢量场 六角点阵 高维球面图 图像并排 变色环 样式设置 公众号相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。{:.info} Email yxliphy@gmail.com
Berry位相与Chern数之间的联系
这里梳理一下Berry位相与Chern数之间到底是怎么联系到一起的.{:.info}这里个PPT知我自己之间组会上讲的一个内容,最近整理文件夹的时候发了出来,自己又看了看,熟悉了一下Berry位相和Chern数之间的联系. 完整的PPT可以点击这里下载 公众号相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。{:.info} Email yxliphy@gmail.com
Mathamatica 绘制旋转的散点密度图
这里整理一下如何利用散点数据绘制密度分布图,由于直接利用Mathematica的ListDensityPlot绘制得到的图实在不忍直视,所以改进了一下利用Graphics来对数据做一个漂亮的展示,并加上colorbar.{:.info} 散点密度图当利用程序求解得到密度图数据后,利用Mathamatica直接绘制得到的效果并不好,这里先争议如何通过Graphics来绘制密度图,可以得到很好的显示效果 函数封装 这里在绘制的时候,设置了一下旋转,将整个图形转动了45度,这个转动角度时可以调节的,可以通过RotationMatrix中的转动角度来进行调整,但是在调整了旋转角度之后会使得colorbar和图形重叠到一起,这个时候需要重新设置Inset中的第二个参数,来调整插入的corlorbar的位置,同时也可以调整第四个参数来设置colorbar的尺寸大小.至于配色也可以自行设置,具体颜色可以查阅帮助文档.{:.warning} 代码下载上面所有的程序以及用到的数据可以点击这里下载. 公众号相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。{:.info} Email yxliphy@gmail.com
整理便捷的shell脚本及命令
平时在服务器上会用到很多shell命令来进行文件处理等操作,这篇博客主要就是整理我平时学到和用到的方便的shell脚本以及一些方便快捷的命令,方便自己使用的时候进程查阅.{:.info} 批量kill进程12345678#! /bin/bashcom1=$(ps -u yxli|grep out|awk '{print $1}')#com1=$(ps -u yxli)for i in $com1do #echo $i kill -9 $idone 从自己(yxli)的进程中(ps -u yxli)寻找out结尾的进程(grep out)并提取第一列的进程号(awk '{print $1}'),通过一个for循环遍历所有的进程号,然后强制杀死进程(kill -9 $i) 这个命令只使用与自己组里的小服务器上使用,如果是服务器集群,或者超算上面,还是乖乖用作业提交脚本和队列系统管理来取消自己提交的错误作业.{:.success} 批量创建文件夹1for ((i=0;i<=50;i=i+5))do mkdir dir_name$i;done 批量复制文件1for ((i=5;i<=50;i=i+5))do cp bulkimp0.f90 bulkimp$i.f90;done 批量修改文件内容1for ((i=0;i<=50;i=i+5))do sed -i "47s/0/$i/g" bulkimp$i.f90;done 这个命令会通过循环,将每个文件中第47行(47s)的0替换为循环中的i. 查看用户所有进程1ps -u yxli 这里查询的是用户yxli当前所有进程 1ps|awk '{print $1}' 通过通道命令只截取进程ID这一列的内容 同样可以查询某个用户特定名称的进程,即前面所示的CMD这一列中满足特定名称的进程1ps -u yxli|grep out|awk '{print $1}'这一行可以提取用户yxli进程名中包含out的所有进程的ID号,如果进程有问题,可以通过前面的批量操作来将所有的进程一次性kill. vasp删除多余文件1rm CHG...
监测程序运行的Shell脚本
这篇博客整理一个在Linux服务器上通过进程名来监测程序是否执行的脚本,然后根据程序是否执行来进行其他的一些操作,这对在服务器上跑程序,然后自动化执行某些操作还是非常方便的.{:.info}在前面Fortran + Gnu 批量计算这篇博客中,虽然可以批量的进行fortran程序的编译和执行,在程序执行完成之后再批量的进行gnuplot绘图,这里的缺陷就是必须人为的取查看前面编译的fortran程序是否已经执行完毕,谁也不会准确的指导自己的程序何时会在服务器上执行完毕,那么就可以通过一个脚本让服务器自行监测程序的运行,当fortran程序执行完毕之后,接下来就可以让服务器再自行启动gnuplot的绘图程序. 程序监测这篇博客的脚本其实也就是对Fortran + Gnu 批量计算这篇博客的一个缺陷补充,但是监测程序修改一下同样可以监测别的东西,所以就单独整理了出来. 初级版 123456789101112131415161718#!/bin/bashwhile :do sleep 10m # 每10分钟进行一次监测 COUNT=$(ps -ef |grep "out" |grep -v "grep" |wc -l) # 从进程中查看out结尾的程序数目 echo $COUNT>>mes.dat # 打印进程中out结尾的数量 if [ $COUNT -eq 0 ];then echo Not running >> mes.dat # 如果out结尾进程数量不为零,则执行这一项 sh auto-plot-fold.sh & exit 0 else echo Is Run >> mes.dat # 如果out结尾进程数量为零,则执行这一项 #ps -ef|grep "monitor.sh">>mes.dat echo "ID:">>mes.dat ps -ef | grep "out" | grep -v grep | awk '{print "ID:" $2 " Time:"...