1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
*DECK RODTYP
SUBROUTINE RODTYP(IPMAP,NGRP,MAXMIX,RNAME,INS,HMIX,RMIX,NUMMIX)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Store rod parameters in the fuelmap
*
*Copyright:
* Copyright (C) 2017 Ecole Polytechnique de Montreal.
*
*Author(s):
* G. Tixier
*
*Parameters: input
* IPMAP pointer to the fuel map
* NGRP number of rod groups
* MAXMIX maximum number of rod mix
* RNAME name of rod group
* INS rod insertion for each rod group
* HMIX height of rod mix (if more than 2 rod mix are defined)
* RMIX number associated to rod mix
* NUMMIX number of rod mix for each rod group
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
TYPE(C_PTR) IPMAP
INTEGER NGRP,MAXMIX,NUMMIX(NGRP)
REAL HMIX(NGRP*MAXMIX),RMIX(NGRP*MAXMIX),INS(NGRP)
CHARACTER(LEN=3) RNAME(NGRP)
*----
* LOCAL VARIABLES
*----
INTEGER I,J,INSM
REAL FLOT
TYPE(C_PTR) MPMAP
CHARACTER TEXT*3
DOUBLE PRECISION DFLOT
*
MPMAP=LCMGID(IPMAP,'ROD-INFO')
CALL LCMGET(MPMAP,'INS-MAX',INSM)
I=1
CALL REDGET(ITYP,NITMA,FLOT,TEXT,DFLOT)
IF(ITYP.NE.3)CALL XABORT('@RODTYP: CHARACTER DATA EXPECTED.')
DO WHILE (I.LE.NGRP)
J=1
RNAME(I)=TEXT
CALL REDGET(ITYP,NITMA,INS(I),TEXT,DFLOT)
IF(ITYP.NE.2)CALL XABORT('@RODTYP: REAL DA'
1 //'TA FOR INS EXPECTED.')
IF(INS(I).GT.INSM)CALL XABORT('@RODTYP: ROD INSERTION IS '
1 //'LARGER THAN MAXIMUM INSERTION.')
IF(INS(I).LT.0)CALL XABORT('@RODTYP: ROD INSERTION MUST BE '
1 //'POSITIVE.')
CALL REDGET(ITYP,NITMA,RMIX(I+(J-1)*NGRP),TEXT,DFLOT)
IF(ITYP.NE.2)CALL XABORT('@RODTYP: REAL DA'
1 //'TA FOR MIX EXPECTED.')
CALL REDGET(ITYP,NITMA,FLOT,TEXT,DFLOT)
DO WHILE (ITYP.NE.3)
HMIX(I+(J-1)*NGRP)=FLOT
IF((J.GE.2).AND.(HMIX(I+(J-2)*NGRP).GT.HMIX(I+(J-1)*NGRP)))
> CALL XABORT('@RODTYP: THE LENGTH OF THE TOP MATERIAL MUST'
1 //'BE HIGHER THAN THE BOTTOM MATERIAL.')
J=J+1
CALL REDGET(ITYP,NITMA,RMIX(I+(J-1)*NGRP),TEXT,DFLOT)
IF(ITYP.NE.2)CALL XABORT('@RODTYP: REAL DATA FOR MIX '
1 //'EXPECTED.')
CALL REDGET(ITYP,NITMA,FLOT,TEXT,DFLOT)
END DO
NUMMIX(I)=J
I=I+1
END DO
CALL LCMPTC(MPMAP,'ROD-NAME',3,NGRP,RNAME)
CALL LCMPUT(MPMAP,'ROD-INSERT',NGRP,2,INS)
CALL LCMPUT(MPMAP,'ROD-RIN',MAXMIX*NGRP,2,RMIX)
CALL LCMPUT(MPMAP,'ROD-NBZONE',NGRP,1,NUMMIX)
CALL LCMPUT(MPMAP,'ROD-HEIGHT',MAXMIX*NGRP,2,HMIX)
RETURN
END
|