Fortran语法介绍(三)

个人专栏—ABAQUS专栏

  1. Abaqus2023的用法教程——与VS2022、oneAPI 2024子程序的关联方法 Abaqus2023的用法教程——与VS2022、oneAPI 2024子程序的关联方法
  2. Abaqus有限元分析——有限元网格划分基本原则 Abaqus有限元分析——有限元网格划分基本原则
  3. 各向同性线弹性材料本构模型umat的应用 各向同性线弹性材料本构模型umat的应用
  4. ABAQUS用户子程序二次开发——UMAT介绍(一) ABAQUS用户子程序二次开发——UMAT介绍(一)
  5. Fortran语法介绍(一) Fortran语法介绍(一)
  6. Fortran语法介绍(二) Fortran语法介绍(二)
  7. Fortran语法介绍(三) Fortran语法介绍(三)

目录

  • 个人专栏—ABAQUS专栏
      • 矩阵运算与应用示例


  • 数学运算:Fortran可用的数学运算符号包括+,-,*,/,**,四则运算规则

    • 乘幂有限,乘除次之,加减最后以及()先算
    • 乘号不能省略
    • 整数间的出发结果为整数,不会自动转为浮点数
    • 不同类型数字间的运算,Fortran会将运算中的两数字形态转为精度较高者再做运算
    • 输入数字后加d0可将该数转为双精度浮点数
  • 逻辑运算符号包含:

    • ==或.eq.用于判断是否相等
    • /=或.ne.用于判断是否不等
    • >或.gt.用于判断是否大于
    • >=或.ge.用于判断是否大于或等于
    • <或.lt.用于判断是否小于
    • <=或.le.用于判断是否小于或等于
    • .and.连接两逻辑变量皆为真则为.true., 否则为.false.
    • .or.连接两逻辑变量其一为真则为.true., 否则为.false.
    • .not.用于否定连接其后的逻辑描述
    • .eqv.连接两逻辑变量相同则为.true.,否则为.false.
    • .neqv.连接两逻辑变量不相同则为.true., 否则为.false.
    • 逻辑运算的优先顺序由()内先算,逻辑判别次之,逻辑连接最后
  • 流程控制

      !if 语句基本语法if (逻辑判断式) then !程序区块开头!--------------------------------!!程序内容                         !!--------------------------------!end if                           !程序区块结尾 
C *** *******************************************************C!加入逻辑判断if (逻辑判断式) then !--------------------------------!!程序内容                         !!--------------------------------!else!--------------------------------!!候补程序内容                     !!--------------------------------!end if       
C *** *******************************************************C!搭配 else if 多重判断if (逻辑判断式1) then !--------------------------------!!程序内容1                         !!--------------------------------!else if (逻辑判断式2) then !--------------------------------!!程序内容2                     !!--------------------------------!else if (逻辑判断式n) then !--------------------------------!!程序内容n                     !!--------------------------------!else!--------------------------------!!候补程序内容                     !!--------------------------------!end if                  

若多重判断的条件是根据单一整数、字串或逻辑变量,可以使用select case使得程序更加简洁易读

        select case (变量)case (常数1)!--------------------------------!!程序内容1                         !!--------------------------------!case (常数2) !--------------------------------!!程序内容2                     !!--------------------------------!case (常数n) !--------------------------------!!程序内容n                     !!--------------------------------!case default!--------------------------------!!候补程序内容                     !!--------------------------------!end select       

循环语句

     do counter =Is,Ie,d_I          !Is为counter起始值,Ie为counter终止值,DI为counter增量!--------------------------------!!程序内容                         !!--------------------------------!end do
C *** *******************************************************Cdo while (逻辑判断式) !--------------------------------!!程序内容                         !!--------------------------------!end do

矩阵运算与应用示例

  • 加/减/乘/除
C *** ***********************CDO I=1,NDO J=1,NC(I,J)=A(I,J)+B(I,J)ENDDOENDDO
  • 矩阵相乘
    ( A B ) i k = ∑ j = 1 n a i j b j k = a i 1 b 1 k , a i 2 b 2 k , ⋯ , a i n b n k (AB)_{ik}=\sum_{j=1}^n a_{ij}b_{jk}=a_{i1}b_{1k},a_{i2}b_{2k},\cdots ,a_{in}b_{nk} (AB)ik=j=1naijbjk=ai1b1k,ai2b2k,,ainbnk
C *** ***********************CPROGRAM MATRIX_MULTIINTEGER ROW_A, COL_A, ROW_B, COL_B, A, B, C
C     不确定矩阵大小,先声明为极大矩阵DIMENSION A(100,100), B(100,100), C(100,100)
C     分别输入矩阵A、B的列数、行数,矩阵B的行数必须等于矩阵A的列数WRITE(*,*) "ENTER THE NUMBER OF THE ROWS FOR MATRIX A: "READ(*,*) ROW_AWRITE(*,*)  "ENTER THE NUMBER OF THE COLUMNS FOR MATRIX A: " READ(*,*) COL_AWRITE(*,*) "THE NUMBER OF ROWS FOR MATRIX B MUST BE & EQUAL TO THE NUMBER OF COLUMNS FOR MATRIX A "ROW_B=COL_AWRITE(*,*)  "ENTER THE NUMBER OF THE COLUMNS FOR MATRIX B: " READ(*,*) COL_B
C     输入矩阵A的数值DO I=1,COL_ADO J=1,ROW_AWRITE(*,10) J,I
10          FORMAT ("ENTER THE NUMBER OF A(",I2,",",I2,")")READ(*,*) A(J,I)ENDDOENDDO
C     输入矩阵B的数值DO I=1,COL_BDO J=1,ROW_BWRITE(*,20) J,I
20        FORMAT("ENTER THE NUMBER OF B(",I2,",",I2,")")  READ(*,*) B(J,I)ENDDOENDDO
C     显示矩阵B的数值WRITE(*,*) "MATRIXB="DO I=1,ROW_BWRITE(*,200) (B(I,J),J=1,COL_B)
200     FORMAT (100(I5))ENDDO
C     矩阵相乘运算DO I=1,ROW_ADO J=1,COL_BC(I,J)=0DO K=1,COL_AC(I,J)=C(I,J)+A(I,K)*B(K,J)ENDDOENDDOENDDO
C     输出相乘结果WRITE(*,*) "AB="DO I=1,ROW_AWRITE(*,300) (C(I,J),J=1,COL_B)
300     FORMAT(100(I5))ENDDOENDDO            
  • 向量内积
    A ⃗ = [ a 1 , a 2 , ⋯ , a n ] B ⃗ = [ b 1 , b 2 . ⋯ , b n ] A ⃗ B ⃗ = ∑ j = 1 n a j b j = a 1 b 1 + a 2 b 2 + ⋯ + a n b n \begin{gather*} \vec{A}=[a_1,a_2,\cdots,a_n]\\ \vec{B}=[b_1,b_2.\cdots,b_n]\\ \vec{A}\vec{B}=\sum_{j=1}^n a_jb_j=a_1b_1+a_2b_2+\cdots+a_nb_n \end{gather*} A =[a1,a2,,an]B =[b1,b2.,bn]A B =j=1najbj=a1b1+a2b2++anbn
C *** ***********************CPROGRAM INNER_PRODUCTREAL  A(100), B(100), C
C     输入向量的元素个数INTEGER NWRITE(*,*) "输入向量元素个数: "READ(*,*) N
C     输入向量A与向量B的数值WRITE(*,*) "输入A向量"DO I=1,NREAD(*,*) A(I)ENDDOWRITE(*,*) "输入B向量:"DO I=1,NREAD(*,*) B(I)ENDDO
C     计算向量内积C=0DO I=1,NC = C +A(I)*B(I)ENDDO
C     输出向量内积结果WRITE(*,10) C
10    FORMAT (1X,"A DOT B =",F8.2)END
  • 向量外积
    A ⃗ = a 1 i ⃗ + a 2 j ⃗ + a 3 k ⃗ B ⃗ = b 1 i ⃗ + b 2 j ⃗ + b 3 k ⃗ A ⃗ × B ⃗ = ( a 2 b 3 − a 3 b 2 ) i ⃗ + ( a 3 b 1 − a 1 b 3 ) j ⃗ + ( a 1 b 2 − a 2 b 1 ) k ⃗ \begin{gather*} \vec{A}=a_1\vec{i}+a_2\vec{j}+a_3\vec{k}\\ \vec{B}=b_1\vec{i}+b_2\vec{j}+b_3\vec{k}\\ \vec{A}\times \vec{B}=(a_2b_3-a_3b_2)\vec{i}+(a_3b_1-a_1b_3)\vec{j}+(a_1b_2-a_2b_1)\vec{k} \end{gather*} A =a1i +a2j +a3k B =b1i +b2j +b3k A ×B =(a2b3a3b2)i +(a3b1a1b3)j +(a1b2a2b1)k
C *** ***********************CPROGRAM OUT PRODUCTREAL A(3), B(3), CROSS(3)
C     输入向量A与向量B的数值WRITE(*,*) "输入A向量:"DO I=1,3READ (*,*) A(I)ENDDOWRITE(*,*) "输入B向量:"DO I=1,3READ (*,*) B(I)ENDDO
C     计算向量外积CROSS(1)=A(2)*B(3)-A(3)*B(2)CROSS(2)=A(3)*B(1)-A(1)*B(3)CROSS(3)=A(1)*B(2)-A(2)*B(1)
C     输出向量外积结果WRITE(*,*) "A CROSS B: "WRITE(*,10) (CROSS(I),I=1,3)
10    FORMAT (3(1X,F10.3))END

欢迎对Abaqus感兴趣的朋友们查看:Abaqus-UMAT开发精品书籍及umat子程序学习
在这里插入图片描述

Abaqus非线性粘弹性模型子程序umat——广义MAXWELL粘弹性模型umat解析(朱-王-唐本构模型)

在这里插入图片描述

如果你喜欢以上内容,或者对Abaqus学习有兴趣,欢迎收藏关注,博主将持续更新。你的关注、收藏是我持续创作的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《手把手教你》系列技巧篇(二十七)-java+ selenium自动化测试- quit和close的区别(详解教程)

1.简介 尽管有的小伙伴或者童鞋们觉得很简单&#xff0c;不就是关闭退出浏览器&#xff0c;但是宏哥还是把两个方法的区别说一下&#xff0c;不然遇到坑后根本不会想到是这里的问题。 2.源码 本文介绍webdriver中关于浏览器退出操作。driver中有两个方法是关于浏览器关闭&…

SQL28 计算用户8月每天的练题数量

&#x1f468;‍&#x1f4bb; 大唐coding&#xff1a;个人主页 &#x1f381; 个人专栏: 《力扣高频刷题宝典》《SQL刷题记录》 ⛵ 既然选择远方&#xff0c;当不负青春&#xff0c;砥砺前行&#xff01; 大家好&#xff0c;我是大唐&#xff0c;今天我们来做一道牛客题库SQL…

MySQL-----存储过程

▶ 介绍 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0c;…

C switch 语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case&#xff0c;且被测试的变量会对每个 switch case 进行检查。 语法 C 语言中 switch 语句的语法&#xff1a; switch(expression){case constant-expression :statement(s);break; /* 可选的 */ca…

C语言中的UTF-8编码转换处理

C语言UTF-8编码的转换 1.C语言简介2.什么是UTF-8编码&#xff1f;2.1 UTF-8编码特点&#xff1a; 3.C语言中的UTF-8编码转换处理步骤1&#xff1a;获取UTF-8编码的字节流步骤2&#xff1a;解析UTF-8编码步骤3&#xff1a;Unicode码点转换为汉字 4.总结 1.C语言简介 C语言是一门…

【面试精讲】Java线程6种状态和工作原理详解,Java创建线程的4种方式

Java线程6种状态和工作原理详解&#xff0c;Java创建线程的4种方式 目录 一、Java线程的六种状态 二、Java线程是如何工作的&#xff1f; 三、BLOCKED 和 WAITING 的区别 四、start() 和 run() 源码分析 五、Java创建线程的所有方式和代码详解 1. 继承Thread类 2. 实现…

Node-RED在Linux二次开发网关中能源数据实时采集与优化

智能电网与分布式能源系统已成为推动绿色能源转型的重要载体。为了更好地应对多样化的能源供给与需求挑战&#xff0c;以及实现更高效的能源管理&#xff0c;Linux二次开发网关与Node-RED这一创新组合应运而生。 Linux二次开发网关作为高度定制化的硬件平台&#xff0c;其开源特…

【深入理解LRU Cache】:缓存算法的经典之作

目录 一、什么是LRU Cache&#xff1f; 二、LRU Cache的实现 1.JDK中类似LRUCahe的数据结构LinkedHashMap 2.自己实现双向链表 三、LRU Cache的OJ 一、什么是LRU Cache&#xff1f; LRU Cache&#xff08;Least Recently Used的缩写&#xff0c;即最近最少使用&#xff0…

跨平台是什么意思?——跟老吕学Python编程

跨平台是什么意思&#xff1f;——跟老吕学Python编程 跨平台跨平台释义跨平台软件数据库管理系统(DBMS)&#xff1a;网站服务器、应用程序服务器&#xff1a;网络浏览器&#xff1a; 跨平台编程语言跨平台详细解说跨平台应用前景 跨平台 计算机领域术语 跨平台概念是软件开发中…

Zookeeper详解

1.Zookeeper概述 1.Zookeeper概念 Zookeeper是 Apache Hadoop 项目下的一个子项目&#xff0c;是一个树形目录服务 Zookeeper 翻译过来就是动物园管理员&#xff0c;他是用来管 Hadoop&#xff08;大象&#xff09;、Hive(蜜蜂)、Pig(小猪)的管理员。简称zk Hadoop: 存储海…

canvas实现水印逻辑分析

目录 效果图一、相关文档二、分析三、实现1、将水印文字转为水印图片2、给刚生成的水印图片加入旋转以及间隔&#xff08;1&#xff09;旋转位移&#xff08;2&#xff09;间隔位移&#xff08;3&#xff09;最后使用toDataURL导出为png图片 3、将生成的水印图片依次排布在需要…

【Python数据结构与判断2/7】数据和判断小结

目录 序言 print() 变量 赋值 四种数据类型 字符串 格式化输出 四则运算 取整与取模 比较运算 逻辑运算 判断 if语句 if-else语句 if-elif-else语句 Tips 空值、0、非0非空值 实战案例 输入密码 短信模板 总结 序言 今天将对前面学过的内容进行一个复习小结…

科技引领品质:飞利浦智能锁“12年免费换新机”重塑行业新标杆

随着智能锁行业的竞争愈发火热&#xff0c;各大品牌在技术创新和服务升级方面不断推陈出新。售后服务的形态正发生深刻变化&#xff0c;从传统的保修维修到如今的技术支持、24小时在线客服等&#xff0c;各大品牌都在不断地提升售后服务水平&#xff0c;以创新的服务理念和先进…

配置与管理DNS服务器

配置与管理DNS服务器 **1&#xff0c;什么是DNS&#xff1f;**负责将域名转换成实际想对应的ip地址&#xff0c;这个过程交域名解析。 **2&#xff0c;域名解析的方法&#xff1a;**分布式&#xff0c;层次结构的数据库系统。根域&#xff0c;顶级域&#xff0c;二级域&#…

sql注入基础学习

1.常用SQL语句 01、显示数据库 show databases&#xff1b; 02、打开数据库 use db name&#xff1b; 03、显示数据表 show tables&#xff1b; 04、显示表结构 describe table_name&#xff1b; 05、显示表中各字段信息&#xff0c;即表结构 show columns from table_nam…

面向对象的编程语言是什么意思?——跟老吕学Python编程

面向对象的编程语言是什么意思&#xff1f;——跟老吕学Python编程 面向对象是什么意思&#xff1f;面向对象的定义面向对象的早期发展面向对象的背景1.审视问题域的视角2.抽象级别3.封装体4.可重用性 面向对象的特征面向对象的开发方法面向对象程序设计基本思想实现 面向对象的…

数据结构-稀疏数组

文章目录 1、什么是稀疏数组&#xff1f;2、稀疏数组的存储流程3、代码实现4、运行结果 1、什么是稀疏数组&#xff1f; 当一个数组中大部分元素为0&#xff0c;或者为同一个值的数组时&#xff0c;可以使用稀疏数组来保存该数组。 2、稀疏数组的存储流程 记录数组一共有几行…

活体检测(点头,摇头,张嘴等动态识别)

活体检测&#xff08;点头&#xff0c;摇头&#xff0c;张嘴等动态识别&#xff09; 某本书里有一句话&#xff0c;等我去读、去拍案。 田间的野老&#xff0c;等我去了解、去惊识。 山风与发&#xff0c;冷泉与舌&#xff0c; 流云与眼&#xff0c;松涛与耳&#xff0c; 他们等…

21、状态模式(行为性模式)

版本一、get状态指针 #include <iostream> using namespace std;//前置声明 class Context;//状态 class State{ public://4个状态virtual void toUp (Context& context){ }virtual void toDown (Context& context){ }virtual void toLeft (Context& cont…

架构学习总结:企业架构=业务+数据+技术+应用架构

最近再次研读DAMA数据管理知识体系,结合工作对什么是企业架构?如何开展企业架构设计工作有一些新的认识,供大家参考。企业架构包括企业的业务架构、数据架构、技术架构和应用架构,要想做好企业的信息化数字化建设规划,这四个架构都不可缺少,这四个方面的内容共同组成了企…