cuicui 发表于 2016-12-11 16:37:05

PSCAD求方程组

如何用PSCAD求解方程组

crosssky 发表于 2016-12-11 20:08:50

ZGGLLJT 发表于 2016-12-11 19:01
我只是路过打酱油的。第一次听说用PSCAD求解方程组的的

借你的宝地回复一下楼主,我自己的回复好像遇到了网站的bug,显示不出来了

crosssky 发表于 2016-12-11 19:42:49

楼主脑洞很大,哈哈。。   
但是我要说这不是不可能的,世界属于有梦想的人。::victory::
接下来让我我来分析一下楼主的方程,楼主没有交代beta是否就是导通角。我假装楼主想告诉我们f()函数是无法求出解析式的,而楼主求的变量是beta, 那么方程变成 beta - f(U,P) =0 ,已知U和P,方程最终化为一个变量beta的方程,但是没有解析形式的解,无法用pscad计算模块直接计算,所以需要解方程,类似 beta^2+sin(beta)=0这种。
那么怎么用pscad求解??   我给楼主提供一下思路,这种方程无法解析求,只能通过非线性方程的数值解法去求解,所以要在pscad里面求解,就需要编写非线性方程求解函数,那么pscad中可以实现非线性方程的求解么,答案是肯定的。首先pscad中有fortran程序自定义功能,我们可以自定义一个模块,输入是U和P的值,仿真中U和P的值自动生成,输入到我们的自定义模块中,我们编写程序求解beta的值,然后作为自定义模块的输出,输出到仿真界面来。这是肯定能实现的,但是好像很麻烦。不用怕,我来提供第二种思路。

思路2就是,我们不用自己编写非线性数值求解函数,因为Matlab中有现成的,我们只需要实现将pscad中的U和P输出到maltab中,利用maltab中数值求解函数解出来beta,然后再返回pscad即可。 那怎么实现这两个软件之间的数据传递过程呢?我再提供给楼主一个思路,首先利用pscad中fortran自定义功能,做一个写文件的模块,只需要每个步长将仿真产生的U和P写入一个txt文件,然后Matlab读入这个文件中U和P,利用fsovle等非线性方程求解功能求解出beta,然后再写入另外一个txt文件,pscad再次读入这个文件,用到仿真中去即可。。当然我说的很简单,但是实际上需要两个程序之间配合,pscad再进入下次求解之前要等待maltab返回求解结果,这些配合细节需要去设计。

楼主脑洞很大,但总有人要去实现这些脑洞。如果你觉得很难,很烦,很虐心,别急,请专业的仿真专家为你来实现请访问淘宝店铺联系店小二 https://shop188896825.taobao.com/?spm=2013.1.1000126.d21.L4sIMz哈哈,其实这只是个广告。。哈哈哈。。。有没有感觉被套路了。。
但是话说回来,我提供的思路绝对可行,看到帖子的人,有这方面需要,可以作为几个思路参考。如果想让别人帮你解决,就访问店铺吧。

crosssky 发表于 2016-12-11 19:45:55

楼主脑洞很大,哈哈。。   
但是我要说这不是不可能的,世界属于有梦想的人。::victory::
接下来让我我来分析一下楼主的方程,楼主没有交代beta是否就是导通角。我假装楼主想告诉我们f()函数是无法求出解析式的,而楼主求的变量是beta, 那么方程变成 beta - f(U,P) =0 ,已知U和P,方程最终化为一个变量beta的方程,但是没有解析形式的解,无法用pscad计算模块直接计算,所以需要解方程,类似 beta^2+sin(beta)=0这种。
那么怎么用pscad求解??   我给楼主提供一下思路,这种方程无法解析求,只能通过非线性方程的数值解法去求解,所以要在pscad里面求解,就需要编写非线性方程求解函数,那么pscad中可以实现非线性方程的求解么,答案是肯定的。首先pscad中有fortran程序自定义功能,我们可以自定义一个模块,输入是U和P的值,仿真中U和P的值自动生成,输入到我们的自定义模块中,我们编写程序求解beta的值,然后作为自定义模块的输出,输出到仿真界面来。这是肯定能实现的,但是好像很麻烦。不用怕,我来提供第二种思路。

思路2就是,我们不用自己编写非线性数值求解函数,因为Matlab中有现成的,我们只需要实现将pscad中的U和P输出到maltab中,利用maltab中数值求解函数解出来beta,然后再返回pscad即可。 那怎么实现这两个软件之间的数据传递过程呢?我再提供给楼主一个思路,首先利用pscad中fortran自定义功能,做一个写文件的模块,只需要每个步长将仿真产生的U和P写入一个txt文件,然后Matlab读入这个文件中U和P,利用fsovle等非线性方程求解功能求解出beta,然后再写入另外一个txt文件,pscad再次读入这个文件,用到仿真中去即可。。当然我说的很简单,但是实际上需要两个程序之间配合,pscad再进入下次求解之前要等待maltab返回求解结果,这些配合细节需要去设计。

楼主脑洞很大,但总有人要去实现这些脑洞。如果你觉得很难,很烦,很虐心,别急,请专业的仿真专家为你来实现请访问我的店铺,搜索淘宝店铺:电力系统仿真编程小组。。 哈哈。。哈哈哈。。。有没有感觉被套路了。。
但是话说回来,我提供的思路绝对可行,看到帖子的人,有这方面需要,可以作为几个思路参考。如果想让别人帮你解决,请找我

ZGGLLJT 发表于 2016-12-11 19:01:56

我只是路过打酱油的。第一次听说用PSCAD求解方程组的的

stoat 发表于 2016-12-11 19:25:36

操作方法如图

附,运行好的程序一份
要点:1.截切掉数据读取的部分,先运行一遍生成数据;
         2.用文件夹元件加载数据所在位置
         3.粘贴剪切的部分,并运行
         4.如更改阻抗扫描元件的参数,清除生成的文件重复上述步骤

stoat 发表于 2016-12-11 19:26:59

发错了抱歉::sweat::

crosssky 发表于 2016-12-11 19:46:19

楼主脑洞很大,哈哈。。   
但是我要说这不是不可能的,世界属于有梦想的人。::victory::
接下来让我我来分析一下楼主的方程,楼主没有交代beta是否就是导通角。我假装楼主想告诉我们f()函数是无法求出解析式的,而楼主求的变量是beta, 那么方程变成 beta - f(U,P) =0 ,已知U和P,方程最终化为一个变量beta的方程,但是没有解析形式的解,无法用pscad计算模块直接计算,所以需要解方程,类似 beta^2+sin(beta)=0这种。
那么怎么用pscad求解??   我给楼主提供一下思路,这种方程无法解析求,只能通过非线性方程的数值解法去求解,所以要在pscad里面求解,就需要编写非线性方程求解函数,那么pscad中可以实现非线性方程的求解么,答案是肯定的。首先pscad中有fortran程序自定义功能,我们可以自定义一个模块,输入是U和P的值,仿真中U和P的值自动生成,输入到我们的自定义模块中,我们编写程序求解beta的值,然后作为自定义模块的输出,输出到仿真界面来。这是肯定能实现的,但是好像很麻烦。不用怕,我来提供第二种思路。

思路2就是,我们不用自己编写非线性数值求解函数,因为Matlab中有现成的,我们只需要实现将pscad中的U和P输出到maltab中,利用maltab中数值求解函数解出来beta,然后再返回pscad即可。 那怎么实现这两个软件之间的数据传递过程呢?我再提供给楼主一个思路,首先利用pscad中fortran自定义功能,做一个写文件的模块,只需要每个步长将仿真产生的U和P写入一个txt文件,然后Matlab读入这个文件中U和P,利用fsovle等非线性方程求解功能求解出beta,然后再写入另外一个txt文件,pscad再次读入这个文件,用到仿真中去即可。。当然我说的很简单,但是实际上需要两个程序之间配合,pscad再进入下次求解之前要等待maltab返回求解结果,这些配合细节需要去设计。

楼主脑洞很大,但总有人要去实现这些脑洞。

crosssky 发表于 2016-12-11 19:50:36

哈哈哈,脑洞很大

crosssky 发表于 2016-12-11 19:50:53

楼主脑洞很大,哈哈。。   
但是我要说这不是不可能的,世界属于有梦想的人。::victory::

crosssky 发表于 2016-12-11 19:54:38

擦,正常发个贴,就是因为我字数太多了,竟然说我再灌水,给我删了。。。贴个图吧。javascript:;
页: [1] 2
查看完整版本: PSCAD求方程组

招聘斑竹