LC 旋转 - 模拟对象

2024-06-01 02:20
文章标签 模拟 对象 旋转 lc

本文主要是介绍LC 旋转 - 模拟对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接 链接
液晶 (LC) 旋转网格属性允许您以 theta、phi 为单位指定空间变化的 LC 导向。
液晶由杆状分子结构组成,这些分子结构具有相对于长轴的旋转对称性。因此,液晶具有空间变化的单轴光学特性。 相对于分子长轴和分子短轴的折射率称为非寻常 ne 和寻常 no,见下图。
在这里插入图片描述
旋转对称性使变换矩阵简化为两个旋转角度的函数 (θ,ϕ) 的函数。
在这里插入图片描述
并且参考(或模拟)坐标系中的介电常数张量 (x,y,z)通过围绕 z 和y的旋转转换为主坐标系 (X,Y,Z)。
在这里插入图片描述

属性编辑器 "选项卡

NAME: 对象名称
ENABLED:确定模拟中是否包含对象
USE RELATIVE COORDINATES:如果启用,信号源将使用中心点或求解器作为原点(参考)。 如果禁用,则会使用绝对中心(0,0,0)作为原点。
X, Y, Z:对象的中心位置。
RESAMPLE FOR VIEWING: 如果启用,NX、NY、NZ 将用于对布局编辑器中的对象图形进行重新采样。NX、NY、NZ 是 CAD 视图中显示的最大允许分辨率。这些数字用于图形渲染,对仿真结果没有影响。这些选项仅在导入空间变化数据时可用。
X SPAN, Y SPAN, Z SPAN:对象的大小。在图形用户界面中是灰色的,不可编辑。导入空间分布数据时,数字会更新。
RESCALE AXES INDEPENDENTLY: 如果启用,则可以对 X SCALE、Y SCALE、Z SCALE 进行不同设置,以调整对象的比例。如果禁用,则 X SCALE、Y SCALE、Z SCALE 只能相同设置。这些选项仅在导入空间变化数据时可用。
ENABLE CONFORMAL MESHING:详见网格属性提示。
THETA, PHI: 定义液晶导向器方向向量。
UX, UY, UZ: 方向单元矢量。在图形用户界面中是灰色的,不可编辑。数字根据 THETA、PHI。
IMPORT DATA:导入保存在 .mat 文件中的方向单位矢量 UX、UY、UZ 或保存在 .csv 文件中的 THETA、PHI。
CLEAR DATA: 清除导入的数据。
在接下来的章节中,我们将分别解释如何设置 LCs 的均匀分布和空间变化方向分布。请注意,这些角度的定义顺序非常重要,因为旋转一般是非交换关系。

均匀分布

例如,我们将 LC 设置为 ne=1.74 和 no=1.53,其中 LC 的方向角定义为 θ =30° 和 φ =150°。在工具栏上选择属性-- LC 方向,添加 LC 属性对象。
在这里插入图片描述
并在编辑窗口中设置属性 "theta "和 “phi”,如下图所示。
在这里插入图片描述
通过设置这些角度,FDTD 会自动创建变换矩阵 U。接下来,我们打开材料数据库,定义一种对角线各向异性材料,如下图所示。注意:寻常折射率和非寻常折射率设置,必须将 nxx 和 nyy 设置为普通折射率,将 nzz 设置为超常折射率。
在这里插入图片描述
定义变换矩阵 U 和对角线折射率后,我们将其赋值给结构对象的 "材料 "选项卡上的 "材料 "和 "网格属性名称 "属性,并将其设置为liquid crystal。
在这里插入图片描述

分布指向随空间变化的液晶

方法 1:使用脚本环境导入数据

在该方法下,使用addgridattribute,并且使用importdataset脚本命令添加 LC 属性,并设置 LC 的空间变化方向。例如,如果我们要设置如下图所示在 Z 方向上扭曲的 LC,其中 LC 指向的分量为ux(x,y,z)=cos(zπ),u(x,y,z)=sin(zπ)和uz(x,y,z)=0,
在这里插入图片描述
我们在一个矩阵变量中定义了指向分布,并将矩阵放入 LC attribute property中。在下面的脚本中,矩阵 "n "用于定义扭曲向列低密度聚合体的方向分布,这些信息被放入一个名为 LC 的数据集,该数据集包含 x、y、z 位置数据和名为 "u "属性中的方向。在倒数第二行使用 addgridattribute 命令时,LC 属性被添加到模拟中,并设置了导向分布。
注意:空间变化方位单位矢量的大小。指定 LC 方向时,方向矢量的大小必须正好为 1,除非在不希望设置 LC 方向的区域,方向矢量的大小应设置为 0。

# define x/y/z
x = 0;
y = 0;
z = linspace(0e-6,5e-6,100);
X = meshgrid3dx(x,y,z);
Y = meshgrid3dy(x,y,z);
Z = meshgrid3dz(x,y,z);
n = matrix(length(x),length(y),length(z),3);# define the orientation function
n(1:length(x),1:length(y),1:length(z),1) = cos(Z*pi*1e5);
n(1:length(x),1:length(y),1:length(z),2) = sin(Z*pi*1e5);
n(1:length(x),1:length(y),1:length(z),3) = 0;# create dataset containing orientation vectors and position parameters
LC=rectilineardataset("LC",x,y,z);
LC.addattribute("u",n);# add LC import grid attribute
addgridattribute("lc orientation",LC);
setnamed("LC attribute","nz",50); # set resolution

注意:注:通过 "set "脚本命令设置角度 theta 时,输入的单位必须是弧度。例如:

setnamed("LC attribute","theta",pi/4);

然后,我们添加一种具有对角线各向异性成分的材料,并设置对象使用 LC 属性,与均匀分布的情况类似。

方法 2:使用图形用户界面从 .mat 文件导入数据

在网格属性编辑窗口中,点击 "Import data…(导入数据…)"按钮,可以导入包含所需的主任分布数据集的 .mat 文件。下面的代码举例说明了如何使用 matlabsave 脚本命令保存要导入的 .mat 文件。

# define x/y/z
x = 0;
y = 0;
z = linspace(0e-6,5e-6,100);
X = meshgrid3dx(x,y,z);
Y = meshgrid3dy(x,y,z);
Z = meshgrid3dz(x,y,z);
n = matrix(length(x),length(y),length(z),3);# define the orientation function
n(1:length(x),1:length(y),1:length(z),1) = cos(Z*pi*1e5);
n(1:length(x),1:length(y),1:length(z),2) = sin(Z*pi*1e5);
n(1:length(x),1:length(y),1:length(z),3) = 0;# create dataset containing orientation vectors and position parameters
LC=rectilineardataset("LC",x,y,z);
LC.addattribute("u",n);# save data to .mat file
matlabsave("LC_import.mat",LC);

然后,我们添加一种具有对角线各向异性成分的材料,并设置对象使用 LC 属性,与均匀分布的情况类似。

方法 3:从 CSV(逗号分隔值)文件导入数据

这种方法似乎使用了其他工具,而且提示自己创建一个合格式的csv文件不是很容易,个人就不推荐这种方法了
在顶部工具栏的导入菜单中,点击从 CSV 导入,打开导入向导,选择要导入的 CSV 文件。有关从图形向导导入数据的文件格式和步骤的详细信息,请参阅从 CSV 导入对象 - 液晶。
在这里插入图片描述

同样的数据也可以使用 importcsvlc 脚本命令导入。

这篇关于LC 旋转 - 模拟对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019715

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

KLayout ------ 旋转物体90度并做平移

KLayout ------ 旋转创建的物体 正文 正文 前段时间,有个小伙伴留言问我,KLayout 中如何旋转自己创建的物体,这里特来说明一下。 import pyapoly = pya.DPolygon([pya.DPoint(0, 0), pya.DPoint(0, 5), pya

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

基于 Java 实现的智能客服聊天工具模拟场景

服务端代码 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Serv

剑指offer(C++)--左旋转字符串

题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! class Solution {public:string LeftRotateStri

Python分解多重列表对象,isinstance实现

“”“待打印的字符串列表:['ft','bt',['ad',['bm','dz','rc'],'mzd']]分析可知,该列表内既有字符对象,又有列表对象(Python允许列表对象不一致)现将所有字符依次打印并组成新的列表”“”a=['ft','bt',['ad',['bm','dz','rc'],'mzd']]x=[]def func(y):for i in y:if isinst

Java面试题:内存管理、类加载机制、对象生命周期及性能优化

1. 说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件:Class loader(类装载)、Execution engine(执行引擎)、Runtime data area(运行时数据区)、Native Interface(本地接口)。 Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)装载class文件到Runtim

Class 对象在执行引擎中的初始化过程

一个 class 文件被加载到内存中需要经过 3 大步:装载、链接、初始化。 装载 装载是指 Java 虚拟机查找 .class 文件并生成字节流,然后根据字节流创建 java.lang.Class 对象的过程。 链接 链接过程分为 3 步:验证、准备、解析。 验证: 初始化 这是 class 加载的最后一步,这一阶段是执行类构造器方法的过程,并真正初始化类变量。 1.文件格式检验:检

价格减免(Lc2288)——模拟

句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 '$' 。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个 价格 。 例如 "$100"、"$23" 和 "$6" 表示价格,而 "100"、"$" 和 "$1e5 不是。 给你一个字符串 sentence 表示一个句子和一个整数 discount 。对于每个表示价格的单