1 // Copyright (C) 2005, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id$
6 //
7 // Authors:  Carl Laird, Andreas Waechter     IBM    2005-06-06
8 
9 #include "IpIteratesVector.hpp"
10 
11 namespace Ipopt
12 {
13 
IteratesVector(const IteratesVectorSpace * owner_space,bool create_new)14   IteratesVector::IteratesVector(const IteratesVectorSpace* owner_space, bool create_new)
15       :
16       CompoundVector(owner_space, create_new),
17       owner_space_(owner_space)
18   {
19     DBG_ASSERT(owner_space_);
20   }
21 
~IteratesVector()22   IteratesVector::~IteratesVector()
23   {}
24 
MakeNewIteratesVector(bool create_new) const25   SmartPtr<IteratesVector> IteratesVector::MakeNewIteratesVector(bool create_new) const
26   {
27     return owner_space_->MakeNewIteratesVector(create_new);
28   }
29 
MakeNewContainer() const30   SmartPtr<IteratesVector> IteratesVector::MakeNewContainer() const
31   {
32     SmartPtr<IteratesVector> ret = MakeNewIteratesVector(false);
33 
34     if (IsValid(x())) {
35       ret->Set_x(*x());
36     }
37     if (IsValid(s())) {
38       ret->Set_s(*s());
39     }
40     if (IsValid(y_c())) {
41       ret->Set_y_c(*y_c());
42     }
43     if (IsValid(y_d())) {
44       ret->Set_y_d(*y_d());
45     }
46     if (IsValid(z_L())) {
47       ret->Set_z_L(*z_L());
48     }
49     if (IsValid(z_U())) {
50       ret->Set_z_U(*z_U());
51     }
52     if (IsValid(v_L())) {
53       ret->Set_v_L(*v_L());
54     }
55     if (IsValid(v_U())) {
56       ret->Set_v_U(*v_U());
57     }
58 
59     return ret;
60 
61     // We may need a non const version
62     //     if (IsCompConst(0)) {
63     //       ret->Set_x(*x());
64     //     }
65     //     else {
66     //       ret->Set_x_NonConst(*x_NonConst());
67     //     }
68 
69     //     if (IsCompConst(1)) {
70     //       ret->Set_s(*s());
71     //     }
72     //     else {
73     //       ret->Set_s_NonConst(*s_NonConst());
74     //     }
75 
76     //     if (IsCompConst(2)) {
77     //       ret->Set_y_c(*y_c());
78     //     }
79     //     else {
80     //       ret->Set_y_c_NonConst(*y_c_NonConst());
81     //     }
82 
83     //     if (IsCompConst(3)) {
84     //       ret->Set_y_d(*y_d());
85     //     }
86     //     else {
87     //       ret->Set_y_d_NonConst(*y_d_NonConst());
88     //     }
89 
90     //     if (IsCompConst(4)) {
91     //       ret->Set_z_L(*z_L());
92     //     }
93     //     else {
94     //       ret->Set_z_L_NonConst(*z_L_NonConst());
95     //     }
96 
97     //     if (IsCompConst(5)) {
98     //       ret->Set_z_U(*z_U());
99     //     }
100     //     else {
101     //       ret->Set_z_U_NonConst(*z_U_NonConst());
102     //     }
103 
104     //     if (IsCompConst(6)) {
105     //       ret->Set_v_L(*v_L());
106     //     }
107     //     else {
108     //       ret->Set_v_L_NonConst(*v_L_NonConst());
109     //     }
110 
111     //     if (IsCompConst(7)) {
112     //       ret->Set_v_U(*v_U());
113     //     }
114     //     else {
115     //       ret->Set_v_U_NonConst(*v_U_NonConst());
116     //     }
117 
118     //    return ret;
119   }
120 
IteratesVectorSpace(const VectorSpace & x_space,const VectorSpace & s_space,const VectorSpace & y_c_space,const VectorSpace & y_d_space,const VectorSpace & z_L_space,const VectorSpace & z_U_space,const VectorSpace & v_L_space,const VectorSpace & v_U_space)121   IteratesVectorSpace::IteratesVectorSpace(const VectorSpace& x_space, const VectorSpace& s_space,
122       const VectorSpace& y_c_space, const VectorSpace& y_d_space,
123       const VectorSpace& z_L_space, const VectorSpace& z_U_space,
124       const VectorSpace& v_L_space, const VectorSpace& v_U_space
125                                           )
126       :
127       CompoundVectorSpace(8, x_space.Dim() + s_space.Dim()
128                           + y_c_space.Dim() + y_d_space.Dim()
129                           + z_L_space.Dim() + z_U_space.Dim()
130                           + v_L_space.Dim() + v_U_space.Dim()
131                          )
132   {
133     x_space_ = &x_space;
134     s_space_ = &s_space;
135     y_c_space_ = &y_c_space;
136     y_d_space_ = &y_d_space;
137     z_L_space_ = &z_L_space;
138     z_U_space_ = &z_U_space;
139     v_L_space_ = &v_L_space;
140     v_U_space_ = &v_U_space;
141 
142     this->CompoundVectorSpace::SetCompSpace(0, *x_space_);
143     this->CompoundVectorSpace::SetCompSpace(1, *s_space_);
144     this->CompoundVectorSpace::SetCompSpace(2, *y_c_space_);
145     this->CompoundVectorSpace::SetCompSpace(3, *y_d_space_);
146     this->CompoundVectorSpace::SetCompSpace(4, *z_L_space_);
147     this->CompoundVectorSpace::SetCompSpace(5, *z_U_space_);
148     this->CompoundVectorSpace::SetCompSpace(6, *v_L_space_);
149     this->CompoundVectorSpace::SetCompSpace(7, *v_U_space_);
150   }
151 
~IteratesVectorSpace()152   IteratesVectorSpace::~IteratesVectorSpace()
153   {}
154 
155 } // namespae Ipopt
156