python做网络的仿真_用python自动化仿真HFSS,超简易

python是一款适用性极强的编程语言。一直期待HFSS(三维全波电磁场仿真的行业标准)能有python接口。后知后觉的本人才发现原来HFSS16(2015版本)已经不止支持VB脚本,还增加了python支持,当然它用的是Ironpython,基于.NET,和Cpython还是有一定区别,Numpy和Scipy这些库的使用上可能还存在问题。正好网上有牛人已经写好了使用指南,我就当下搬运工,希望有更多的人参与来发展hfss的python自动化仿真。

运行环境

python 2.7 / 3.4及以上

Ansys HFSS16(2015.1.0)

win7 64位

引入

当你发现你在HFSS中做一个重复性任务时,你可以通过自动化来节省时间。

当你想要使用HFSS的脚本时,最简便的办法是利用脚本记录功能弄清楚HFSS是怎样编写脚本的。几乎所有你在HFSS用户界面做的事你都可以使用脚本做到。

再次强调,找出如何使用脚本的最快的方式是在图形化用户界面记录一个脚本,看这个脚本是怎么说的。

录制脚本文件:Tools → Record Script to File,然后做些你想被录制的事,如改变工作频率,某些设计变量。

脚本录制操作

结束脚本录制:Tools →Stop Script Recording。

如果你想改变Setup8的工作频率,如800MHz,然后改变一个设计变量N为7,你需要得到类似的一个脚本:

# ----------------------------------------------

# Script Recorded by ANSYS Electronics Desktop Version 2015.0.0

# 10:04:03 May 13, 2015

# ----------------------------------------------

import ScriptEnv

ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")

oDesktop.RestoreWindow()

oProject = oDesktop.SetActiveProject("AntennaTemplate2")

oDesign = oProject.SetActiveDesign("HFSSDesign1")

oDesign.ChangeProperty(

[

"NAME:AllTabs",

[

"NAME:HfssTab",

[

"NAME:PropServers",

"AnalysisSetup:Setup8"

],

[

"NAME:ChangedProps",

[

"NAME:Solution Freq",

"MustBeInt:=" , False,

"Value:=" , "800MHz"

]

]

]

])

oDesign.ChangeProperty(

[

"NAME:AllTabs",

[

"NAME:LocalVariableTab",

[

"NAME:PropServers",

"LocalVariables"

],

[

"NAME:ChangedProps",

[

"NAME:N",

"Value:=" , "7"

]

]

]

])

你不用完全弄清脚本是怎么做到这些事情的。前四行只是注释,没有做任何事。5-9行只是样板:初始化软件,指定活动的工程来让我们可以真正操作它。剩下的两个ChangeProperty就分别是将Setup8的工作频率改为800MHz和改变设计变量N为7的全部代码了。

我录制的脚本示意图

改变扫描频率得到的脚本

你可以使用用户界面同样也可以利用脚本来做许多不同的事:

• 导出DXF文件

• 改变材料

• 运行分析

• 导出报告

• 打开一个工程

• 创建一个模型

等等。

完全自动化(使用命令行)

我们的目标是编写脚本而完全不用与界面人工交互——比如不用我们手动打开HFSS来运行脚本。

很简单,在命令行中,只需要输入ansysedt -RunScript my_script.py,或者你不希望在脚本运行结束后HFSS仍然打开着,使用ansysedt -RunScriptAndExit my_script.py命令。

你还可以使用Matlab调用hfss,通过使用系统函数:

system('"C:\Program Files\AnsysEM\AnsysEM16.0\Win64\ansysedt.exe" -RunScriptAndExit "my_script.py"')

在这里,你需要提供HFSS的完整运行路径,通过右击HFSS图标-属性-目标获取它。

此外要注意的是,当你尝试在命令行中运行脚本时,该脚本必须是完全独立的。这意味着你不能指望任何已经打开的项目。应该遵循的策略是让你的脚本打开一个项目或创建一个新的项目。

一些实例

下面是一些示例脚本,它们仅与HFSS16兼容。

你可以在图形界面通过Tools运行脚本,也可以使用命令行的形式。

1. 创建一个新的工程

"""Create a new project"""

import ScriptEnv

ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")

oDesktop.RestoreWindow()

oProject = oDesktop.NewProject()

2. 打开一个已经存在的工程

"""Open an existing project"""

import ScriptEnv

ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")

oDesktop.RestoreWindow()

oDesktop.OpenProject("C:/Users/pier3595/Desktop/Project1.aedt")

3. 使用示例工程(下面的脚本都需要你在桌面上有 AntennaTemplate.aedt 文件,下载链接)

3.1. 改变工作频率并扫频

""""Change sweep solution frequency and a sweep frequency"""

# Locate the project file on your desktop

# These three lines are just plain Python, and have *nothing* to do with HFSS.

import os

project_file = os.path.join(os.path.expanduser('~'), 'Desktop')

project_file = os.path.join(project_file, 'AntennaTemplate.aedt')

import ScriptEnv

ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")

oDesktop.RestoreWindow()

oDesktop.OpenProject(project_file)

oProject = oDesktop.SetActiveProject("AntennaTemplate")

oDesign = oProject.SetActiveDesign("HFSSDesign1")

oDesign.ChangeProperty(["NAME:AllTabs", ["NAME:HfssTab", ["NAME:PropServers", "AnalysisSetup:Setup8"],

["NAME:ChangedProps", [ "NAME:Solution Freq", "MustBeInt:=", False, "Value:=", "500MHz"]]]])

oDesign.ChangeProperty([ "NAME:AllTabs", ["NAME:HfssTab", ["NAME:PropServers", "AnalysisSetup:Setup8:Sweep1"],

["NAME:ChangedProps", [ "NAME:Start", "MustBeInt:=", False, "Value:=", "460MHz"]]]])

oDesign.ChangeProperty([ "NAME:AllTabs", [ "NAME:HfssTab", [ "NAME:PropServers", "AnalysisSetup:Setup8:Sweep1" ],

[ "NAME:ChangedProps", [ "NAME: Stop", "MustBeInt:=", False, "Value:=", "540MHz"]]]])

该脚本改变Setup8的工作频率到500MHz,并且改变Sweep1的起始频率为460MHz、截止频率为540MHz。但是它还做了一些事:他利用普通的python函数来找到你的桌面并且打开指定的文件。这使得脚本更加强大。只要你在桌面上有AntennaTemplate.aedt 文件,它就会运行。能够使用python通用函数使得HFSS脚本编程非常强大有用。该脚本使用了python的os模块。

3.2. 改变一个设计属性

将变量ws的值修改为2mm:

""""Change a design property."""

# Locate the project file on your desktop

# These three lines are just plain Python, and have *nothing* to do with HFSS.

import os

project_file = os.path.join(os.path.expanduser('~'), 'Desktop')

project_file = os.path.join(project_file, 'AntennaTemplate.aedt')

import ScriptEnv

ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")

oDesktop.RestoreWindow()

oDesktop.OpenProject(project_file)

oProject = oDesktop.SetActiveProject("AntennaTemplate")

oDesign = oProject.SetActiveDesign("HFSSDesign1")

oDesign.ChangeProperty(["NAME:AllTabs", ["NAME:LocalVariableTab", ["NAME:PropServers", "LocalVariables"],

["NAME:ChangedProps", ["NAME:ws", "Value:=", "2mm"]]]])

使用扩展包来简化代码,拓展功能

pip install hfsslib

[可用参考文档](http://arrc.ou.edu/~cody/hfsslib/hfsslib/)

### 尽情探索吧,希望有你的交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么网格布局不显示java_java – 在GridLayout中不显示组件的FlowLayout?

我正在创建一个应用程序,作为某种类型的中心,用户可以将快捷方式存储到他们喜欢的应用程序并轻松启动它们.不过,我在使用FlowLayout时遇到了一些问题.当我使用GridLayout时,组件显示完美.当我使用FlowLayout时,根本没有任何显示.网格布局:FlowLayout中:我…

python爬取qq音乐歌词风变编程_爬取QQ音乐歌词

#!/usr/bin/env python3# -*- coding: utf-8 -*-# DESC: 爬取歌手前3页歌曲的歌词都爬取下来,并按歌名分别保存# Date: 2020-05-21import requestsimport re,osos.makedirs(music,exist_okTrue)## 添加请求头headers {user-agent:Mozilla/5.0 (Windows …

php post请求后端拿不到值_Ajax 提交POST后,后台php 无法获取$POST值

当 contentType 为 application/x-www-form-urlencoded 时(默认值)才能用 $_POST 得到传入的数据。但是使用 application/json;charsetutf-8不是 php 所能识别的类型声明,不能替你解析。所以只能用 php://input 取得,并用 parse_str 自行解析而形如 a1&a…

springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入)

spring bean生命周期流程图:​​​​其中包含了很多常用的接口,可以参考spring 常用接口;下面写个例子证明下:1.实现InitializingBean以及各个Aware接口public class UserB implements InitializingBean , BeanFactoryAware , Bea…

python中的索引从几开始计数_计算机为什么要从 0 开始计数?

作者:程序喵大人来源:程序喵大人大家好,我是猫哥!众所周知,计算机是从0开始计数,而不是我们平时常用的从1开始计数,但你有想过为什么吗?其实不是计算机从0开始计数而是多数编程语言中…

python os.environ windows_python 获取系统环境变量 os.environ and os.putenv

从一段code说起 “if "BATCH_CONFIG_INI" in os.environ:” 判断环境变量的值有没有定义如果定义的话就去环境变量的值,否则就取当前目录下的config.ini文件。if "BATCH_CONFIG_INI" in os.environ:print "Using custom ini file!"se…

coreos 安装mysql_如何执行CoreOS Linux的裸机安装

本文将介绍如何在裸机服务器上加载CoreOs Linux。关于在计算机上安装CoreOS Linux的更多方法。在本文中,我们将首先启动一些Live Linux发行版。从USB或CDROM提取Fedora,然后使用CoreOS的安装脚本在给定的硬盘驱动器上执行实际的CoreOS Linux。您将需要什…

python selenium截图_python+selenium截图操作样例

# -*- coding:utf-8 -*-# explain : 截图操作import os, timeclass Picture:"""截图操作分为正常的操作截图truepicture和异常的操作截图errorpicture"""def __init__(self, driver, path):""":type driver: selenium.webdriver.…

java环形队列测试,JAVA数据结构之循环队列的实现

1、循环队列CircleQueue类的实现代码如下所示:public class CircleQueue {private Object[] array;private int capacity;//队列容量private int count;//队列中元素的个数private int front;private int rear;public CircleQueue(int capacity){this.capacity cap…

websocket 发送图片_基于WebSocket的web端IM即时通讯应用的开发

基于WebSocket的web端IM即时通讯应用的开发功能列表:1、Web端的IM即时通讯应用2、支持上线、下线、实时在线提醒3、单聊、群聊的建立4、普通文字、表情、图片的传输(子定义富文本)5、单人的顶级提醒,多对话的窗口的提醒6、调用图灵机器人的自动回复演示目…

php处理结果集,php中mysqli 处理查询结果集的几个方法

最近对php查询mysql处理结果集的几个方法不太明白的地方查阅了资料,在此整理记下Php使用mysqli_result类处理结果集有以下几种方法fetch_all()抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。fetch_array()以一…

python gamma函数_python gamma矫正

这个函数,主要用来做对比度调整,利用 gamma 曲线 或者 log 函数曲线,gamma 函数的表达式: yxγ, 其中, x 是输入的像素值,取值范围为 [0−1], y 是输出的像素值,通过调整γ 值,改变…

ios 支付验证 php,PHP验证IOS原生支付是否成功(代码全篇)

前言IOS原生支付后,需要调用服务端接口进行验证,检测是否真正的支付成功!class ApplePay{/** 环境配置(建议提成配置)* var bool*/private $sandbox false ;/** result as json* param int $code* param string $msg* param array $data* return string*/private function jso…

python自动化输入不了中文_appium+python自动化61-中文输入乱码问题解决

前言在夜神模拟器上输入中文,发现是乱码,将unicodeKeyboard和resetKeyboard参数设置为True了,发现还是没法解决。 打开手机设置语言和输入法,发现找不到Appium Android Input Manager for Unicode输入法导致的 相关环境:appium1.8…

PHP定时抽奖怎么实现的,PHP 实现抽奖逻辑

public static function get_rand($proArr) {$result "";//概率数组的总概率精度$proSum array_sum($proArr);//概率数组循环foreach ($proArr as $key > $proCur) {$randNum mt_rand(1, $proSum);if ($randNum < $proCur) {$result $key;break;} else {$p…

绿盟漏洞扫描_主机安全漏洞解决方案

前几天发了一篇等保2.0的文章(等保2.0简单介绍 )&#xff0c;文章里面提到&#xff0c;相比于等保1.0标准&#xff0c;等保2.0很大幅度上对安全通用要求的一些控制项做了大幅精简&#xff0c;但是等保二级的要求仍多达135项、等保三级多达211项。https://mp.weixin.qq.com/s/kE…

php电子商务模板,关于php:电商系统设计之运费模板下

电商大伙每天都在用&#xff0c;相似某猫&#xff0c;某狗等。电商零碎设计看似简单又很简略&#xff0c;看似简略又很简单本章适宜初中级工程师细看&#xff0c;大佬请随便【腾讯云】云产品限时秒杀&#xff0c;爆款1核2G云服务器&#xff0c;首年99元前言在订单零碎中&#x…

采用光线跟踪绘制场景 c++_光线追踪的相干性聚集:硬件光线追踪的优势

尽管在理论上实现现代GPU的方法是无限的&#xff0c;但真正有效的方法是切实地了解问题并着手将方案变为现实。制造现代高性能半导体器件以及试图加速当前可编程光栅化技术所面临的问题揭示了GPU硬件行业发展的未来趋势。例如在现代GPU中SIMD处理和固定功能纹理单元是必不可少的…

ajax请求php省略后缀,如何在PHP中更安全地处理Ajax请求?

在谷歌搜索了很多次后,回答结束了!步骤1:为所有Web服务生成令牌系统:生成令牌:session_start();$token md5(rand(1000,9999)); //you can use any encryption$_SESSION[token] $token; //store it as session variable?>步骤2:发送Ajax调用时使用它:var form_data {data…

python编写字符串查找函数_Python 简明教程 --- 8,Python 字符串函数

好代码本身就是最好的文档。当你需要添加一个注释时&#xff0c;你应该考虑如何修改代码才能不需要注释。—— Steve McConnell目录字符串有很多操作函数&#xff0c;所以&#xff0c;这里我们专门用一节来介绍这些函数。建议&#xff1a;由于字符串函数较多&#xff0c;对于新…