帮助与文档
  • SOFiSTiK > 
  • 在线帮助 > 
  • Basics手册 > 
  • 10.开始分析

10.开始分析

10.1 概述

  所有的计算程序都需要其数据输入文件。输入通常由符合 CADINP 语言语法格式的语句组成。

在一个项目中通常需要执行多个单独的模块。而一个完整的分析则要求模块间的交互。在 这种情况下,通常的步骤是程序在收集了一个或数个文件的全部数据后,通过数据内相应的记 录对相应的程序进行调用。

  因此,一个完整的输入文件应当具备以下结构: 

PROG    AQUA

$ 材料和横截面定义   $ 

END

PROG S O F i M S H A

$   有限元系统输入数据   $

END

PROG    ASE

$  程序STAR2中的输入数据, 第一荷载工况$

END

PROG    ASE

$  程序STAR2中的输入数据, 第二荷载工况 $

END

SYS COPY  *. plb  d : $  复制报告文件$$ else ... $

PROG    WING    $ 模型及报告显示 $ 

END

  输入文件的第一行应预留给 PROG。每个模块都可以被重复多次调用。程序中不同模块被执行的顺序则对应于这些模块的 PROG 顺序。如果用-PROG 输入代替+ PROG,相关联的模 块将在程序执行过程中被省略。因此,任意一个模块都可以被用户直接选择。

blob.png

10.2 #DEFINE - 参数替换

  SPS 还能够在输入文件中进行全局替换。关于文本块的说明必须在使用前定义。这需要通过使用#define text=name 来完成。文本块的名称可由最多 10 个不含$的字符组成,且首字符必须是字母。文本块的值可以是任意长度的文本。直到被替换之前,被赋值的参数都将不会被评估。用户可以对己赋值的参数进行重新定义。  

   在输入数据或块中的参数可以通过使用$(name)指定,在$与括号间不允许使用空格,括号中不区分大/小写字母。替换可以是递归的。如$(A$(INDEX))的定义是允许的。  

例如:

$PROG (extension for TEDDY)

#define LENGTH=3.70

#define WIDTH=30

#define HEIGHT=50

#define  PLATE=50  20  10  80


PROG AQUA CONC  1  B  25

STEE  1  BST  500

SREC  1 $(HEIGHT)   $(WIDTH) SREC  2 $(PLATE)   ASU   2.3 END

 

PROG SOFIMSHA SYST   GIRD

NODE  1  0.0  0.0  FIX  PP

NODE 2 $(LENGTH)/2  0.0

 

NODE 3 $(LENGTH)

BEAM  1  1  2  1

BEAM  2  2  3  1 END

  与CADINP的 #()的变量,$() 变量被由字符串替换,所以用户可以插入文字或生成宏。

通常我们有两个默认的参数,即包含输出文件基本名称的$(NAME)和包含项目名称的$(PROJECT)。这些参数对 SYS 命令特别有帮助。

  其中未在输入文件中定义的文本块可以使用下列 SET 语句来设置。 当给出命令(例如在环境中)时:

SET   SIZE=LP   O   FORM   ZTVK

SPS 可以通过适当的格式在任何文件中输入:

SIZE $(SIZE) 

  此外,可以在SOFISTIK.DEF文件中描述SPS的全局参数。 这导致三层的层次:

  首先是输入数据中的定义

  其次是SET的定义(要避免!)

  最后是SOFISTIK.DEF的中定义

10.3 #INCLUDE - 块定义

  通过使用块定义,多行数据可以在数据集中的任何位置重复使用。程序最多允许 256 个内部模块和无限个数的数据块以任意的顺序组合。在定义块时,块可以被递归调用 32 层。

#DEFINE name 块名称的起始 (最多八个字符)

#ENDDEF 块定义的终止

#UNDEF name 删除一个己定义的块

#INCLUDE name 从内存或文件名中插入一个的块名 

  使用块不仅省去了用户从复制重现输入行的繁琐,而且还允许使用子程序。

例如:

#define SECT

$PROG AQUA

$ TRAPEZOIDAL CROSS-SECTION PARAMETER BO,BU,H POLY UPZ

VERT  1 #1/2 -#3/2 2  #2/2 #3/2

CURF 3

#enddef

 

PROG AQUA STEE   1   ST   37

SECT 1 ; LET#1 0.60,0.20,0.60

#include sect

SECT 2 ; LET#1 0.60,0.30,0.60

#include sect

SECT 3 ; LET#1 0.60,0.30,0.70

#include   sect END

  当在 UNIX 中插入文件时,用户需要特别注意文件名中的字母的大/小写。程序对旧格式$BLOCK BEG/ END/ SET 仍然支持,但不应再使用。

10.4 APPLY - 计算过程中数据的整合

  使用APPLY命令,文件可以包含在输入数据集中的两个块之间的任何位置,但不包含在模块内。 该文件应包含一个或多个调用+ PROG的模块。

  使用#INCLUDE(参见10.3节:#INCLUDE - 块定义),数据在计算之前会被插入到数据集中,在计算过程中执行APPLY命令,即可以在计算过程中生成数据,然后将其插入正确的位置。

  另外APPLY用符号+/-来控制,即+ APPLY执行命令,其中-APPLY将被跳过。

  CSM程序(施工阶段管理器)是使用APPLY的典型案例。 使用CSM创建一个文件$(NAME)_csm.dat。 该文件与APPLY一起插入到计算中。

+PROG   CSM

... END

+APPLY $(NAME)_csm.dat $  contains  at  least  one  +PROG

+PROG  ASE

... END

10.5 #IF - 条件输入

  通过使用 IF THEN ELSE 语句,较大的输入块可以被插入和删除。该语句不但比 CADINP中的 IF 语句更为复杂,但一些程序的调用可以在一个块中进行。 

  相关的控制语句与 C 语言中控制语句较为类似。例如: 

#if expression

任意语句,包括PROG和SYS

#else

任意语句,包括PROG和SYS

  “expression”可以仅是块或变量的名称,如果定义不为空集且不等于零,则对其值为真。但它也可以是一个比较$(MODE)==   EC或$(MODE)<>   EC或$(MODE)>   3。 词法上而言,该比较是纯粹基于字符串的。例如,A<B, A<BA, 10<18, 10.0>12。

  若“expression”不为真,将跳过第一个块,将使用#else后的块。如不需要,可省略第二个块。 

该创建最多可以嵌套32层。一个无心的#else或#ENDIF指令不但会导致错误,也会使得 构建未完成。 

例如:

#define DOAQB=0

#if DOAQB

PROG AQB

HEAD .....

LC .....

DESI   ..... END

#endif

 

PROG STAR2 HEAD .....

#if DOAQB

$  Design  with  AQB

#else

DESI .....

#endif

..... END

  缩进仅用于可读性。 在上面的例子中,STAR2用于设计。 如果DOAQB = 1,则AQB用于设计任务。

10.6 模板

  一种特殊形式的输入文件称为模板。 这些文件的结构如下:

#DEFINE L1=10.0

#DEFINE L2=20.0

#DEFINE L3=30.0

#DEFINE P=12.0

 

PROG TEMPLATE (或者其他程序名)

LET#L1 $(L1)

LET#L2 $(L2) LET#L3 $(L3)

LET#L #L1+#L2+#L3

TXA   Introduction

<TEXT>

  如下为一个三跨连续梁的分析:

L1 = <EDIT:L1>$(L1)</EDIT>

L2 =  <EDIT:L2>$(L2)</EDIT> L3 = <EDIT:L3>$(L3)</EDIT> SUM  =  #(L,10.2)

</TEXT>

<PICT>

....

</PICT>

PROG   AQUA

紧接所有数据

  在许多情况下,这如同一个只包括分析序言的普通数据集。它被总结在一个名为模板的特 殊程序下。模板的输入仅限于文本、图片以及数学表达式。 这个机制是普遍适用于所有程序的。 

  在报告浏览器中,用户可以更改选定的参数并重新分析给定的模块。其他用户则可以直接使用这些复杂的宏,从而仅需定义较少的参数。 

 10.7 多模块的迭代分析

  对材料非线性的二阶理论都考虑在程序 STAR2/AQB 之中。然而,STAR2 程序中只有一种能计算配筋的方法。用不同方法的计算可以通过 AQB 和 STAR2 之间的迭代来实现。迭代过程由 PROG 命令下的参数 ITER 进行控制。 

PROG STAR2 一阶理论中的第一步

CTRL I 工况的定义

LC .... END

PROG AQB ITER parm 由空格分开的参数

BEAM ....; LC.... 分析设计中所针对的第一组单元

ULTI ....; NSTR.... END

BEAM ....; LC.... 分析设计中所针对的第二组单元

ULTI ....; NSTR.... END

PROG STAR2 ITER parm HEAD ....

CTRL II 1 END

  迭代的次数是由参数 ITER 控制(如 ITER 30),其默认值为 20 次。

  对于其他组合的通用模块,该机制已经扩展到第23次。如要终止迭代,则需要使用 CADINP 中的 EXIT_ITERATION 指令。 

PROG   TEMPLATE

STO#TARGET 0 ; STO#PARAM 1.0 PROG AQUA ITER

RCL#PARAM

QNR  ....           使用#PARAM定义段

PROG AQB ITER

BEME  .... 设计并保存结果

ENDE

@KEY / LET# TARGET ... 计算目标函数为零

IF ABS(#TARGET) < 0.001 EXIT_ITERATION

ELSE

STO#PARAM     新目标值

ENDIF

 10.8 操作系统指令

  任何在 shell 中的命令都可以集成到分析当中。对参数的替换也可使用这些指令,例如字符串$(NAME)被输入或输出文件的基本名称所替代,而$(PROJECT)则被项目名称替换。

*SYS command 当末尾的PROG行被激活时,指令才会在批处理文件中被执行

+SYS command 在所有批处理文件中的指令都将被执行

-SYS command 指令不会被执行,尾随*SYS的指令不被激活

  例如:

+SYS del $(PROJECT).$D1 删除刚度矩阵

+SYS wait name.exe parameter WPS 将使得其它模块的运行一直等待,直到采用”+SYS -等待的 name.exe”启动的程 序继续终止运行为止 

10.9 记录

  在使用多个独立程序进行一个时程分析时,重建将会变得非常重要。因此,SPS 为己生成的输入文件增加了一些辅助信息。该信息由一个环境变量控制:  

SET PSJOBINFO=n 

n = 0 无信息

n = 1 文件名和数据 (only in data echo)

n = 2 与1类似,包括工作序号 (only in data echo) n = 3 与 2 类似, 但额外生成题头 

  该变量的默认值为 2,工作序号需由 8 字母和 1 个数字组成并被保存在一个 PSJOBNR 文 件当中。在多用户环境下,如访问冲突的情况,PSJOBNR 则需存储在当前文件目录下。

PSJOBNR 例子:

PROG   AQUA

$ Datafile: D:\STATIC\P00\DAT0.DAT (.#01) 14:48:48 25/05/95 HEAD .....

PROG   AQUA

$ Datafile: D:\STATIC\P00\DAT0.DAT   (.#01)                25/05/95

$ Jobnumber: PC-Nr:17/8700063 14:48:48 

HEAD .....

  当 PSJOBINFO= 2 或更高时,则需要 PSJOBNR 文件。其中前 8 列可包含任何想要的 文本。如果 SPS 未找到 PSJOBNR 文件,它将会在本地目录中创建一个。 

10.10 启动单个程序

  如果输入文件己经包含了所有的参数替换,用户则可以直接启动某项程序。如需从一个正常的输入文件创建一个解析文件,可以通过 WPS 使用以下方式:

#endif File > 保存解析文件...

  如果要保存完整的解析文件或者通过

File > 保存解析模块:name ...

如仅有一个模块需要被解析时,对模板的选择可以通过 WPS-树。

 blob.png

10.1: 启动单个程序

  某单个程序的启动则通过以下:

  program filename [ -parm] [ projekt]

  "filename"既为输入文件的名称,也指定了输出文件的基本名称。如果一个名称中包含空 格,则必须用"符号结束。Porject 为数据库的名称。通常,在一般的相同参数用于 SPS 中使用 的参数。一些额外的参数,但补充说。例如在控制时,什么类型的图元文件是要创建和现有的 元文件是否被附加或删除。 

  如不使用任何参数而开始分析一个程序,该程序仅会显示其名称,版本号以及可能的参数 列表。用户会被要求指明输入文件的名称。一个空的输入文件(或 Return 键)将立即结束该 程序。该步骤可以用于测试程序的完整性。ERR 文件的版本以及许可都将进行检查。 

10.11 特殊情况下的启动

  特殊情况下,用户可以从一个 shell 命令、通过指定以下的参数行来启动程序:

blob.png

0 个评论

要回答文章请先登录注册