source: CIVL/examples/fortran/nek5000/core/vprops.f

main
Last change on this file was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100755
File size: 3.3 KB
Line 
1 subroutine vprops
2C-----------------------------------------------------------------------
3C
4C Set material properties
5C
6C Material type: 0 for default (PARAM and PCOND/PRHOCP)
7C 1 for constant props;
8C 2 for fortran function;
9C
10C-----------------------------------------------------------------------
11 include 'SIZE'
12 include 'INPUT'
13 include 'SOLN'
14 include 'TSTEP'
15 LOGICAL IFKFLD,IFEFLD
16C
17 if (nio.eq.0.and.loglevel.gt.2)
18 $ write(6,*) 'vprops', ifield
19
20 NXYZ1 = lx1*ly1*lz1
21 NEL = NELFLD(IFIELD)
22 NTOT1 = NXYZ1*NEL
23C
24 IF (ISTEP.EQ.0) THEN
25C
26C First time around, set defaults
27C
28 ifvarp(ifield) = .false.
29 if (iflomach) ifvarp(ifield) = .true.
30
31 if (.not.ifvarp(ifield)) then ! check all groups
32 do iel=1,nel
33 igrp = igroup(iel)
34 itype = matype(igrp,ifield)
35 if(itype.ne.0) ifvarp(ifield) = .true.
36 enddo
37 endif
38
39 itest = 0 ! test against all processors
40 if (ifvarp(ifield)) itest = 1
41 itest = iglmax(itest,1)
42 if (itest.gt.0) ifvarp(ifield) = .true.
43
44 endif
45C
46C Fill up property arrays every time step
47 DO 1000 IEL=1,NEL
48C
49 IGRP=IGROUP(IEL)
50
51 if (ifuservp) then
52C
53C User specified fortran function (pff 2/13/01)
54 CALL NEKUVP (IEL)
55 DIFMIN = VLMIN(VDIFF(1,1,1,IEL,IFIELD),NXYZ1)
56 IF (DIFMIN .LE. 0.0) THEN
57 WRITE (6,100) DIFMIN,IFIELD,IGRP
58 CALL EXITT
59 endif
60C
61 ELSE IF(MATYPE(IGRP,IFIELD).EQ.1)THEN
62C
63C Constant property within groups of elements
64C
65 CDIFF = CPGRP(IGRP,IFIELD,1)
66 CTRANS = CPGRP(IGRP,IFIELD,2)
67 CALL CFILL(VDIFF (1,1,1,IEL,IFIELD),CDIFF,NXYZ1)
68 CALL CFILL(VTRANS(1,1,1,IEL,IFIELD),CTRANS,NXYZ1)
69 IF (CDIFF.LE.0.0) THEN
70 WRITE(6,100) CDIFF,IFIELD,IGRP
71 100 FORMAT(2X,'ERROR: Non-positive diffusivity ('
72 $ ,G12.3,') specified for field',I2,', group',I2
73 $ ,' element',I4,'.'
74 $ ,/,'ABORTING in VPROPS',//)
75 CALL EXITT
76 endif
77C
78 ELSE IF(MATYPE(IGRP,IFIELD).EQ.2)THEN
79C
80C User specified fortran function
81C
82 CALL NEKUVP (IEL)
83C
84 if(optlevel.le.2) then
85 DIFMIN = VLMIN(VDIFF(1,1,1,IEL,IFIELD),NXYZ1)
86 IF (DIFMIN .LE. 0.0) THEN
87 WRITE (6,100) DIFMIN,IFIELD,IGRP
88 CALL EXITT
89 endif
90 endif
91C
92 ELSE IF(MATYPE(IGRP,IFIELD).EQ.0)THEN
93C
94C Default constant property
95C
96 CDIFF = CPFLD(IFIELD,1)
97 CTRANS = CPFLD(IFIELD,2)
98c write(6,*) 'vdiff:',ifield,cdiff,ctrans
99 CALL CFILL(VDIFF (1,1,1,IEL,IFIELD),CDIFF,NXYZ1)
100 CALL CFILL(VTRANS(1,1,1,IEL,IFIELD),CTRANS,NXYZ1)
101 IF (CDIFF.LE.0.0) THEN
102 WRITE(6,200) CDIFF,IFIELD
103 200 FORMAT(2X,'ERROR: Non-positive diffusivity ('
104 $ ,G12.3,') specified for field',I2,'.',/
105 $ ,'ABORTING in VPROPS',//)
106 CALL EXITT
107 endif
108 endif
109C
110 1000 CONTINUE
111C
112 return
113 end
114C
Note: See TracBrowser for help on using the repository browser.