<div dir="ltr">Hi,<div><br></div><div>I'm trying to set the initial values for a param_init_number_vector (p, say) from a dvector (vls, say) in a function using the following:</div><div><br></div><div>p.set_initial_value(vls);<br>
<div><br></div><div>The actual function is:</div><div><br></div><div><div><font face="courier new, monospace">void setInitVals(BoundedNumberVectorInfo* pI, param_init_bounded_number_vector& p){</font></div><div><span style="font-family:'courier new',monospace">    int np = pI->getSize();</span><br>
</div><div><font face="courier new, monospace">    if (np){</font></div><div><font face="courier new, monospace">        dvector vls = pI->getInitVals();</font></div><div><font face="courier new, monospace">        p.set_initial_value(vls);</font></div>
<div><span style="font-family:'courier new',monospace">        cout<<"vls = "<<vls<<endl;</span><br></div><div><font face="courier new, monospace">        cout<<"p   = "<<p<<endl;</font></div>
<div><font face="courier new, monospace"> </font><span style="font-family:'courier new',monospace">    }</span></div><div><font face="courier new, monospace">}</font></div></div><div><br></div><div>where pI is a pointer to an object whose method getInitVals() returns a dvector.</div>
<div><br></div><div>Everything compiles fine, but when I run the code,  the initial values for p are not equal to vls (they're equal to the default initial values) after running setInits. </div><div><br></div><div>Fortunately this caused my code to produce some really strange results so I realized there was a problem. Using the ADMB website, I tracked down the following:</div>
<div> </div><div>The 'set_initial_value' method for param_init_bounded_number_vector is defined in model45.cpp as</div><div><br></div><div><pre class="" style="font-family:monospace,fixed;font-size:9pt;border:1px solid rgb(214,229,196);background-color:rgb(252,253,251);padding:4px 6px;margin:4px 8px 4px 2px;overflow:auto;word-wrap:break-word;line-height:15px;color:rgb(0,0,0)">
00008 
<a name="l00009" style="color:rgb(103,140,61)"></a><a class="" href="http://www.admb-project.org/documentation/api/classparam__init__bounded__vector__vector.html#ad696a4660a01ad50266fcbafa7d3beb7" style="color:rgb(70,101,162);text-decoration:none">00009</a> <span class="" style="color:rgb(96,64,32)">void</span> <a class="" href="http://www.admb-project.org/documentation/api/classparam__init__bounded__vector__vector.html#ad696a4660a01ad50266fcbafa7d3beb7" style="color:rgb(70,101,162);text-decoration:none">param_init_bounded_vector_vector::set_initial_value</a>(
<a name="l00010" style="color:rgb(103,140,61)"></a>00010   <span class="" style="color:rgb(0,128,0)">const</span> <a class="" href="http://www.admb-project.org/documentation/api/classdouble__index__type.html" title="Description not yet available." style="color:rgb(70,101,162);text-decoration:none">double_index_type</a>& _it)
<a name="l00011" style="color:rgb(103,140,61)"></a>00011  {
<a name="l00012" style="color:rgb(103,140,61)"></a>00012     <a class="" href="http://www.admb-project.org/documentation/api/classparam__init__bounded__vector__vector.html#a106e1b4f5049a08386645afbb658384b" style="color:rgb(70,101,162);text-decoration:none">it</a>=<span class="" style="color:rgb(0,128,0)">new</span> <a class="" href="http://www.admb-project.org/documentation/api/classdouble__index__type.html" title="Description not yet available." style="color:rgb(70,101,162);text-decoration:none">double_index_type</a>(_it);
<a name="l00013" style="color:rgb(103,140,61)"></a>00013  }
<a name="l00014" style="color:rgb(103,140,61)"></a>00014 
</pre></div><div><br></div><div>and the conversion of a dvector to double_index_type is defined in doublind.cpp as</div><div><pre class="" style="font-family:monospace,fixed;font-size:9pt;border:1px solid rgb(214,229,196);background-color:rgb(252,253,251);padding:4px 6px;margin:4px 8px 4px 2px;overflow:auto;word-wrap:break-word;line-height:15px;color:rgb(0,0,0)">
00057 
<a name="l00062" style="color:rgb(103,140,61)"></a><a class="" href="http://www.admb-project.org/documentation/api/classdouble__index__type.html#a70db7015028be71be42cbc4c37b59319" style="color:rgb(70,101,162);text-decoration:none">00062</a> <a class="" href="http://www.admb-project.org/documentation/api/classdouble__index__type.html#a2265b2e72fbd497b8cd4d4688398957a" title="Description not yet available." style="color:rgb(70,101,162);text-decoration:none">double_index_type::double_index_type</a>(<span class="" style="color:rgb(0,128,0)">const</span> <a class="" href="http://www.admb-project.org/documentation/api/classdvector.html" title="Vector of double precision numbers." style="color:rgb(70,101,162);text-decoration:none">dvector</a>& x)
<a name="l00063" style="color:rgb(103,140,61)"></a>00063   {
<a name="l00064" style="color:rgb(103,140,61)"></a>00064     <a class="" href="http://www.admb-project.org/documentation/api/classdouble__index__type.html#ad1bebc88ffff9232f7502f2c764ee3f2" style="color:rgb(70,101,162);text-decoration:none">p</a> = <span class="" style="color:rgb(0,128,0)">new</span> <a class="" href="http://www.admb-project.org/documentation/api/classdvector__index.html" title="Description not yet available." style="color:rgb(70,101,162);text-decoration:none">dvector_index</a>((<span class="" style="color:rgb(0,128,0)">const</span> <a class="" href="http://www.admb-project.org/documentation/api/classdvector.html" title="Vector of double precision numbers." style="color:rgb(70,101,162);text-decoration:none">dvector</a>&)(x));
<a name="l00065" style="color:rgb(103,140,61)"></a>00065   }
<a name="l00066" style="color:rgb(103,140,61)"></a>00066 
</pre></div><div><br></div><div>but the constructor for the dvector_index uses the copy constructor for dvector</div><div><br></div><div><pre class="" style="font-family:monospace,fixed;font-size:9pt;border:1px solid rgb(214,229,196);background-color:rgb(252,253,251);padding:4px 6px;margin:4px 8px 4px 2px;overflow:auto;word-wrap:break-word;line-height:15px;color:rgb(0,0,0)">
00184 
<a name="l00189" style="color:rgb(103,140,61)"></a><a class="" href="http://www.admb-project.org/documentation/api/classdvector__index.html#aba2c20e6f7432a5b4441e828427ce6e7" style="color:rgb(70,101,162);text-decoration:none">00189</a> <a class="" href="http://www.admb-project.org/documentation/api/classdvector__index.html#aba2c20e6f7432a5b4441e828427ce6e7" title="Description not yet available." style="color:rgb(70,101,162);text-decoration:none">dvector_index::dvector_index</a>(<span class="" style="color:rgb(0,128,0)">const</span> <a class="" href="http://www.admb-project.org/documentation/api/classdvector.html" title="Vector of double precision numbers." style="color:rgb(70,101,162);text-decoration:none">dvector</a>& v) : <a class="" href="http://www.admb-project.org/documentation/api/classdvector.html" title="Vector of double precision numbers." style="color:rgb(70,101,162);text-decoration:none">dvector</a>(v)
<a name="l00190" style="color:rgb(103,140,61)"></a>00190 {
<a name="l00191" style="color:rgb(103,140,61)"></a>00191 }
<a name="l00192" style="color:rgb(103,140,61)"></a>00192 
</pre><div><br></div><div>which makes a shallow copy of v. Not sure why this doesn't work, but it doesn't. </div><div><br></div><div>My immediate issue is that I want to put setInitVals(...) in a code library--i.e., not in the tpl code and the usual methods for setting the initial values (i.e., simple assignment by element) are private and only work when the function is defined inside the tpl. The set_initial_value method is public and SHOULD work anywhere  (but doesn't work in the tpl code either).</div>
<div><br></div><div>Hope this can get fixed soon.</div><div><br></div><div>Buck Stockhausen</div><div><div dir="ltr"><font face="courier new, monospace">***************************************************<br>* Dr. William T. Stockhausen                      *<br>
***************************************************<br>* Resource Ecology and Fisheries Management       *<br>* Alaska Fisheries Science Center                 *<br>* National Marine Fisheries Service               *<br>* National Oceanic and Atmospheric Administration *<br>
* 7600 Sand Point Way N.E.                        *<br>* Seattle, Washington 98115-6349                  *<br>***************************************************<br>* email: <a href="mailto:William.Stockhausen@noaa.gov" target="_blank">William.Stockhausen@noaa.gov</a>             *<br>
* voice: 206-526-4241 fax: 206-526-6723           *<br>* web  : <a href="http://www.afsc.noaa.gov" target="_blank">http://www.afsc.noaa.gov</a>                 *<br>***************************************************<br>All models are wrong, some are useful.--G.E.P. Box<br>
Beware of geeks bearing equations.    --W. Buffett<br>***************************************************<br>Disclaimer: The opinions expressed above are personal <br>and do not necessarily reflect official NOAA policy.<br>
</font><br><br></div></div>
</div></div></div>