后处理---abaqus如何分别查看X、Y、Z三个方向的应力场分布
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后处理---abaqus如何分别查看X、Y、Z三个方向的应力场分布相关的知识,希望对你有一定的参考价值。
模型计算完成后得到了整体的应力场,请问如何分别查看沿X、Y、Z方向的应力场分布?新手还望不吝赐教,谢谢!
参考技术A s11,s22,s33就是。s12,s13,s23是xy,xz,yz平面内的切应力,都可以看的 参考技术B X、Y、Z分别与S11、S22、S33对应 参考技术C 看看,以前对这个也有过困扰 参考技术D 1 是X 2 是y 3是 zHDU- 4000 Fruit Ninja(树状数组)
题目大意
给出一串数字,是1到n的一种排列,找出 x<z<y 的三个数字的个数(在数列中x,y,z按顺序出现)
分析
刚刚拿到题目,就有一种树状数组处理比当前数字大或者小的感觉,一开始我锁定了y,在y的右边和左边分别找到比y小的数字,然而这样只能保证 z<y,x<y,不能保证x<z。所以最终获得的三个数字会有x<z<y,与z<x<y两种可能。筛去z<x<y并不好处理。
所以:
如果锁定x寻找右边比x大的数字,可以得到x<y<z,以及x<z<y两种可能。x<y<z可通过固定y寻找左边比它小,右边比它大来计数的方法直接筛去。
注意乘法时候的数据范围。
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define MAX_NUM 100005 #define modd 100000007 #define lowbit(q) (q)&(-(q)) typedef long long int LL; int c[MAX_NUM]; void update(int i ){ for (int j = i ; j <= 1e5 ; ){ c[j] ++ ; j += lowbit(j); } } int query(int i){ int sum = 0; while(i){ sum += c[i]; i -= lowbit (i); } return sum ; } LL num[MAX_NUM]; LL pre[MAX_NUM]; LL las[MAX_NUM]; int main(int argc, char const *argv[]) { int t; scanf("%d",&t); int vs = 0; while(t--){ int n; scanf("%d",&n); LL ans = 0; memset(c,0,sizeof(c)); for(int i = 1 ; i <= n; i++){ scanf("%lld",&num[i]); pre[i] = query(num[i]-1); update(num[i]); } memset(c,0,sizeof(c)); for(int i = n ; i >0 ; i--){ las[i] = (n-i) - query(num[i]); ans =(ans + (las[i]*(las[i]-1))/2 - (pre[i]*las[i]) )%modd; update(num[i]); } printf("Case #%d: %lld\n",++vs,ans ); } return 0; }
以上是关于后处理---abaqus如何分别查看X、Y、Z三个方向的应力场分布的主要内容,如果未能解决你的问题,请参考以下文章
您能将关于abaqus如何输出荷载位移曲线步骤说的详细点么?我是新手~急~~~~~
C语言,输入三个整数,X, Y,Z,请把这三个数有小到大输出
三个正数 x、y、z 的组合,使得 x + y、x - y、y + z、y - z、x + z 和 x - z 是完全平方