姓名:郭 勇 学号:0220020128
人工地震波生成程序简介
一、 程序设计内容及方法
1、程序内容
本程序根据特征周期、水平地震波影响系数最大值和地震波幅值等初始条件生成人工地震波,为结构动力分析的时程分析法提供地震波来源。
2、程序设计方法
(1) 理论依据
本程序采用三角级数法生成人工地震波。
对于给定的功率谱密度函数S x (ω) ,按照下面的公式可以方便的生成以
S x (ω) 为功率谱密度函数、均值为零的高斯平稳过程a (t ) 。
N
式中:
a (t ) =
∑C
k =1
k
cos(ωk t +ϕk ) (1)
⎫
C k =[4S x (ωk ) ∆ω]⎪
⎪
∆ω=(ωu -ωl ) /N ⎬ (2)
⎪1
ωk =ωl +(k -) ∆ω⎪
2⎭
2
ϕk 为(0,2π) 内均匀分布的随机相角;ωu ,ωl 分别为正ω域内的上、下限值,即
认为S x (ω) 的有效功率在(ωu , ωl ) 范围内,而范围外的S x (ω) 值可视为零。
为了反映地面运动的非平稳性,采用包络函数f (t ) 乘以平稳过程a (t ) ,
(3)式即为人工地震波模型。
f (t ) 可根据下式确定:
x (t ) =f (t ) a (t ) (3)
⎧t 2/t 12⎪⎪1
f (t ) =⎨-c (t -t )
2
⎪e ⎪0⎩
0≤t
(4)
式中:c 为衰减系数,通常取值范围为0.1~1.0,本程序取0.15;t 1,t 2和t 3根据不同实际情况取值,T 为地震波持时,本程序取t 1,t 2分别为4s ,15s ,t 3和T 均为40s 。
本程序采用《建筑抗震设计规范》(GB50011-2001)中的反应谱作为目标谱,通过Kaul 提出的平稳过程反应谱与功率谱的近似关系
S x (ωk ) =
2ξ
[S a (ωk )]/[-2ln(-
T
2
πωk T d
πωk
ln p )] (5)
式中:S a T (ωk ) 为规范反应谱;ξ为阻尼比;T d 为地震动持时;p 为反应不超过反应谱值的概率,本程序取0.85。通过(3)式和(5)式即可生成人工地震波。
(2) 程序实现方法
首先建立基于对话框的应用程序框架,添加的主要控件为3个编辑框和4个按钮。3个编辑框分别作为程序中的特征周期(对应成员变量为m_dTg)、水平地震影响系数最大值(对应成员变量为m_dAmax)和地震波幅值(对应成员变量为m_pd)3个数据的交互输入处;4个按钮分别为“生成地震波”、“输出地震波”、“输入地震波”和“退出”。
添加的成员函数有:Wavegener()(生成地震波) 、Wavedrawing()(绘制地震波加速度时程曲线) 、OnSTART()(对应“生成地震波”按钮,实现生成地震波的功能) 、OnOutput()(对应“输出地震波”按钮,实现输出数字化的地震波记录的功能) 和OnInput(对应“输入地震波”按钮,实现输入数字化的地震波记录并绘制其加速度时程曲线的功能) 。
几点说明:
a 生成随机相角的程序如下: srand((unsigned)time( NULL ));
for(loop=0;loop
{
int temp=rand();
temp=temp%6282+1;
adFi[loop]=double(temp)/1000; }
在调用rand()函数之前调用srand( (unsigned)time( NULL )) ,这样以time 函数值(即当前时间)作为种子数,因为两次调用rand 函数的时间通常是不同的,这样可以每次产生的随机数序列不同。
b 关于绘制地震波加速度时程曲线图:
采用Brush 填充绘图区域背景,用Pen 绘制坐标及时程曲线,用Font 输出文字,其中纵坐标的最大值采用动态输出——先得到所绘制地震波的幅值,将其转换为Cstring 型,然后输出。
c 关于数据输出和输入
分别使用ofstream 类和ifstream 类输出和输入数据。 foutfor(int loop=0;loop
foutfout.close();
从上面的这段程序可看出,输出数据文件的第一行是“t ”,地震波加速度幅值对应的时间,“a ”,地震波幅值,从第二行起每行是一个时间及这个时间对应的地震波加速度幅值。
二、实例
本节通过一实例说明程序的使用方法。
例:某地区抗震设防烈度为8度,设计基本地震加速度为0.20g ,设计地震分组为第一组,II 类场地,利用本程序生成多遇地震人工地震波。
通过初始条件可知特征周期为0.35,水平地震影响系数0.16,地震加速度时程曲线最大值70gal 。将上述数据填入程序中初始条件的3个编辑框中,点击“生成地震波”按钮,则可生成地震波,程序会自动绘制加速度时程曲线(图1) 。
点击“输出地震波”按钮,则可将人工地震波加速度记录按数字化的形式保存在文件中,可以用“记事本”或“Word ”等程序打开文件(图2) 。数据记录第一行表示在12.24秒时,人工地震波加速度具有最大值70gal(或-70gal) ,以下各行分别为时间及其对应的人工地震波加速度。
点击“输入地震波”按钮,打开一个已生成的人工地震波加速度数据记录,则程序会自动绘制人工地震波加速度时程曲线。
图
1
图2
姓名:郭 勇 学号:0220020128
人工地震波生成程序简介
一、 程序设计内容及方法
1、程序内容
本程序根据特征周期、水平地震波影响系数最大值和地震波幅值等初始条件生成人工地震波,为结构动力分析的时程分析法提供地震波来源。
2、程序设计方法
(1) 理论依据
本程序采用三角级数法生成人工地震波。
对于给定的功率谱密度函数S x (ω) ,按照下面的公式可以方便的生成以
S x (ω) 为功率谱密度函数、均值为零的高斯平稳过程a (t ) 。
N
式中:
a (t ) =
∑C
k =1
k
cos(ωk t +ϕk ) (1)
⎫
C k =[4S x (ωk ) ∆ω]⎪
⎪
∆ω=(ωu -ωl ) /N ⎬ (2)
⎪1
ωk =ωl +(k -) ∆ω⎪
2⎭
2
ϕk 为(0,2π) 内均匀分布的随机相角;ωu ,ωl 分别为正ω域内的上、下限值,即
认为S x (ω) 的有效功率在(ωu , ωl ) 范围内,而范围外的S x (ω) 值可视为零。
为了反映地面运动的非平稳性,采用包络函数f (t ) 乘以平稳过程a (t ) ,
(3)式即为人工地震波模型。
f (t ) 可根据下式确定:
x (t ) =f (t ) a (t ) (3)
⎧t 2/t 12⎪⎪1
f (t ) =⎨-c (t -t )
2
⎪e ⎪0⎩
0≤t
(4)
式中:c 为衰减系数,通常取值范围为0.1~1.0,本程序取0.15;t 1,t 2和t 3根据不同实际情况取值,T 为地震波持时,本程序取t 1,t 2分别为4s ,15s ,t 3和T 均为40s 。
本程序采用《建筑抗震设计规范》(GB50011-2001)中的反应谱作为目标谱,通过Kaul 提出的平稳过程反应谱与功率谱的近似关系
S x (ωk ) =
2ξ
[S a (ωk )]/[-2ln(-
T
2
πωk T d
πωk
ln p )] (5)
式中:S a T (ωk ) 为规范反应谱;ξ为阻尼比;T d 为地震动持时;p 为反应不超过反应谱值的概率,本程序取0.85。通过(3)式和(5)式即可生成人工地震波。
(2) 程序实现方法
首先建立基于对话框的应用程序框架,添加的主要控件为3个编辑框和4个按钮。3个编辑框分别作为程序中的特征周期(对应成员变量为m_dTg)、水平地震影响系数最大值(对应成员变量为m_dAmax)和地震波幅值(对应成员变量为m_pd)3个数据的交互输入处;4个按钮分别为“生成地震波”、“输出地震波”、“输入地震波”和“退出”。
添加的成员函数有:Wavegener()(生成地震波) 、Wavedrawing()(绘制地震波加速度时程曲线) 、OnSTART()(对应“生成地震波”按钮,实现生成地震波的功能) 、OnOutput()(对应“输出地震波”按钮,实现输出数字化的地震波记录的功能) 和OnInput(对应“输入地震波”按钮,实现输入数字化的地震波记录并绘制其加速度时程曲线的功能) 。
几点说明:
a 生成随机相角的程序如下: srand((unsigned)time( NULL ));
for(loop=0;loop
{
int temp=rand();
temp=temp%6282+1;
adFi[loop]=double(temp)/1000; }
在调用rand()函数之前调用srand( (unsigned)time( NULL )) ,这样以time 函数值(即当前时间)作为种子数,因为两次调用rand 函数的时间通常是不同的,这样可以每次产生的随机数序列不同。
b 关于绘制地震波加速度时程曲线图:
采用Brush 填充绘图区域背景,用Pen 绘制坐标及时程曲线,用Font 输出文字,其中纵坐标的最大值采用动态输出——先得到所绘制地震波的幅值,将其转换为Cstring 型,然后输出。
c 关于数据输出和输入
分别使用ofstream 类和ifstream 类输出和输入数据。 foutfor(int loop=0;loop
foutfout.close();
从上面的这段程序可看出,输出数据文件的第一行是“t ”,地震波加速度幅值对应的时间,“a ”,地震波幅值,从第二行起每行是一个时间及这个时间对应的地震波加速度幅值。
二、实例
本节通过一实例说明程序的使用方法。
例:某地区抗震设防烈度为8度,设计基本地震加速度为0.20g ,设计地震分组为第一组,II 类场地,利用本程序生成多遇地震人工地震波。
通过初始条件可知特征周期为0.35,水平地震影响系数0.16,地震加速度时程曲线最大值70gal 。将上述数据填入程序中初始条件的3个编辑框中,点击“生成地震波”按钮,则可生成地震波,程序会自动绘制加速度时程曲线(图1) 。
点击“输出地震波”按钮,则可将人工地震波加速度记录按数字化的形式保存在文件中,可以用“记事本”或“Word ”等程序打开文件(图2) 。数据记录第一行表示在12.24秒时,人工地震波加速度具有最大值70gal(或-70gal) ,以下各行分别为时间及其对应的人工地震波加速度。
点击“输入地震波”按钮,打开一个已生成的人工地震波加速度数据记录,则程序会自动绘制人工地震波加速度时程曲线。
图
1
图2