版权声明:个人原创,转载请注明出处! https://blog.csdn.net/yxl_123456/article/details/88619418
import java.util.Scanner;
public class jbcs{
static int N;//单元数
static Double EI;//抗弯刚度
static Double EA;//轴向刚度
static Double α;//转角
static Double l;//杆件长度
static Double cos;
static Double sin;
static Double[][] T=new Double[6][6];//坐标转换转换
static Double[][] k_ii;
static int n=100;//结点位移数目
Double[][] KK = new Double[n][n];//单元贡献矩阵
Double[][] K_z =new Double[n][n];//整体刚度矩阵
Double[][] K_z1=new Double[n][n];
Double[][] K= new Double[6][6];//整体坐标系下的单元刚度矩阵
static int[] k= {0,0,0,0,0,0};//定位向量矩阵
public void kk(Scanner s) {
jbcs jb=new jbcs();
Double[][] k_ii= {{EA/l*Math.pow(cos, 2)+12*EI/Math.pow(l, 3)*Math.pow(sin, 2),(EA/l-12*EI/Math.pow(l, 3))*sin*cos,-6*EI/Math.pow(l, 2)*sin},
{(EA/l-12*EI/Math.pow(l, 3))*sin*cos,EA/l*Math.pow(sin, 2)+12*EI/Math.pow(l, 3)*Math.pow(cos, 2),6*EI/Math.pow(l, 2)*cos},
{-6*EI/Math.pow(l, 2)*sin,6*EI/Math.pow(l, 2)*cos,4*EI/l}};
Double[][] K= {{k_ii[0][0],k_ii[0][1],k_ii[0][2],-k_ii[0][0],-k_ii[0][1],k_ii[0][2]},
{k_ii[1][0],k_ii[1][1],k_ii[1][2],-k_ii[1][0],-k_ii[1][1],k_ii[1][2]},
{k_ii[2][0],k_ii[2][1],k_ii[2][2],-k_ii[2][0],-k_ii[2][1],k_ii[2][2]/2},
{-k_ii[0][0],-k_ii[1][0],-k_ii[2][0],k_ii[0][0],k_ii[0][1],-k_ii[0][2]},
{-k_ii[0][1],-k_ii[1][1],-k_ii[2][1],k_ii[1][0],k_ii[1][1],-k_ii[1][2]},
{k_ii[0][2],k_ii[1][2],k_ii[2][2]/2,-k_ii[2][0],-k_ii[2][1],k_ii[2][2]},
};
for(int i=0;i<6;i++) {
for(int j=0;j<6;j++) {
System.out.print(String.format("%6f",K[i][j])+" ");//输出整体坐标下的单元刚度矩阵
}
System.out.println();
}
System.out.println();
add(s);
for(int i=0;i<6;i++) {
for(int j=0;j<6;j++) {
if(k[i]!=0&&k[j]!=0) {
KK[k[i]-1][k[j]-1]=K[i][j];
}
}
}
System.out.println("其单元贡献矩阵:");
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
System.out.print(String.format("%6f",KK[i][j])+" ");
}
System.out.println();
}
System.out.println();
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
K_z[i][j]=K_z[i][j]+KK[i][j];
}
}
}
public void cs0(Scanner s) {
System.out.println("输入单元个数:");
N=s.nextInt();
System.out.println("输入位移个数:");
n=s.nextInt();
}
public void cs1(Scanner s) {
System.out.println("输入轴向刚度和抗弯刚度:");
EA=s.nextDouble();
EI=s.nextDouble();
}
public void cs(Scanner s) {
System.out.println("输入单元杆件长度:");
l=s.nextDouble();
System.out.println("输入转角的cos值:");
cos=s.nextDouble();
System.out.println("输入转角的sin值:");
sin=s.nextDouble();
}
public void add(Scanner s) {
System.out.println("输入该单元的定位向量:");
for(int i=0;i<6;i++) {
k[i]=s.nextInt();
}
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
KK[i][j]=0.0;
}
}
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
jbcs bas=new jbcs();
System.out.println("默认所有单元抗弯刚度和轴向刚度相同!!!");
bas.cs1(s);
bas.cs0(s);
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
bas.K_z[i][j]=0.0;
}
}
for(int i=0;i<N;i++) {
bas.cs(s);
System.out.println("整体坐标系下的第"+i+"单元刚度矩阵:");
bas.kk(s);
}
System.out.println("整体刚度矩阵:");
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
bas.K_z1[i][j]=bas.K_z[i][j];
System.out.print(String.format("%6f",bas.K_z[i][j])+" ");
}
System.out.println();
}
ReverseMartrix re = new ReverseMartrix();
re.main(args);
s.close();
}
}