Manuals and books on Fortran, which compiles Intel Visual Fortran Compiler for Windows?

Manuals and books on Fortran, which compiles Intel Visual Fortran Compiler for Windows?

Hello. Inform, please, some links, where it is possible to download the manuals and books on language Fortran, which compiles Intel Visual Fortran Compiler for Windows. Thanks.

专区: 

主题线索: 

Help Me
15 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项

I acquired the book recently:

Zia Javanbakht, Andreas Öchsner. Advanced Finite Element Simulation with MSC Marc. Application of User Subroutines. – Springer International Publishing AG, 2017. 333 pages.

In this book to Preface it is written:

The instructions provided in this book relate to the MSC Marc/Mentat 2014.2.0 (64 bit) version under Microsoft Windows OS and the Intel XE 2013 FORTRAN (update 5) compiler (also known as Intel FORTRAN version 13).

Question: in this book, in paragraph 4.2.3 USPLIT_MESH, somebody checked the Example 4.3 for existence of errors in the presented listing on Fortran and operability in Marc of the project, submitted in fig. 4.4? 

Your questions should be addressed to the authors of the book and/or MSC Marc vendors/user forums.If the code in question is short and may be displayed here (there is a separate Intel forum for Visual Fortran on Windows), you may ask about difficulties in compiling it. Even then, questions regarding the functioning of the code can only be answered by someone familiar with Marc.

In the enclosed below listing on Fortran (taken from this book in paragraph 4.2.3 USPLIT_MESH, Example 4.3), the Intel XE 2013 FORTRAN (update 5) compiler will find errors or not? Thanks.

 

1 #INCLUDE ’ MarcTools . f ’

2

3 MODULE CommonData

4 IMPLICIT NONE

5

6 CHARACTER∗32 , PARAMETER : : SETNAME = ’ El eme n t L i s t ’

7 REAL∗8 , PARAMETER : : ySt ress = 210.D0

8

9 INTEGER , ALLOCATABLE : : e d g e L i s t ( : , : )

10 INTEGER : : edgeCount

11

12 REAL∗8 , ALLOCATABLE : : edgeStress ( : )

13 LOGICAL , ALLOCATABLE : : yMask ( : )

14 END MODULE CommonData

15

16 SUBROUTINE ubginc ( ubInc , ubIncsub )

17

18 USE CommonData

19 USE MarcTools

20

21 IMPLICIT NONE

22

23 ! ∗∗ St a r t of generated type statements ∗∗

24 INTEGER ubInc , ubIncsub

25 ! ∗∗ End of generated type statements ∗∗

27 INTEGER , PARAMETER : : MAXEDGE = 8

28

29 INTEGER , ALLOCATABLE , DIMENSION ( : ) : : e l L s t

30 INTEGER : : elNum

31

32 INTEGER , ALLOCATABLE , DIMENSION ( : , : ) : : curEdLst

33 INTEGER : : curEl , curEdNum

34

35 INTEGER , ALLOCATABLE , DIMENSION ( : , : ) : : orgEdLst

36 INTEGER : : orgEdNum

37

38 INTEGER , ALLOCATABLE , DIMENSION ( : , : ) : : r e fEdLst

39 INTEGER : : nRefEdLst

40

41 INTEGER : : i , j , k

42

43 IF ( ubInc .EQ. 0) THEN

44

45 CALL E x t r a c t S e t I t e m L s t (SETNAME, elLst , elNum)

46

47 IF ( elNum .GT . 0) THEN

48 ALLOCATE ( or g E d l s t (2 , elNum∗MAXEDGE) )

49 orgEdNum = 0

50

51 DO i = 1 , elNum

52 curEl = elLst ( i )

53 CALL ExtractElmEdgeLst ( curEl , curEdLst , curEdNum)

54 DO j = 1 , curEdNum

55 DO k = 1 , 2

56 orgEdLst ( k , orgEdNum + j ) = curEdLst ( k , j )

57 END DO

58 END DO

59 orgEdNum = orgEdNum + curEdNum

60 END DO

61

62 CALL Pu t Sma l l F i r s t ( orgEdLst , orgEdNum )

63 CALL DelRepeated2D ( orgEdlst , orgEdNum , r e f E d l s t , nRefEdLst )

64

65 CALL DelElmFreeEdge ( r e fEd l s t , nRefEdLst , e d g e L i s t )

66 edgeCount = s i z e ( edgeList , 2 )

67

68 Al l o c a t e ( edgeStress ( edgeCount ) )

69 Al l o c a t e ( yMask ( edgeCount ) )

70 yMask = . FALSE .

71 edgeStress = 0.D0

72 ELSE

73 CALL QUIT(1234)

74 END IF

75 END IF

76 RETURN

77 END

78

79 SUBROUTINE u s p l i t _me s h ( i c a l l , n o d e l i s t , n l i s t , i e d g e l i s t , n e d g e l i s t ,

80 $ i f a c e l i s t , n f a c e l i s t , inc , time , t imeinc )

81

82 USE CommonData

83 IMPLICIT NONE

84

85 ! ∗∗ St a r t of generated type statements ∗∗

86 INTEGER n o d e l i s t , n l i s t , i e d g e l i s t , n e d g e l i s t , i f a c e l i s t , n f a c e l i s t

87 INTEGER i c a l l , i n c

88 REAL∗8 time,timeinc

89 DIMENSION n o d e l i s t ( ∗ ) , i e d g e l i s t (2 , ∗ ) , i f a c e l i s t (4 , ∗ )

90 ! ∗∗ End of generated type statements ∗∗

91

92 INTEGER : : i , yEdNum

93 INTEGER , ALLOCATABLE , DIMENSION ( : ) : : y Index

94

95 IF ( i c a l l .EQ. 3) THEN

96 yMask = [ ( edgeStress ( i ) .GT. yStress , i =1 , edgeCount ) ]

97 yEdNum = COUNT( yMask )

98 ALLOCATE ( yIndex ,SOURCE=PACK ( [ ( i , i =1 , edgeCount ) ] , yMask ) )

99

100 nEdgeList = yEdNum

101 iEdgeLi s t ( : , 1 : yEdNum) = e d g e L i s t ( : , yIndex )

102 END IF

103 RETURN

104 END

105

106 SUBROUTINE uedinc ( inc , incsub )

107

108 USE CommonData

109 USE MarcTools , ONLY: GetElmEdgeVal

110 IMPLICIT NONE

111 ! ∗∗ St a r t of generated type statements ∗∗

112 INTEGER inc , i n c s u b

113 ! ∗∗ End of generated type statements ∗∗

114

115 INTEGER : : i

116

117 IF ( i n c .GT . 0 ) THEN

118 DO i = 1 , edgeCount

119 edgeStress ( i ) =

120 & GetElmEdgeVal ( edgeList ( 1 , i ) , edgeList ( 2 , i ) ,17 ,2)

121 WRITE ( 6 , ∗ ) edgeList ( 1 , i ) , ’ − ’ , edgeList ( 2 , i )

122 WRITE ( 6 , ∗ ) ’ s t r e s s ’ , edgeStress ( i )

123 END DO

124 END IF

125 RETURN

126 END

The process that you used for extracting source text from a PDF file has added hundreds of spurious space characters. The text has line numbers preceding each line. As a result, what you posted is not valid Fortran source code; the include file Marctools.f will be needed before compilation is attempted..

On the other hand, there is no requirement for a specific version or even any version of the Intel compiler at this stage. You can use any F95 or F2003 compiler on the source code, as long as you have MARC libraries that are compatible with that compiler.

In documentation, which can be loaded from the website MSC Software, syntax of the enclosed below file on Fortran for the Intel XE 2015 Fortran compiler (is also known as Intel Fortran version 15) for MSC.Marc, significantly differs from brought above from the book. From these two variants, where the correct syntax of Fortran for the Intel XE 2015 Fortran compiler? Thanks.

 

      subroutine usplit_mesh(icall,nodelist,nlist,iedgelist,nedgelist,

     $     ifacelist,nfacelist,inc,time,timeinc)

 

#ifdef _IMPLICITNONE

      implicit none

#else

      implicit logical (a-z)

#endif

      integer nodelist,nlist,iedgelist,nedgelist,ifacelist,nfacelist

      integer icall,inc

      real*8  time,timeinc

      dimension nodelist(*),iedgelist(2,*),ifacelist(4,*)

      integer num,i,alt

 

      if (icall.eq.1) then

        alt=3

 

c  alternative 1: specify a sequence of nodes

        if (alt.eq.1) then

          nlist=7

          num=0

          do i=57,63

            num=num+1

            nodelist(num)=i

          enddo

        elseif (alt.eq.2) then

c alternative 2: specify a list of edges in any order

          nedgelist=6

          iedgelist(1,1)=57

          iedgelist(2,1)=58

          iedgelist(1,2)=62

          iedgelist(2,2)=63

          iedgelist(1,3)=59

          iedgelist(2,3)=60

          iedgelist(1,4)=58

          iedgelist(2,4)=59

          iedgelist(1,5)=60

          iedgelist(2,5)=61

          iedgelist(1,6)=61

          iedgelist(2,6)=62

        elseif (alt.eq.3) then

c  3d: give a list of faces

          nfacelist=4

          ifacelist(1,1)=819

          ifacelist(2,1)=817

          ifacelist(3,1)=822

          ifacelist(4,1)=824

c    

          ifacelist(1,2)=817

          ifacelist(2,2)=57

          ifacelist(3,2)=58

          ifacelist(4,2)=822

c    

          ifacelist(1,3)=829

          ifacelist(2,3)=827

          ifacelist(3,3)=822

          ifacelist(4,3)=824

c

          ifacelist(1,4)=822

          ifacelist(2,4)=827

          ifacelist(3,4)=58

          ifacelist(4,4)=59

        endif

      endif

 

      return

      end

Quote:

valery z. wrote:
In documentation, which can be loaded from the website MSC Software, syntax of the enclosed below file on Fortran for the Intel XE 2015 Fortran compiler (is also known as Intel Fortran version 15) for MSC.Marc, significantly differs from brought above from the book. From these two variants, where the correct syntax of Fortran for the Intel XE 2015 Fortran compiler?

The code that you just posted is standard Fortran 77, except for the '#' preprocessor directives. Any Fortran compiler can compile this code, and there is no reason to look for "correct syntax for the Intel xx compiler". Any version of the Intel Fortran compiler for Windows can compile this code. So can other compilers such as G77, GFortran, MS Fortran, etc.

 

And the resulted above code on Fortran from the book, the Intel XE 2015 Fortran compiler can compile without errors? Thanks.

Yes. Whether Marc will work correctly with the .OBJ/DLL that is produced is, on the other hand, another question. As I said earlier, the compiler version is of almost no relevance.

S:\lang>ifort /c /fpp usplit.F
Intel(R) Visual Fortran Compiler XE for applications running on IA-32, Version 15.0.7.287 Build 20160518
Copyright (C) 1985-2016 Intel Corporation.  All rights reserved.

 

Many thanks for detailed answers.

In Marc with the Intel XE 2015 Fortran compiler there is the demonstration example e8x94c.dat on deformation of a plate. Without use of file u8x94c.f on Fortran with the method usplit_mesh, shown above, deformation of a plate is run without a splitting of faces of the hexagon finite elements. After adding file u8x94c.f, deformation of a plate is run with a splitting of faces (written above in code in the method usplit_mesh) of hexagon finite elements.

In file u8x94c.f is declared the method usplit_mesh with ten parameters, stated above. From the theory of programming it is known, that the method usplit_mesh is not run, until it is called with a task of certain values for all ten parameters, for example with the value “1” for the variable “icall”. At running of the demonstration example e8x94c.dat on deformation of a plate with use of file u8x94c.f with method usplit_mesh, somewhere is called the method usplit_mesh with the certain values for all ten parameters, but where is called, it is unknown.

What code should be written in the method usplit_mesh, shown above, to learn, where the method usplit_mesh is called? Thanks.

Those questions should be asked of the vendor of Marc or in a Marc users' forum. They are completely outside the scope of this forum (which is about licensing, downloading and installing Intel compilers).

Inform, please, some links, where it is possible to download the manuals and books on language Fortran, on which is written the presented above method usplit_mesh in the demonstration example e8x94c.dat from MSC.Marc and which compiles Intel Visual Fortran Compiler for Windows. Thanks.

can you help me with how to make the connection between marc 2016 and xe 2015?

Please see https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-fo...

If you need additional assistance, please create a new forum topic here: https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-fo...

 

Regards, Hal

Intel(R) Developer Zone Support

https://software.intel.com
*Other names and brands may be claimed as the property of other

 

Quote:

mech d. wrote:

can you help me with how to make the connection between marc 2016 and xe 2015?

Indicative instruction of installation of system “Marc 2016 + Intel XE 2015 Fortran compiler”:

1. Installation of Marc 2016.

2. Installation of Intel XE 2015 Fortran compiler.

3. We carry out: Marc, File, Import, Marc Input, and we import the Marc demonstration file e8x94c.dat (from folder Marc, 2016.0.0, marc2016, demo). In a graphic window, the plate appears. We add the file u8x94c.f to the Run Job panel, and we click the Submit button. In several seconds, the solution of a task comes to an end. After the choice of commands File, Results, Open Default, Monitor results file, the plate begins to be deformed with the splitting of the faces. To two files e8x94c.dat, u8x94c.f are added more the 6 files: *.mud, *_job1.dat, *_job1.log, *_job1.out, *_job1.sts, *_job1.t16, *_job1.t16.mud.

4. A typical error, which I faced: system "does not see" the *.f file. For correction of this error, it is necessary to reduce a way to this *.f file.

5. If at a run of point 3, the errors appeared, at first correct errors independently, and if it is impossible, write here.

6. After a solution of this test problem (e8x94c.dat + u8x94c.f), it is possible to start a solution of the task.

7. I solved the several test examples (*.dat + *.f) from folder Marc, 2016.0.0, marc2016, demo. But at me the solution of my engineering task in system “Marc 2016 + Intel XE 2015 Fortran compiler” did not turn out (you watch the link in post #16).

8. And what engineering problem you plan to solve in system “Marc 2016 + Intel XE 2015 Fortran compiler”?

Thanks.

发表评论

登录添加评论。还不是成员?立即加入