三、FDTD中的源

三、源

  FDTD中源是指定波长或频率范围自动生成的时间脉冲序列。在global properties中可对源进行全局设置

1.源的通用解释,高斯源为例

 参数如下,其中相位表示源注入平面中心电场的相位(若有多个源,想在他们之间添加相位差可以使用此设置);极化角度设置电场极化方向,设置好后可查看粉色箭头和蓝色箭头判断方向。

需要注意的是入射角度是所选面的法线角度,设置传播方向时注意极化角度设置,如沿着y轴传播,可以设置极化角度90°保证电场振动方向变为平面(传播方向和电场方向垂直)

 在设置频率波长时会覆盖全局设置。对于连续波,设置波长大小即可,而不需要设置时域(这是由于连续波频谱归一化后看起来更像一个均匀的频谱)。

  下图中时间和信号图可查看模拟的时间是否足够长以包括脉冲的整个时间信号(在注入频率低于产生较长的源脉冲的光学范围时很重要)

为避免在源注入平面出现注入误差或散射,注入阴影区域应始终在同一介质中(即不要使源在同一时刻入射到两种介质上,或者说源注入区域不应与两个不同物体相交:此条件不适用注入波导模式或纤维自源模式注入剖面)

注意:

(1)源波长对于网格划分也有影响,如0.5um的源网格相比1um更细致(因此最好在设置源后查看模拟网格)

(2)注入区域的字段可能是非物理的(源平面周围两个单位的场可能是非物理的),因此使用监视器记录时因将监视器放置在注入区域之外或者交界处。

2.平面波

  平面波常用于太阳能电池、CCOMS图像传感器、超材料、衍射光栅,平面波有三种类型:BLOCH/PERIODIC、BFAST、diffracting,按需选择。其中:

(1)BLOCH考虑了在给定光源入射角度情况下,器件各周期之间的相位差(周期器件、源有入射角),因此使每个单位之间的相位差不受波长影响(适用于单频模拟)。

(2)BFAST(broadband fixed angle source technique 宽带固定角度光源技术):宽带模拟,其允许宽带范围内以恒定的角度注入光。使用此情况时,BFAST边界条件会自动用于来源的侧面(也可用于单频模拟,但费时,不推荐)

在仿真中,一般平面波的宽度大于期间,源可以近似无穷大。

(3)diffracting:平面波可以在给定大小矩孔下实现衍射模拟,其中光源跨度决定衍射孔径大小。(如杨氏双缝干涉,设置两个光源即可)。注:使用此情况时,需要光源在模拟区域内,且不能与边界相交。

一些问题:

(1)使用bloch时不能设置span以模拟矩孔衍射平面波,原因时模拟时源注入平面将自动扩展到模拟区域全宽度,因此需要使用diffracting。

(2)使用bloch时不能模拟以一定角度传播的宽带源,原因是光传播角度会根据频率的变化而变化,建议使用BFAST,效果如下图。BFAST适用于宽带有角度注入。

(3)非周期器件使用bloch时,当使用非周期边界(如PML和金属)时,此操作会截断模拟区域两侧的源,并导致边缘效应,如下图。因此应该使用有限大小的光源,如高斯光束或全场散光源。(因此使用bloch模式时,两侧应该是周期边界条件或者bloch边界条件:蓝色)

(4)不能使用BFAST平面波来模拟非周期器件,这是因为BFAST假设了一个周期结构,因此模拟得到的源是无限宽的(周期性结构的周期是模拟区域的跨度span),因此可以使用有限大小的源(高斯光束或全场散光源)

(5)使用BLOCH/PERIODIC、BFAST时若光源宽度未达到仿真区域宽度,则会自动扩展到整个范围,模拟孔衍射只能使用diffracting。

(6)可以使用下图判断使用什么波和边界条件

3.全散射场

    The total-field scattered-field源注入有跨度的平面波,并将计算区域划分为两个区域,在源区内部同时存在入射场合散射场,而源区外只存在散射场(下图)。

The total-field scattered-field源注入有跨度的平面波,并将计算区域划分为两个区域,在源区内部同时存在入射场合散射场,而源区外只存在散射场(下图)。

其工作原理是:在边界处减去直接透射通过源区或从平坦基板反射的任何光,因此只有被完全包含在源区域内部的特征散射的光才能穿过边界并传播到散射场区域。

此源适用于吸收材料和各向异性材料、多层基片。

建立全散射场原则:

(1)若在侧面使用PML边界模拟单个独立的散射体,则源不应该扩展到PML

中,即源大小小于模拟区域。

(2)若模拟的是一个周期结构,则源可以扩展到周期边界

(3)若有基板,源注入轴应该垂直于基板

(4)若有基底,源边缘应与其相交

(5)光源不应与散射物相交

使用全散射场源的应用有三重散射和缺陷检测,在希望将散射场合总场分开并仅对散射场进行分析时,总散射场源十分有用。例如通过获取散射截面或在远场中散射光分的角度分布。

光源的边沿用来确定在边界处减去了哪些场,具体可按视频操作5.6 FDTD100_Sources_TFSF_tips_哔哩哔哩_bilibili

同时,可以使用两个独立的模拟来获得散射场而不使用全场散射场:一个是不使用散射特征来获得参考场,另一个是使用散射特征来获得参考场。通过从场中减去参考场计算得到散射场。

4.高斯源

高斯源注入具有高斯分布或柯西-洛伦兹分布光束,通常表示入射光束(模拟激光和具有数值孔径的物镜发出的光),光束场分布有两种表示方法:标量近似法和薄透镜法:

(1)标量近似方法假设光束在传播方向上不包含任何场分量,dd所以所有场都在垂直于传播轴的横面偏振

(2)薄透镜法只能产生高斯分布光束。两种方法都是计算得到不同束腰半径的光束。

对于宽带模拟,应该选择多频点光束计算选项

保证边缘为0。

高斯光束具有明显的偏振方向,若需模拟非偏振光或者圆偏振光,可以使用两个正交偏振光模拟,结果相加,然后处理。

5.模源

用于注入波导或者光纤的模。其传播方向沿假定结构的界面不变,不能求解bloch模式。设置此源时,应该将其放置在波导或光纤的横截面上。

模式源设置允许弯曲半径的直波导或弯曲波导的模式。也可以选择注入基本模式,即具有最高有效指数的模式。

在FDTD中,类t模态对应于沿x轴注入的源电场极化主要沿y方向的模态;而沿y轴或z轴注入的源电场极化主要沿x方向的模态。

当然也可以自定义,这个不做解释(我不懂唉)。

.....(未写完)

6.偶极源

其是发射偶极辐射模式的点源:电偶极源(振荡的点电荷)、磁偶极源(电流环)。偶极子发出的实际功率取决于偶极子周围的环境结构以及是否存在其他源,周围的结构反射回来的光,或者从周围的偶极子反射回来的光都会对偶极子发出的光产生相长或相消地干扰。

均匀环境下的发射功率如下:

在运行仿真后,偶极子源返回的结果是偶极子功率,purcell,频谱和时间信号。

(1)偶极子能量的结果给出了均匀介质中偶极子注入的解析功率作为频率的函数

(2)Purcell结果给出了作为频率函数的Purcell因子

(3)频谱结果给出了源脉冲的傅里叶变换

(4)时间信号结果给出了源脉冲的时域幅值

单个偶极子源辐射模式如下:

为了模拟发出均匀各向同性辐射方向图的点源,可以运行3个具有交偶极子方向的仿真,然后对这三个仿真的场进行平均。

偶极子源应用如下:

具体实例可参考视频5.12节5.12 FDTD100_Sources_Dipole_tips_哔哩哔哩_bilibili

设置偶极子的技巧:

(1)避免将偶极子源发在bloch边界附近,在bloch边界和源注入区域至少应有一个网格距离,避免源注入错误。

(2如果要模拟来自点源的均匀各向同性辐射而不是偶极子辐射,可以运行3个具有交偶极子方向的仿真,然后对这三个仿真的场进行平均。

(3)由于偶极子发射的实际功率会被周围的结构影响,故可以通过将传输功率乘以赛尔(Purcell)因子来重新标准化功率传输结果,或者使用transmission box分析组对其进行测量。获取Purcell系数方法如下:

7.导入源

导入源允许我们自定义光源入射,源的场剖面的数据可以来自先前模拟中测量的监控器数据,也可以来自其他软件,例如第三方光线跟踪工具,或者脚本公式计算。

(1)仿真得到的监视器数据用作后续仿真的源(可以将大型仿真分为多个仿真):具体可参考5.13节视频5.13 FDTD100_Sources_Import_intro_哔哩哔哩_bilibili(圆锥结构和需要细化网格的球)。

(2)光线软件导入数据:检查数据是否能导出为.fld格式,否则,数据可能首先需要格式化为rectilinear dataset数据集,以便由导入source.加载。数据集需要空间上复杂的电场数据,源的磁场分布和频率范围是可选的,可以在空间位置的统一或非统一网格上提供数据。数据集可以先保存到.mat文件,然后加载到导入源中,或者如果数据集已加载到脚本工作区中,import dataset脚本命令可用于将数据加载到导入源中。(详细见视频)

数据导入后,将根据导入的场数据自动设置源传播轴和跨度。但是,我们仍可以选择传播方向,并修改光源的波长范围。

导入源可用于指定自定义光束轮廓,如未内置到软伴中的贝塞尔光束或者像径向偏振光这样的光束的自定义偏振。

如有需要脚本文件可联系我获取。

设置导入源技巧:

(1)加载的数据不需要与模拟网格在同一网格上采样,它们可以在统一网格或非均匀网格上定义,场将自动插值到模拟网格上。

(2)导入源没有角度设置,因此若想对源进行额外的旋转以一个角度注入场,一种方法是导入原始的场数据,然后测量穿过源前面一个角平面的注入场。然后,可以使用角度平面中的数据作为要导入的数据,以便在模拟中场以一定角度传播。

(3)将一个结构分离分析时,两个分离部分之间来回反射的光都不会被考虑在内,因此仅当期望多次反射事件对设备性能的影响可以忽略时才使用此方法。

### 使用 Stable Diffusion 模型生成视频的方法 为了利用 Stable Diffusion 模型创建视频内容,通常会采用一系列特定的技术流程来实现这一目标。以下是具体方法: #### 准备工作环境 确保安装并配置好必要的软件包和工具链。这包括但不限于 PyTorch 和 Hugging Face 的 Diffusers 库[^2]。 ```bash pip install torch torchvision torchaudio diffusers transformers accelerate safetensors ``` #### 加载预训练模型 通过调用 `diffusers` 中提供的 API 来加载预先训练好的 Stable Diffusion 模型实例。这些模型能够执行基于文本到图像或多帧序列的任务转换。 ```python from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler import torch model_id = "runwayml/stable-diffusion-v1-5" pipeline = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda") pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config) ``` #### 定义动画参数 设置用于控制视频合成的关键变量,比如帧率、持续时间以及每秒产生的图片数量等属性。此外还需要定义场景之间的过渡效果和平滑度选项。 ```python num_inference_steps = 50 # 推理步数 guidance_scale = 7.5 # 创意指导强度 video_length_seconds = 8 # 输出视频长度(秒) frames_per_second = 24 # 帧速率 (FPS) total_frames = int(video_length_seconds * frames_per_second) ``` #### 创建连续帧序列 对于每一帧都应用相同的 prompt 或者动态调整 prompts 来构建连贯的故事线。可以引入一些变化因素使相邻两帧之间存在差异从而形成流畅的动作感。 ```python prompts = ["A beautiful landscape at sunrise"] * total_frames for i in range(total_frames): if i % 10 == 0 and i != 0: new_prompt = f"A beautiful landscape with {i//10} birds flying over it." prompts[i:] = [new_prompt]*(total_frames-i) images = [] for frame_idx in range(total_frames): image = pipeline(prompts[frame_idx], num_inference_steps=num_inference_steps, guidance_scale=guidance_scale).images[0] images.append(image) ``` #### 合成最终视频文件 最后一步就是把所有的静态图象拼接起来成为一个完整的 MP4 文件或者其他格式的多媒体资。可借助第方库如 moviepy 实现此操作。 ```python from moviepy.editor import ImageSequenceClip clip = ImageSequenceClip(images, fps=frames_per_second) output_video_path = "./generated_video.mp4" clip.write_videofile(output_video_path, codec="libx264", audio=False) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值