1 jones 1.1 subroutine me_db_replace (var, me, line, order, index)
2 *
3 * This routine will replace a matrix element with the new one
4 *
5 * var is matrix element structure to use
6 * me is the values to use
7 * line is the line number in the file
8 * index is an array of the initial variable indices
9 *
10 * 21-May-94, Pat Welch, Oregon State University (tpw@physics.orst.edu)
11 * 30-Jan-95, TPW modified to use me_db_replace and orders<-1
12 *
13 implicit none
14
15 include 'db.inc'
16
17 record /ofp_targ/ var
18 record /element/ me
19 integer line, index(MAX_ORDER), order
20
21 integer i1, i2, i3, i4, i5, i6
22 jones 1.1
23 i1 = index(1)
24 i2 = index(2)
25 i3 = index(3)
26 i4 = index(4)
27 i5 = index(5)
28 i6 = index(6)
29
30 if (order .eq. -2) then
31 call me_db_replace_set(fp_ofp.x_det, me)
32 else if (order .eq. -3) then
33 call me_db_replace_set(fp_ofp.y_det, me)
34 else if (order .eq. -4) then
35 call me_db_replace_set(fp_ofp.theta_det, me)
36 else if (order .eq. -5) then
37 call me_db_replace_set(fp_ofp.z, me)
38 else if (order .eq. -6) then
39 call me_db_replace_set(fp_ofp.theta, me)
40 else if (order .eq. -7) then
41 call me_db_replace_set(fp_ofp.phi, me)
42 else if (order .eq. -8) then
43 jones 1.1 call me_db_replace_set(targ_slit.drift, me)
44 else if (order .eq. -9) then
45 call me_db_replace_set(fp_ofp.ang_slope_x, me)
46 else if (order .eq. -10) then
47 call me_db_replace_set(fp_ofp.ang_slope_y, me)
48 else if (order .eq. -11) then
49 call me_db_replace_set(fp_ofp.ang_offset_x, me)
50 else if (order .eq. -12) then
51 call me_db_replace_set(fp_ofp.ang_offset_y, me)
52 else if (order .eq. 0) then
53 call me_db_replace_set(var.me0, me)
54 else if (order .eq. 1) then
55 call me_db_replace_set(var.me1(i1), me)
56 else if (order .eq. 2) then
57 call me_db_replace_set(var.me2(i1,i2), me)
58 else if (order .eq. 3) then
59 call me_db_replace_set(var.me3(i1,i2,i3), me)
60 else if (order .eq. 4) then
61 call me_db_replace_set(var.me4(i1,i2,i3,i4), me)
62 else if (order .eq. 5) then
63 call me_db_replace_set(var.me5(i1,i2,i3,i4,i5), me)
64 jones 1.1 else if (order .eq. 6) then
65 call me_db_replace_set(var.me6(i1,i2,i3,i4,i5,i6), me)
66 else
67 write (*,*) ' Matrix element order too large, ', order
68 write (*,*) ' in line # ', line
69 endif
70
71 return
72 end
73
74 subroutine me_db_replace_set (var, me)
75
76 implicit none
77
78 include 'db.inc'
79
80 record /element/ var
81 record /element/ me
82
83 var.value = me.value
84 var.error = me.error
85 jones 1.1 var.lower = me.lower
86 var.upper = me.upper
87 var.set = .TRUE.
88 var.modified = .FALSE.
89
90 end
|