<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-22833</id>
	<title>Nabble - Sundials</title>
	<updated>2009-11-30T11:55:37Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Sundials-f22833.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Sundials-f22833.html" />
	<subtitle type="html">The &lt;b&gt;&lt;font color=&quot;#ff0000&quot;&gt;SU&lt;/font&gt;ite of &lt;font color=&quot;#ff0000&quot;&gt;N&lt;/font&gt;onlinear and &lt;font color=&quot;#ff0000&quot;&gt;DI&lt;/font&gt;fferential/&lt;font color=&quot;#ff0000&quot;&gt;AL&lt;/font&gt;gebraic equation &lt;font color=&quot;#ff0000&quot;&gt;S&lt;/font&gt;olvers&lt;/b&gt; consists of the following four solvers:
&lt;br&gt;
&lt;table style=&quot;color:  #666666; margin-left:10px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;colgroup width=70&gt;
&lt;colgroup&gt;
&lt;tr&gt;
&lt;td&gt;&lt;B&gt;CVODE&lt;/B&gt;&lt;/td&gt;
&lt;td&gt;solves initial value problems for ordinary differential equation (ODE) systems. &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;B&gt;CVODES&lt;/B&gt;&lt;/td&gt;
&lt;td&gt;solves ODE systems and includes sensitivity analysis capabilities (forward and adjoint).&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;B&gt;IDA&lt;/B&gt;&lt;/td&gt;
&lt;td&gt;solves initial value problems for differential-algebraic equation (DAE) systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;B&gt;KINSOL&lt;/B&gt;&lt;/td&gt;
&lt;td&gt;solves nonlinear algebraic systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;
In addition, SUNDIALS provides a Matlab interface to CVODES and KINSOL,
&lt;B&gt;sundialsTB&lt;/B&gt;.
&lt;br&gt;&lt;br&gt;
The project webpage is located at &lt;a href=&quot;http://www.llnl.gov/casc/sundials&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;www.llnl.gov/casc/sundials&lt;/a&gt;

&lt;br&gt;&lt;br&gt;</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26582866</id>
	<title>time step history</title>
	<published>2009-11-30T11:55:37Z</published>
	<updated>2009-11-30T11:55:37Z</updated>
	<author>
		<name>Steven Smith-24</name>
	</author>
	<content type="html">--0016e6d7f07a7b3c3904799c06c7
&lt;br&gt;Content-Type: text/plain; charset=ISO-8859-1
&lt;br&gt;&lt;br&gt;Hi all,
&lt;br&gt;I am wondering if CVODE adds y(T)/f(T) or y(T*_n)/f(T*_n) to its internal
&lt;br&gt;time step history. I suppose the later one right?
&lt;br&gt;T denotes interpolated solver output time (itask=1) and T* the time at
&lt;br&gt;internal timestep n (T*_n-1 &amp;lt; T &amp;lt; T*_n).
&lt;br&gt;I don't want to bother you with details but let's assume I want to change
&lt;br&gt;this b
&lt;br&gt;ehaivor and use instead y(T)/f(t) internally.
&lt;br&gt;&lt;br&gt;Is there any optional input parameter I am missing? If not what's the best
&lt;br&gt;way to change this within CVODE?
&lt;br&gt;&lt;br&gt;Steven
&lt;br&gt;&lt;br&gt;--0016e6d7f07a7b3c3904799c06c7
&lt;br&gt;Content-Type: text/html; charset=ISO-8859-1
&lt;br&gt;Content-Transfer-Encoding: quoted-printable
&lt;br&gt;&lt;br&gt;&amp;lt;div&amp;gt;Hi all,&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;I am wondering if CVODE adds y(T)/f(T) or y(T*_n)/f(=
&lt;br&gt;T*_n) to its internal time step history. I suppose the later one right?&amp;lt;/di=
&lt;br&gt;v&amp;gt;&amp;lt;div&amp;gt;T denotes interpolated solver output time (itask=3D1) and T* the tim=
&lt;br&gt;e at internal timestep n (T*_n-1 &amp;lt; T &amp;lt; T*_n).&amp;lt;/div&amp;gt;
&lt;br&gt;&amp;lt;div&amp;gt;I don&amp;#39;t want to bother you with details but let&amp;#39;s assume I wan=
&lt;br&gt;t to change this b&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;ehaivor and use instead y(T)/f(t) internally.&amp;lt;=
&lt;br&gt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;Is there any optional input parameter I am missing=
&lt;br&gt;? If not what&amp;#39;s the best way to change this within CVODE? =A0 =A0 =A0&amp;lt;/=
&lt;br&gt;div&amp;gt;
&lt;br&gt;&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;Steven=A0=A0 =A0 =A0&amp;lt;/div&amp;gt;
&lt;br&gt;&lt;br&gt;--0016e6d7f07a7b3c3904799c06c7--
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/time-step-history-tp26582866p26582866.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26578197</id>
	<title>Fortran linker issue on AIX 5.3.0</title>
	<published>2009-11-27T01:23:07Z</published>
	<updated>2009-11-27T01:23:07Z</updated>
	<author>
		<name>Eric Fernandez</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;On AIX 5.3, I have a linker problem with the FORTRAN examples with
&lt;br&gt;sundials 2.4.0, which did not happen with sundials 2.3.0.
&lt;br&gt;This is an example:
&lt;br&gt;----------------------
&lt;br&gt;Make examples/ida/fcmix_parallel...
&lt;br&gt;----------------------
&lt;br&gt;make[1]: Entering directory
&lt;br&gt;`/hpc/work/fernandz/src/sundials-2.4.0/examples/ida/fcmix_parallel'
&lt;br&gt;Updating fidaHeat2D_kry_bbd_p.f...
&lt;br&gt;&amp;nbsp; /usr/lpp/ppe.poe/bin/mpxlf_r -I/usr/lpp/ppe.poe/include -g -c
&lt;br&gt;./fidaHeat2D_kry_bbd_p-updated.f -o fidaHeat2D_kry_bbd_p-updated.o
&lt;br&gt;** fidakryx_bbd_p &amp;nbsp; === End of Compilation 1 ===
&lt;br&gt;** setinitprofile &amp;nbsp; === End of Compilation 2 ===
&lt;br&gt;** fidaresfun &amp;nbsp; === End of Compilation 3 ===
&lt;br&gt;** fidacommfn &amp;nbsp; === End of Compilation 4 ===
&lt;br&gt;** fidaglocfn &amp;nbsp; === End of Compilation 5 ===
&lt;br&gt;** bsend &amp;nbsp; === End of Compilation 6 ===
&lt;br&gt;** brecvpost &amp;nbsp; === End of Compilation 7 ===
&lt;br&gt;** brecvwait &amp;nbsp; === End of Compilation 8 ===
&lt;br&gt;** prntoutput &amp;nbsp; === End of Compilation 9 ===
&lt;br&gt;** maxnorm &amp;nbsp; === End of Compilation 10 ===
&lt;br&gt;** prntintro &amp;nbsp; === End of Compilation 11 ===
&lt;br&gt;** prntcase &amp;nbsp; === End of Compilation 12 ===
&lt;br&gt;** prntfinalstats &amp;nbsp; === End of Compilation 13 ===
&lt;br&gt;1501-510 &amp;nbsp;Compilation successful for file
&lt;br&gt;fidaHeat2D_kry_bbd_p-updated.f.
&lt;br&gt;/usr/lpp/ppe.poe/bin/mpxlf_r -o ./fidaHeat2D_kry_bbd_p
&lt;br&gt;./fidaHeat2D_kry_bbd_p-updated.o -g
&lt;br&gt;../../../src/ida/fcmix/.libs/libsundials_fida.a
&lt;br&gt;../../../src/ida/.libs/libsundials_ida.a
&lt;br&gt;../../../src/nvec_par/.libs/libsundials_fnvecparallel.a
&lt;br&gt;-L/usr/lpp/ppe.poe/lib
&lt;br&gt;../../../src/nvec_par/.libs/libsundials_nvecparallel.a -lg -lxlf90
&lt;br&gt;-L/usr/lpp/xlf/lib -lxlopt -lxlf -lxlomp_ser -lpthreads -lm
&lt;br&gt;ld: 0711-317 ERROR: Undefined symbol: .fnvinitp
&lt;br&gt;ld: 0711-317 ERROR: Undefined symbol: .fidabbdinit
&lt;br&gt;ld: 0711-317 ERROR: Undefined symbol: .fidabbdopt
&lt;br&gt;ld: 0711-317 ERROR: Undefined symbol: .fidabbdreinit
&lt;br&gt;ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
&lt;br&gt;information.
&lt;br&gt;make[1]: *** [all] Error 8
&lt;br&gt;make[1]: Leaving directory
&lt;br&gt;`/hpc/work/fernandz/src/sundials-2.4.0/examples/ida/fcmix_parallel'
&lt;br&gt;&lt;br&gt;Examples comiled with gcc seem to link ok.
&lt;br&gt;&lt;br&gt;FYI, I join the two configuration summaries for 2.3.0 and 2.4.0.
&lt;br&gt;My configure is the same for both:
&lt;br&gt;./configure --prefix=$PREFIX --with-mpicc=mpcc_r --with-mpif77=mpxlf_r
&lt;br&gt;--enable-examples --with-mpi-root=/usr/lpp/ppe.poe
&lt;br&gt;&lt;br&gt;------------------------------
&lt;br&gt;SUNDIALS Configuration Summary
&lt;br&gt;------------------------------
&lt;br&gt;&lt;br&gt;Configuration
&lt;br&gt;-------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Host System: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; powerpc-ibm-aix5.3.0.0
&lt;br&gt;&amp;nbsp; &amp;nbsp;Build System: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;powerpc-ibm-aix5.3.0.0
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;C Preprocessor: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gcc -E
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Preporcessor Flags:
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Compiler: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gcc
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Compiler Flags
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Linker: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gcc
&lt;br&gt;&amp;nbsp; &amp;nbsp;Linker Flags:
&lt;br&gt;&amp;nbsp; &amp;nbsp;Libraries: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -lm
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Fortran Compiler: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xlf_r
&lt;br&gt;&amp;nbsp; &amp;nbsp;Fortran Compiler Flags:
&lt;br&gt;&amp;nbsp; &amp;nbsp;Fortran Linker: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xlf_r
&lt;br&gt;&amp;nbsp; &amp;nbsp;Extra Fortran Libraries: &amp;nbsp; &amp;nbsp;-lm -lxlf90 -L/usr/lpp/xlf/lib -lxlopt
&lt;br&gt;-lxlf -lxlomp_ser -lpthreads
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Root Directory: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/usr/lpp/ppe.poe
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Include Directory: &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/include
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Library Directory: &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/lib
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Flags:
&lt;br&gt;&amp;nbsp; &amp;nbsp;Extra MPI Libraries:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Using MPI-C script? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI-C: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/bin/mpcc_r
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Using MPI-Fortran script? &amp;nbsp;yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI-Fortran: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/bin/mpxlf_r
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI-Fortran Linker: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/usr/lpp/ppe.poe/bin/mpxlf_r
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;srcdir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/hpc/work/fernandz/src/sundials-2.3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp;builddir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/hpc/work/fernandz/src/sundials-2.3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp;prefix: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/hpc/work/fernandz/local
&lt;br&gt;&amp;nbsp; &amp;nbsp;exec_prefix: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ${prefix}
&lt;br&gt;&amp;nbsp; &amp;nbsp;includedir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${prefix}/include
&lt;br&gt;&amp;nbsp; &amp;nbsp;libdir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${exec_prefix}/lib
&lt;br&gt;&amp;nbsp; &amp;nbsp;examples installed in: &amp;nbsp; &amp;nbsp; /hpc/work/fernandz/local/examples
&lt;br&gt;&lt;br&gt;Modules
&lt;br&gt;-------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;CVODE &amp;nbsp;FCVODE
&lt;br&gt;&amp;nbsp; &amp;nbsp;CVODES
&lt;br&gt;&amp;nbsp; &amp;nbsp;IDA &amp;nbsp; &amp;nbsp;FIDA
&lt;br&gt;&amp;nbsp; &amp;nbsp;KINSOL FKINSOL
&lt;br&gt;&lt;br&gt;Examples
&lt;br&gt;--------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Serial C examples: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;Parallel C examples: &amp;nbsp; &amp;nbsp; &amp;nbsp; yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;Serial Fortran examples: &amp;nbsp; yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;Parallel Fortran examples: yes
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Type 'make' and then 'make install' to build and install SUNDIALS
&lt;br&gt;2.3.0.
&lt;br&gt;&lt;br&gt;----------------------------------
&lt;br&gt;Finished SUNDIALS Configure Script
&lt;br&gt;----------------------------------
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------
&lt;br&gt;SUNDIALS Configuration Summary
&lt;br&gt;------------------------------
&lt;br&gt;&lt;br&gt;Configuration
&lt;br&gt;-------------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Host System: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; powerpc-ibm-aix5.3.0.0
&lt;br&gt;&amp;nbsp; &amp;nbsp;Build System: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;powerpc-ibm-aix5.3.0.0
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;C Preprocessor: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gcc -E
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Preprocessor Flags:
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Compiler: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gcc
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Compiler Flags &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -g -O2
&lt;br&gt;&amp;nbsp; &amp;nbsp;C Linker: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gcc
&lt;br&gt;&amp;nbsp; &amp;nbsp;Linker Flags:
&lt;br&gt;&amp;nbsp; &amp;nbsp;Libraries: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -lm
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Fortran Compiler: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xlf_r
&lt;br&gt;&amp;nbsp; &amp;nbsp;Fortran Compiler Flags: &amp;nbsp; &amp;nbsp;-g
&lt;br&gt;&amp;nbsp; &amp;nbsp;Fortran Linker: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;xlf_r
&lt;br&gt;&amp;nbsp; &amp;nbsp;Extra Fortran Libraries: &amp;nbsp; &amp;nbsp;-lm -lg -lxlf90 -L/usr/lpp/xlf/lib -lxlopt
&lt;br&gt;-lxlf -lxlomp_ser -lpthreads
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Root Directory: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/usr/lpp/ppe.poe
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Include Directory: &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/include
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Library Directory: &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/lib
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI Flags:
&lt;br&gt;&amp;nbsp; &amp;nbsp;Extra MPI Libraries:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Using MPI-C script? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI-C: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/bin/mpcc_r
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Using MPI-Fortran script? &amp;nbsp;yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI-Fortran: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /usr/lpp/ppe.poe/bin/mpxlf_r
&lt;br&gt;&amp;nbsp; &amp;nbsp;MPI-Fortran Linker: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/usr/lpp/ppe.poe/bin/mpxlf_r
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;srcdir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/hpc/work/fernandz/src/sundials-2.4.0
&lt;br&gt;&amp;nbsp; &amp;nbsp;builddir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/hpc/work/fernandz/src/sundials-2.4.0
&lt;br&gt;&amp;nbsp; &amp;nbsp;prefix: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/hpc/work/fernandz/local
&lt;br&gt;&amp;nbsp; &amp;nbsp;exec_prefix: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ${prefix}
&lt;br&gt;&amp;nbsp; &amp;nbsp;includedir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${prefix}/include
&lt;br&gt;&amp;nbsp; &amp;nbsp;libdir: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${exec_prefix}/lib
&lt;br&gt;&amp;nbsp; &amp;nbsp;examples installed in: &amp;nbsp; &amp;nbsp; /hpc/work/fernandz/local/examples
&lt;br&gt;&lt;br&gt;Modules
&lt;br&gt;-------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;CVODE &amp;nbsp;FCVODE
&lt;br&gt;&amp;nbsp; &amp;nbsp;CVODES
&lt;br&gt;&amp;nbsp; &amp;nbsp;IDA &amp;nbsp; &amp;nbsp;FIDA
&lt;br&gt;&amp;nbsp; &amp;nbsp;IDAS
&lt;br&gt;&amp;nbsp; &amp;nbsp;KINSOL FKINSOL
&lt;br&gt;&lt;br&gt;Examples
&lt;br&gt;--------
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Serial C examples: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;Parallel C examples: &amp;nbsp; &amp;nbsp; &amp;nbsp; yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;Serial Fortran examples: &amp;nbsp; yes
&lt;br&gt;&amp;nbsp; &amp;nbsp;Parallel Fortran examples: yes
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Type 'make' and then 'make install' to build and install SUNDIALS
&lt;br&gt;2.4.0.
&lt;br&gt;&lt;br&gt;----------------------------------
&lt;br&gt;Finished SUNDIALS Configure Script
&lt;br&gt;----------------------------------
&lt;br&gt;&lt;br&gt;Hope this helps.
&lt;br&gt;Eric
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Fortran-linker-issue-on-AIX-5.3.0-tp26578197p26578197.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26535876</id>
	<title>SundialsTB - IDA - root finding error</title>
	<published>2009-11-26T20:20:45Z</published>
	<updated>2009-11-26T20:20:45Z</updated>
	<author>
		<name>frank72</name>
	</author>
	<content type="html">Hi all
&lt;br&gt;&lt;br&gt;I'm solving a DAE system using IDA in MATLAB and am having some trouble with the root finding feature. I have defined a function in MATLAB - g(t,y, ydot) which picks up when some of the variables I am interested in hit a root (I have 54 variables of around 1300 that I am interested in). The number of roots I am finding depends on the size of the problem I am solving. When these variables hit a root, I explicitly change one of the boundary conditions in a subproblem, which gives me a discontinuity too big for Sundials to explicitly deal with.
&lt;br&gt;&lt;br&gt;I'm solving the problem in OneStep mode, and so I detect when the status == 2. I then change the boundary condition in my code, then call IDAReInit and IDACalcIC to correct the new conditions, and then continue solving the system. Everytime I hit a new root, I explicitly decrease the number of roots to check for, and correspondingly pass IDAReInit with the new options created with IDASetOptions with num_roots = num_roots - 1.
&lt;br&gt;&lt;br&gt;The strange thing is everything works fine until I hit a certain problem size (corresponding to 54 roots needed). MATLAB then starts to crash because of a segmentation violation. I have tried a bunch of different things to stop this from happening, including not decreasing the number of roots to search for, calling IDAFree then IDAInit to start the problem off fresh, but nothing seems to be helping (and they seem to change where the code falls over)
&lt;br&gt;&lt;br&gt;I recompiled SundialsTB with debugging, and then ran the code with Visual Studio 2008 attached to the MATLAB process. I get the error &amp;quot;Unhandled exception at 0x7c910cce in MATLAB.exe: 0xC0000005: Access violation reading location 0x00000000.&amp;quot;. The line it seems to fall over in is idm.c :
&lt;br&gt;&lt;br&gt;rootsfound = (int *) malloc(nge*sizeof(int));
&lt;br&gt;&lt;br&gt;Just wondering if anyone might be able to shed some light on my problem?
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SundialsTB---IDA---root-finding-error-tp26535876p26535876.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26578002</id>
	<title>Re: Error: &quot;mxstep steps taken before reaching tout&quot;</title>
	<published>2009-11-26T02:11:09Z</published>
	<updated>2009-11-26T02:11:09Z</updated>
	<author>
		<name>suzzing</name>
	</author>
	<content type="html">--001636e1fd3e12643a04794366c1
&lt;br&gt;Content-Type: text/plain; charset=ISO-8859-1
&lt;br&gt;&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;Thanks for all the responses.
&lt;br&gt;&lt;br&gt;I increased the mx-steps as suggested, however to no avail and was getting a
&lt;br&gt;different error message.
&lt;br&gt;&lt;br&gt;when I changed the CV_NORMAL to CV_ONE_STEP when calling the solver, no
&lt;br&gt;errors are thrown and the solver works fine.
&lt;br&gt;&lt;br&gt;CVode(cvode_mem, tout, x, &amp;t, CV_ONE_STEP);
&lt;br&gt;&lt;br&gt;why is it so?
&lt;br&gt;&lt;br&gt;Thanks for helping
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Thu, Nov 26, 2009 at 3:24 AM, Alan Hindmarsh &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26578002&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alanh@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; Suchee et al.-
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Although this advice is valid, I cannot emphasize too much that the
&lt;br&gt;&amp;nbsp;&amp;gt; cause of the many small steps needs to be identified. &amp;nbsp;A common cause
&lt;br&gt;&amp;nbsp;&amp;gt; that I did not list is using a nonstiff option for a stiff problem,
&lt;br&gt;&amp;nbsp;&amp;gt; but you say you were using BDF/NEWTON.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; -Alan
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; On Thu, 19 Nov 2009, Andreas Nicolai wrote:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; Hi,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; as Alan suggested, you may either increase the max step parameter or
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; reduce the tout distances.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; While it is possible, that the solver needs very many steps indeed to
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; reach your next tout point, especially when dealing with measured/real
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; life data, usually a well behaved solution (and implementation) will
&lt;br&gt;&amp;nbsp;&amp;gt; allow
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; the solver to make sufficiently large steps and reach tout within the
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; pre-defined maximum number of steps. So, an excessive number of steps
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; between outputs is often an indication of problematic numerical
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; implementation or treatment of physical/mathematical boundaries. However,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; if the solver runs with acceptable speed and the results look ok,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; increasing the number of maxsteps is often a quick fix to get rid of the
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; error.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; An alternative is simply to re-call the solver if it return with the
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; max-steps results:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; while (result == CV_TOO_MUCH_WORK) {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = CVode(cvode_mem, tout, yout, &amp;tret, itask);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; switch (result) {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // check for all results that would cause abort
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // ...
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case CV_TOO_MUCH_WORK : break;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; default:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 1; // or some other abort
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // if we get here, we have CV_TOO_MUCH_WORK and just go on
&lt;br&gt;&amp;nbsp;&amp;gt; integrating
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; Andreas
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&lt;br&gt;--001636e1fd3e12643a04794366c1
&lt;br&gt;Content-Type: text/html; charset=ISO-8859-1
&lt;br&gt;Content-Transfer-Encoding: quoted-printable
&lt;br&gt;&lt;br&gt;Hi,&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Thanks for all the responses.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I increased the mx-steps as=
&lt;br&gt;&amp;nbsp; suggested, however to no avail and was getting a different error message.&amp;lt;=
&lt;br&gt;br&amp;gt;&amp;lt;br&amp;gt;when I changed the CV_NORMAL to CV_ONE_STEP when calling the solver,=
&lt;br&gt;&amp;nbsp; no errors are thrown and the solver works fine.&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;lt;br&amp;gt;
&lt;br&gt;CVode(cvode_mem, tout, x, &amp;amp;t, CV_ONE_STEP);&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;why is it so?&amp;lt;br&amp;gt;&amp;lt;br=
&lt;br&gt;&amp;nbsp;&amp;gt;Thanks for helping&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=3D&amp;quot;gmail_quote&amp;quot;&amp;gt;On Thu, Nov 26, 2=
&lt;br&gt;009 at 3:24 AM, Alan Hindmarsh &amp;lt;span dir=3D&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;&amp;lt;a href=3D&amp;quot;mailto:alan=
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26578002&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;h@...&lt;/a&gt;&amp;quot;&amp;gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26578002&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alanh@...&lt;/a&gt;&amp;lt;/a&amp;gt;&amp;gt;&amp;lt;/span&amp;gt; wrote:&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;lt;blockquote class=3D&amp;quot;gmail_quote&amp;quot; style=3D&amp;quot;border-left: 1px solid rgb(204, =
&lt;br&gt;204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&amp;quot;&amp;gt;Suchee et al.-&amp;lt;br&amp;gt;
&lt;br&gt;&amp;lt;br&amp;gt;
&lt;br&gt;Although this advice is valid, I cannot emphasize too much that the&amp;lt;br&amp;gt;
&lt;br&gt;cause of the many small steps needs to be identified. =A0A common cause&amp;lt;br&amp;gt;
&lt;br&gt;that I did not list is using a nonstiff option for a stiff problem,&amp;lt;br&amp;gt;
&lt;br&gt;but you say you were using BDF/NEWTON.&amp;lt;br&amp;gt;
&lt;br&gt;&amp;lt;font color=3D&amp;quot;#888888&amp;quot;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;-Alan&amp;lt;br&amp;gt;
&lt;br&gt;&amp;lt;/font&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=3D&amp;quot;h5&amp;quot;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;lt;br&amp;gt;
&lt;br&gt;On Thu, 19 Nov 2009, Andreas Nicolai wrote:&amp;lt;br&amp;gt;
&lt;br&gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; Hi,&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; as Alan suggested, you may either increase the max step parameter or&amp;lt;b=
&lt;br&gt;r&amp;gt;
&lt;br&gt;&amp;gt; reduce the tout distances.&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; While it is possible, that the solver needs very many steps indeed to&amp;lt;=
&lt;br&gt;br&amp;gt;
&lt;br&gt;&amp;gt; reach your next tout point, especially when dealing with measured/real=
&lt;br&gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; life data, usually a well behaved solution (and implementation) will a=
&lt;br&gt;llow&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; the solver to make sufficiently large steps and reach tout within the&amp;lt;=
&lt;br&gt;br&amp;gt;
&lt;br&gt;&amp;gt; pre-defined maximum number of steps. So, an excessive number of steps&amp;lt;=
&lt;br&gt;br&amp;gt;
&lt;br&gt;&amp;gt; between outputs is often an indication of problematic numerical&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; implementation or treatment of physical/mathematical boundaries. Howev=
&lt;br&gt;er,&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; if the solver runs with acceptable speed and the results look ok,&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; increasing the number of maxsteps is often a quick fix to get rid of t=
&lt;br&gt;he&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; error.&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; An alternative is simply to re-call the solver if it return with the&amp;lt;b=
&lt;br&gt;r&amp;gt;
&lt;br&gt;&amp;gt; max-steps results:&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; while (result =3D=3D CV_TOO_MUCH_WORK) {&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 result =3D CVode(cvode_mem, tout, yout, &amp;amp;tret, itask);=
&lt;br&gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 switch (result) {&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 =A0 =A0 // check for all results that would cause abort&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 =A0 =A0 // ...&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 =A0 =A0 case CV_TOO_MUCH_WORK : break;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 =A0 =A0 default:&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 =A0 =A0 =A0 =A0return 1; // or some other abort&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 }&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; =A0 =A0 =A0 // if we get here, we have CV_TOO_MUCH_WORK and just go on=
&lt;br&gt;&amp;nbsp; integrating&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; }&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; Andreas&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------=
&lt;br&gt;------------------------------------------&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26578002&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Error%3A-%22mxstep-steps-taken-before-reaching-tout%22-tp26387672p26578002.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26518831</id>
	<title>Re: Error: &quot;mxstep steps taken before reaching tout&quot;</title>
	<published>2009-11-25T11:24:59Z</published>
	<updated>2009-11-25T11:24:59Z</updated>
	<author>
		<name>Alan Hindmarsh</name>
	</author>
	<content type="html">Suchee et al.-
&lt;br&gt;&lt;br&gt;Although this advice is valid, I cannot emphasize too much that the
&lt;br&gt;cause of the many small steps needs to be identified. &amp;nbsp;A common cause
&lt;br&gt;that I did not list is using a nonstiff option for a stiff problem,
&lt;br&gt;but you say you were using BDF/NEWTON.
&lt;br&gt;&lt;br&gt;-Alan
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Thu, 19 Nov 2009, Andreas Nicolai wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; as Alan suggested, you may either increase the max step parameter or
&lt;br&gt;&amp;gt; reduce the tout distances.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; While it is possible, that the solver needs very many steps indeed to
&lt;br&gt;&amp;gt; reach your next tout point, especially when dealing with measured/real
&lt;br&gt;&amp;gt; life data, usually a well behaved solution (and implementation) will allow
&lt;br&gt;&amp;gt; the solver to make sufficiently large steps and reach tout within the
&lt;br&gt;&amp;gt; pre-defined maximum number of steps. So, an excessive number of steps
&lt;br&gt;&amp;gt; between outputs is often an indication of problematic numerical
&lt;br&gt;&amp;gt; implementation or treatment of physical/mathematical boundaries. However,
&lt;br&gt;&amp;gt; if the solver runs with acceptable speed and the results look ok,
&lt;br&gt;&amp;gt; increasing the number of maxsteps is often a quick fix to get rid of the
&lt;br&gt;&amp;gt; error.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; An alternative is simply to re-call the solver if it return with the
&lt;br&gt;&amp;gt; max-steps results:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; while (result == CV_TOO_MUCH_WORK) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = CVode(cvode_mem, tout, yout, &amp;tret, itask);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; switch (result) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // check for all results that would cause abort
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // ...
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case CV_TOO_MUCH_WORK : break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; default:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 1; // or some other abort
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; // if we get here, we have CV_TOO_MUCH_WORK and just go on integrating
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Andreas
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ----------------------------------------------------------------------------------------------------------------
&lt;br&gt;&amp;gt; Center for Applied Scientific Computing
&lt;br&gt;&amp;gt; Lawrence Livermore National Laboratory
&lt;br&gt;&amp;gt; P.O. Box 808, L-561
&lt;br&gt;&amp;gt; Livermore, CA &amp;nbsp;94551
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26518831&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;&amp;gt; (925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Error%3A-%22mxstep-steps-taken-before-reaching-tout%22-tp26387672p26518831.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26446719</id>
	<title>Re: Error: &quot;mxstep steps taken before reaching tout&quot;</title>
	<published>2009-11-19T06:53:18Z</published>
	<updated>2009-11-19T06:53:18Z</updated>
	<author>
		<name>Bugzilla from Andreas.Nicolai@gmx.net</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;as Alan suggested, you may either increase the max step parameter or
&lt;br&gt;reduce the tout distances.
&lt;br&gt;&lt;br&gt;While it is possible, that the solver needs very many steps indeed to
&lt;br&gt;reach your next tout point, especially when dealing with measured/real
&lt;br&gt;life data, usually a well behaved solution (and implementation) will allow
&lt;br&gt;the solver to make sufficiently large steps and reach tout within the
&lt;br&gt;pre-defined maximum number of steps. So, an excessive number of steps
&lt;br&gt;between outputs is often an indication of problematic numerical
&lt;br&gt;implementation or treatment of physical/mathematical boundaries. However,
&lt;br&gt;if the solver runs with acceptable speed and the results look ok,
&lt;br&gt;increasing the number of maxsteps is often a quick fix to get rid of the
&lt;br&gt;error.
&lt;br&gt;&lt;br&gt;An alternative is simply to re-call the solver if it return with the
&lt;br&gt;max-steps results:
&lt;br&gt;&lt;br&gt;while (result == CV_TOO_MUCH_WORK) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; result = CVode(cvode_mem, tout, yout, &amp;tret, itask);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; switch (result) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // check for all results that would cause abort
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case CV_TOO_MUCH_WORK : break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; default:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 1; // or some other abort
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // if we get here, we have CV_TOO_MUCH_WORK and just go on integrating
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Andreas
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26446719&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Error%3A-%22mxstep-steps-taken-before-reaching-tout%22-tp26387672p26446719.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26419060</id>
	<title>Re: Error: &quot;mxstep steps taken before reaching tout&quot;</title>
	<published>2009-11-18T14:38:16Z</published>
	<updated>2009-11-18T14:38:16Z</updated>
	<author>
		<name>Alan Hindmarsh</name>
	</author>
	<content type="html">Hello Suchee,
&lt;br&gt;&lt;br&gt;MSXTEP is an optional input which can be increased using CVodeSetMaxStep.
&lt;br&gt;But instead of doing that, you need to find out why so many steps are
&lt;br&gt;being taken. &amp;nbsp;There is most likely an error in your input somewhere --
&lt;br&gt;e.g. inappropriate tolerances, inconsistency in your F routine, bad
&lt;br&gt;Jacobian. &amp;nbsp;If there is no error, then your tout values are too far apart.
&lt;br&gt;&lt;br&gt;-Alan H
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Tue, 17 Nov 2009, Suchee wrote:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; --0050450180984f2eac04788eb26b
&lt;br&gt;&amp;nbsp;&amp;gt; Content-Type: text/plain; charset=ISO-8859-1
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Hi ,
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I am using &amp;nbsp;CVODE Solver to solve a set of 500 stiff ODE's equations,using
&lt;br&gt;&amp;nbsp;&amp;gt; the dense solver (CV_BDF, CV_NEWTON).
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I am getting the error &amp;quot;mxstep steps taken before reaching tout&amp;quot;.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; how do I increase the mxstep parameter?
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Since I am new to CVODE, please suggest what else may be the reason for this
&lt;br&gt;&amp;nbsp;&amp;gt; error and what may be a suitable method to solve this &amp;nbsp;system of ODE's.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26419060&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Error%3A-%22mxstep-steps-taken-before-reaching-tout%22-tp26387672p26419060.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26387672</id>
	<title>Error: &quot;mxstep steps taken before reaching tout&quot;</title>
	<published>2009-11-17T02:39:04Z</published>
	<updated>2009-11-17T02:39:04Z</updated>
	<author>
		<name>suzzing</name>
	</author>
	<content type="html">Hi ,

I am using  CVODE Solver to solve a set of 500 stiff ODE's equations,using the dense solver (CV_BDF, CV_NEWTON).

I am getting the error &quot;mxstep steps taken before reaching tout&quot;.

how do I increase the mxstep parameter?

Since I am new to CVODE, please suggest what else may be the reason for this error and what may be a suitable method to solve this  system of ODE's.

Thanks&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Error%3A-%22mxstep-steps-taken-before-reaching-tout%22-tp26387672p26387672.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26410063</id>
	<title>Error: &quot;mxstep steps taken before reaching tout&quot;</title>
	<published>2009-11-17T02:35:59Z</published>
	<updated>2009-11-17T02:35:59Z</updated>
	<author>
		<name>suzzing</name>
	</author>
	<content type="html">--0050450180984f2eac04788eb26b
&lt;br&gt;Content-Type: text/plain; charset=ISO-8859-1
&lt;br&gt;&lt;br&gt;Hi ,
&lt;br&gt;&lt;br&gt;I am using &amp;nbsp;CVODE Solver to solve a set of 500 stiff ODE's equations,using
&lt;br&gt;the dense solver (CV_BDF, CV_NEWTON).
&lt;br&gt;&lt;br&gt;I am getting the error &amp;quot;mxstep steps taken before reaching tout&amp;quot;.
&lt;br&gt;&lt;br&gt;how do I increase the mxstep parameter?
&lt;br&gt;&lt;br&gt;Since I am new to CVODE, please suggest what else may be the reason for this
&lt;br&gt;error and what may be a suitable method to solve this &amp;nbsp;system of ODE's.
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;&lt;br&gt;--0050450180984f2eac04788eb26b
&lt;br&gt;Content-Type: text/html; charset=ISO-8859-1
&lt;br&gt;Content-Transfer-Encoding: quoted-printable
&lt;br&gt;&lt;br&gt;Hi ,&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I am using=A0 CVODE Solver to solve a set of 500 stiff ODE&amp;#39;=
&lt;br&gt;s equations,using the dense solver (CV_BDF, CV_NEWTON).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I am getting=
&lt;br&gt;&amp;nbsp; the error &amp;quot;mxstep steps taken before reaching tout&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;how =
&lt;br&gt;do I increase the mxstep parameter?&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;lt;br&amp;gt;Since I am new to CVODE, please suggest what else may be the reason for=
&lt;br&gt;&amp;nbsp; this error and what may be a suitable method to solve this=A0 system of OD=
&lt;br&gt;E&amp;#39;s.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;--0050450180984f2eac04788eb26b--
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26410063&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Error%3A-%22mxstep-steps-taken-before-reaching-tout%22-tp26410063p26410063.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26116147</id>
	<title>Memory problem</title>
	<published>2009-10-29T08:59:20Z</published>
	<updated>2009-10-29T08:59:20Z</updated>
	<author>
		<name>danielelinaro</name>
	</author>
	<content type="html">Hello everybody,
&lt;br&gt;I've been using CVode for quite some time now and recently switched to
&lt;br&gt;version 2.6.0. Today I realised that &amp;nbsp;my code has a serious memory problem.
&lt;br&gt;What my code does is integrate a set of ODE's for a great number of times,
&lt;br&gt;each time changing the values of some parameters of the system. Therefore, I
&lt;br&gt;allocate memory for CVode only once and then call a bunch of time
&lt;br&gt;CVodeReInit to reset both the time and the initial conditions. The buffer
&lt;br&gt;where the solution of the integration is stored is allocated only once, and
&lt;br&gt;the function CVode is called many times because I need to have the solution
&lt;br&gt;at precise time instants. What I've noticed is that if I comment the line
&lt;br&gt;where CVode is called (and simply increment the time), the program uses a
&lt;br&gt;tiny amount of memory, whereas when CVode is called the amount of memory
&lt;br&gt;allocated grows quickly and eventually saturates the available RAM. I am
&lt;br&gt;quite confident that my code does not contain any memory leaks because after
&lt;br&gt;CVodeFree is called all the memory is released.
&lt;br&gt;&lt;br&gt;If it may be of any help, I can post snippets of my code.
&lt;br&gt;&lt;br&gt;Any help would be much appreciated.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Daniele
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;View this message in context: 
&lt;br&gt;&lt;a href=&quot;http://*www.*nabble.com/Memory-problem-tp26115866p26115866.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://*www.*nabble.com/Memory-problem-tp26115866p26115866.html&lt;/a&gt;&lt;br&gt;Sent from the Sundials - Users mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26116147&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Memory-problem-tp26116147p26116147.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26115866</id>
	<title>Memory problem</title>
	<published>2009-10-29T08:59:19Z</published>
	<updated>2009-10-29T08:59:19Z</updated>
	<author>
		<name>danielelinaro</name>
	</author>
	<content type="html">Hello everybody,
&lt;br&gt;I've been using CVode for quite some time now and recently switched to version 2.6.0. Today I realised that &amp;nbsp;my code has a serious memory problem. What my code does is integrate a set of ODE's for a great number of times, each time changing the values of some parameters of the system. Therefore, I allocate memory for CVode only once and then call a bunch of time CVodeReInit to reset both the time and the initial conditions. The buffer where the solution of the integration is stored is allocated only once, and the function CVode is called many times because I need to have the solution at precise time instants. What I've noticed is that if I comment the line where CVode is called (and simply increment the time), the program uses a tiny amount of memory, whereas when CVode is called the amount of memory allocated grows quickly and eventually saturates the available RAM. I am quite confident that my code does not contain any memory leaks because after CVodeFree is called all the memory is released.
&lt;br&gt;&lt;br&gt;If it may be of any help, I can post snippets of my code.
&lt;br&gt;&lt;br&gt;Any help would be much appreciated.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Daniele
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Memory-problem-tp26115866p26115866.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26029889</id>
	<title>sundials generic math</title>
	<published>2009-10-22T14:59:08Z</published>
	<updated>2009-10-22T14:59:08Z</updated>
	<author>
		<name>David Lorenzetti</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;Having just started with CVODE (literally ran config-make-make-install
&lt;br&gt;this morning), I ran into something that looks a little suspect in the
&lt;br&gt;use of macro SUNDIALS_USE_GENERIC_MATH. &amp;nbsp;Can somebody comment on this?
&lt;br&gt;&lt;br&gt;Header file &amp;quot;sundials_config.h&amp;quot; says this:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; /* Use generic math functions
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;* If it was decided that generic math functions can be used, then
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;* &amp;nbsp; &amp;nbsp; #define SUNDIALS_USE_GENERIC_MATH 1
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;* otherwise
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;* &amp;nbsp; &amp;nbsp; #define SUNDIALS_USE_GENERIC_MATH 0
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;&amp;gt; #define SUNDIALS_USE_GENERIC_MATH 1
&lt;br&gt;&lt;br&gt;This seems to indicate that preprocessor tests of
&lt;br&gt;SUNDIALS_USE_GENERIC_MATH ought to concern its value (0 or 1), not
&lt;br&gt;whether it's defined.
&lt;br&gt;&lt;br&gt;With that in mind, look at source file &amp;quot;sundials_math.c&amp;quot;, which
&lt;br&gt;contains a few blocks of code like this:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; #if defined(SUNDIALS_USE_GENERIC_MATH)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return((realtype) pow((double) base, (double) exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #elif defined(SUNDIALS_DOUBLE_PRECISION)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return(pow(base, exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #elif defined(SUNDIALS_SINGLE_PRECISION)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return(powf(base, exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #elif defined(SUNDIALS_EXTENDED_PRECISION)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return(powl(base, exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #endif
&lt;br&gt;&lt;br&gt;Here, SUNDIALS_USE_GENERIC_MATH gets tested for existence, not for
&lt;br&gt;value. &amp;nbsp;Thus the generic math code always will be used.
&lt;br&gt;&lt;br&gt;In other words, suppose the user #defines SUNDIALS_USE_GENERIC_MATH as
&lt;br&gt;0. &amp;nbsp;Then that macro is defined, and the source code uses the &amp;quot;generic
&lt;br&gt;math&amp;quot; version of the code-- contrary to the user's wishes.
&lt;br&gt;&lt;br&gt;Therefore it seems to me those blocks of code ought to look something
&lt;br&gt;like this:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; #if defined(SUNDIALS_DOUBLE_PRECISION)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return(pow(base, exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #elif(SUNDIALS_USE_GENERIC_MATH == 1)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return((realtype) pow((double) base, (double) exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #elif defined(SUNDIALS_SINGLE_PRECISION)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return(powf(base, exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #elif defined(SUNDIALS_EXTENDED_PRECISION)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; return(powl(base, exponent));
&lt;br&gt;&amp;nbsp;&amp;gt; #endif
&lt;br&gt;&lt;br&gt;This form has two advantages:
&lt;br&gt;&lt;br&gt;** &amp;nbsp;It tests SUNDIALS_USE_GENERIC_MATH against 1, rather than for
&lt;br&gt;whether it's defined. &amp;nbsp;This avoids the problem of always using the
&lt;br&gt;generic math code, regardless of the user's intent.
&lt;br&gt;&lt;br&gt;** &amp;nbsp;It places the SUNDIALS_DOUBLE_PRECISION piece first, thus avoiding
&lt;br&gt;the unnecessary coercion of a double to double in cases where
&lt;br&gt;SUNDIALS_USE_GENERIC_MATH is set to 1. &amp;nbsp;While an optimizing compiler
&lt;br&gt;probably removes the unneeded coercion, there's no reason to require
&lt;br&gt;that it does (and there's no reason to introduce another possible
&lt;br&gt;cause of differences between debug and release versions of the code).
&lt;br&gt;&lt;br&gt;So-- comments? &amp;nbsp;Have I missed something here?
&lt;br&gt;&lt;br&gt;-Dave
&lt;br&gt;&lt;br&gt;David Lorenzetti
&lt;br&gt;Lawrence Berkeley National Laboratory
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26029889&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/sundials-generic-math-tp26029889p26029889.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25927571</id>
	<title>Minor problem with building SUNDIALS 2.4.0 on MinGW/MSYS</title>
	<published>2009-10-15T20:14:15Z</published>
	<updated>2009-10-15T20:14:15Z</updated>
	<author>
		<name>John Pye</name>
	</author>
	<content type="html">Hi all
&lt;br&gt;&lt;br&gt;I see a minor error while installing SUNDIALS 2.4.0 under MinGW/MSYS. At
&lt;br&gt;the last 'reporting' stage at the end of 'make install' (after
&lt;br&gt;./configure --prefix=/mingw &amp;&amp; make -j2), I see the output
&lt;br&gt;&lt;br&gt;/bin/sh: -c: line 1: syntax error near unexpected token `;'
&lt;br&gt;/bin/sh: -c: line 1: `if test &amp;quot;X&amp;quot; = &amp;quot;X&amp;quot; ;
&lt;br&gt;then &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:
&lt;br&gt;;
&lt;br&gt;else &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if
&lt;br&gt;test &amp;quot;X&amp;quot; = &amp;quot;Xno&amp;quot;; then &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;&amp;quot;
&lt;br&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;&amp;quot;
&lt;br&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;Examples
&lt;br&gt;were built but installation was disabled.&amp;quot; ; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;&amp;quot;
&lt;br&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo &amp;quot;&amp;quot;
&lt;br&gt;;
&lt;br&gt;else &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for
&lt;br&gt;i in &amp;nbsp;; do &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo
&lt;br&gt;&amp;quot;----------------------&amp;quot;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo &amp;quot;Install
&lt;br&gt;${i}...&amp;quot; ; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; echo
&lt;br&gt;&amp;quot;----------------------&amp;quot;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cd ${i}
&lt;br&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;make install
&lt;br&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cd
&lt;br&gt;/home/John/sundials-2.4.0 ;
&lt;br&gt;echo &amp;quot;&amp;quot; ; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; done
&lt;br&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi
&lt;br&gt;; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi'
&lt;br&gt;make: *** [install] Error 2
&lt;br&gt;&lt;br&gt;&lt;br&gt;Evidently some small error in the shell scripting. Is this something
&lt;br&gt;other people have seen?
&lt;br&gt;&lt;br&gt;Cheers
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25927571&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Minor-problem-with-building-SUNDIALS-2.4.0-on-MinGW-MSYS-tp25927571p25927571.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25917208</id>
	<title>Re: SPAM-LOW:  Re: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-15T15:37:08Z</published>
	<updated>2009-10-15T15:37:08Z</updated>
	<author>
		<name>Radu Serban-3</name>
	</author>
	<content type="html">Francesco Pasqualini wrote:
&lt;br&gt;&amp;gt; Hi Alan,
&lt;br&gt;&amp;gt; to recapitulate, your suggestion will be to use the same tricky way
&lt;br&gt;&amp;gt; adopted in matlab but with CVOde or, eventually, to find a specific
&lt;br&gt;&amp;gt; DAE solver for my kind of rather complicated DAE?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thank you,
&lt;br&gt;&amp;gt; Francesco
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;Francesco,
&lt;br&gt;&lt;br&gt;Can you say more about your DAE? Of course, I'm not asking for all 153 
&lt;br&gt;equations, but rather a more compact description. What is its structure? 
&lt;br&gt;Why do you say it's index-3? Also, what is the &amp;quot;tricky way&amp;quot; of 
&lt;br&gt;converting it to an ODE? Is it an index reduction? An underlying ODE 
&lt;br&gt;obtained by manually eliminating the algebraic variables?
&lt;br&gt;&lt;br&gt;--Radu
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900344p25917208.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25916185</id>
	<title>Re: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-15T14:13:33Z</published>
	<updated>2009-10-15T14:13:33Z</updated>
	<author>
		<name>Radu Serban-3</name>
	</author>
	<content type="html">Randall Britten wrote:
&lt;br&gt;&amp;gt; Hi Alan
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Isn't there a GGL example amongst the IDA examples somewhere, which I think
&lt;br&gt;&amp;gt; is an index 2 example? &amp;nbsp;If I recall correctly IDA seems to solve that quite
&lt;br&gt;&amp;gt; well. &amp;nbsp;Is the performance when using IDA for index 2 systems well
&lt;br&gt;&amp;gt; understood, or just a matter of trial and error?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt; Randal
&lt;br&gt;&lt;br&gt;Randall,
&lt;br&gt;&lt;br&gt;There are two main issues with using IDA on a DAE of index higher than 1:
&lt;br&gt;(i) the supplied consistent initial condition function IDACalcIC only 
&lt;br&gt;works for index-1 systems;
&lt;br&gt;(ii) the stepsize selection algorithm is not designed to handle higher 
&lt;br&gt;index systems.
&lt;br&gt;&lt;br&gt;The idaSlCrank_dns example does indeed use the GGL 
&lt;br&gt;(Gear-Gupta-Leimkuhler) formulation, a stabilized index two formulation 
&lt;br&gt;of the index-3 DAE equations of motion for systems of rigid bodies. &amp;nbsp;In 
&lt;br&gt;order to solve this index-2 DAE with IDA (i.e., address the two issues 
&lt;br&gt;above), we:
&lt;br&gt;(i) provide consistent initial conditions for y and y', calculated with 
&lt;br&gt;some other method (for mechanical systems this is relatively 
&lt;br&gt;straightforward);
&lt;br&gt;(ii) exclude the algebraic variables (for mechanical systems these are 
&lt;br&gt;the Lagrange multipliers) from the integration error control estimates. 
&lt;br&gt;(Note however that all variables are included in the convergence test 
&lt;br&gt;for the corrector iteration.) With IDA, this can be done by calling the 
&lt;br&gt;function IDASetSuppressAlg after the type of each variable 
&lt;br&gt;(algebraic/differential) was specified through a call to IDASetId.
&lt;br&gt;&lt;br&gt;For more details on using a solver like IDA on higher-index DAEs, see 
&lt;br&gt;Brenan, Campbell, Petzold, &amp;quot;Numerical Solution of Initial-Value Problems 
&lt;br&gt;in Differential-Algebraic Equations&amp;quot;, SIAM, 1996.
&lt;br&gt;&lt;br&gt;Best,
&lt;br&gt;--Radu
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900344p25916185.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25913038</id>
	<title>Re: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-15T00:15:17Z</published>
	<updated>2009-10-15T00:15:17Z</updated>
	<author>
		<name>Francesco Pasqualini-3</name>
	</author>
	<content type="html">Hi Alan,
&lt;br&gt;to recapitulate, your suggestion will be to use the same tricky way
&lt;br&gt;adopted in matlab but with CVOde or, eventually, to find a specific
&lt;br&gt;DAE solver for my kind of rather complicated DAE?
&lt;br&gt;&lt;br&gt;Thank you,
&lt;br&gt;Francesco
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; ERROR
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; I obtain the error
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; [IDAS ERROR] &amp;nbsp;IDASolve
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp;At t =3D 0 and h =3D 0, the corrector convergence failed =
&lt;br&gt;repeatedly or
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; with |h| =3D hmin.
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; SUNDIALS_ERROR: IDASolve() failed with flag =3D -4
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;Francesco S. Pasqualini
&lt;br&gt;&lt;br&gt;Dottorando di Ricerca, Universit=E0 Politecnica delle Marche, Italia
&lt;br&gt;&lt;br&gt;PhD Student, Technical University of Marche, Italy
&lt;br&gt;&lt;br&gt;work: +390712204412
&lt;br&gt;mobile: +393208641004
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25913038&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;fspasqualini@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900344p25913038.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25912857</id>
	<title>RE: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-14T15:46:17Z</published>
	<updated>2009-10-14T15:46:17Z</updated>
	<author>
		<name>Randall Britten</name>
	</author>
	<content type="html">Hi Alan
&lt;br&gt;&lt;br&gt;Isn't there a GGL example amongst the IDA examples somewhere, which I think
&lt;br&gt;is an index 2 example? &amp;nbsp;If I recall correctly IDA seems to solve that quite
&lt;br&gt;well. &amp;nbsp;Is the performance when using IDA for index 2 systems well
&lt;br&gt;understood, or just a matter of trial and error?
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Randall
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; -----Original Message-----
&lt;br&gt;&amp;nbsp;&amp;gt; From: Alan Hindmarsh [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25912857&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;alanh@...&lt;/a&gt;]
&lt;br&gt;&amp;nbsp;&amp;gt; Sent: Thursday, 15 October 2009 11:36 a.m.
&lt;br&gt;&amp;nbsp;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25912857&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Subject: Re: [sundials-users] IDASolve() failed with flag = -4, for a
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; rather large set of equations
&lt;br&gt;&amp;nbsp;&amp;gt; Sender: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25912857&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;owner-sundials-users@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25912857&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; My guess is that your problem is outside the domain for which IDA
&lt;br&gt;&amp;nbsp;&amp;gt; can be expected to work, by virtue of the index, and possibly
&lt;br&gt;&amp;nbsp;&amp;gt; (even slightly) inaccurate initial values. &amp;nbsp;IDA was really designed
&lt;br&gt;&amp;nbsp;&amp;gt; for index-1 systems.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; -Alan H
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; On Thu, 15 Oct 2009, Francesco Pasqualini wrote:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Hi Alan,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; I don't see any actual errors in what you've supplied
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Great!
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; , but
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; there are two questionable things:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; uchh :D
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; 1. You have a comment about calling IDACalcIC, but no such call.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; Inconsistent IC is the most likely cause of the initial failure you
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; have.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; It would be very useful to know if IDACalcIC succeeds with whatever
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; you
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; give for initial guesses. &amp;nbsp;(It still might fail if the guesses are
&lt;br&gt;not
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; good enough.)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Well, the point is that my system is likely to be not index one, I am
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; developing my understanding of the basics in these same time period,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; so I can't be precise. My actual guess is that my systems is likely to
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; be in &amp;quot;The Hessenberg form of size three&amp;quot; and suspecting so, I am
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; following the advice of the manual &amp;quot;For problems that do not fall into
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; either of these categories, the user is responsible for passing
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; consistent values, or risk failure in the numerical integration.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; For the consistency of the initial conditions, at this point, I've
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; proceeded like that: I initialized my matlab routine, with a very
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; small time step so that it performs only one iteration, and then I use
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; the vector generated after this iteration to feed the C++ routine.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; They should be consistent.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; 2. Your iout loop appears to generate tout = 1, 1, 1, 2, 3, ... . &amp;nbsp;Do
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt; you have some reason for the extra calls with tout = 1?
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; That is a mistake I made, cause I've some macro defined and used in
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; that fragment, but in an attempt to simplify, I changed with 1.... in
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; fact the real number was 0.3, but actually the whole loop can be made
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; clearer: I must admit I've copied it from another examples :D
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; I attach another implementation where the loop is 1, 2, 3, ... , 10
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; and the error is still the original one.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; What do you suggest as best candidate to be the problem?
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Thank you,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Francesco
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; resval,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; int main()
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void *mem;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector y, ydot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector idv, avtol;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int iout, retval;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype rtol, atol, t0, tout, tret;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)y, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)ydot, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;avtol = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)avtol, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idv = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)idv, &amp;quot;id&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype id_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype ydot_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype IC[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for(int i=1; i&amp;lt;=NEQ; i++){
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(idv,i)=id_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(y,i)=IC[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(ydot,i) = ydot_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(avtol,i) = ATOL;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GPBdata = (UserData) malloc(sizeof *GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Set remaining inputs to IDAMalloc. */
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t0 = 0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rtol = 1.0e-5;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;atol = 1.0e-12;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// all IDACreate and IDAMalloc to initialize IDA.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mem = IDACreate();
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)mem, &amp;quot;IDACreate&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetUserData(mem, GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetUserData&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetId(mem, idv);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetId&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDAInit(mem, resGPB, t0, y, ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDAInit&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASStolerances(mem, rtol, atol);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASStolerances&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDADense(mem, NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDADense&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetSuppressAlg(mem, TRUE);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetSuppressAlg&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;Call IDACalcIC (with default options) to correct the initial
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; values.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tout = RCONST(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (iout = 1; iout &amp;lt;= 10; iout++) {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASolve(mem, iout*tout, &amp;tret, y, ydot,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; IDA_NORMAL);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASolve&amp;quot;, 1)) return(retval);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PrintOutput(mem, tret, y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(idv);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IDAFree(&amp;mem);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;free(GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return(0);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; /*
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;* Define the system residual function.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector
&lt;br&gt;rr,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data){
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; ...
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; ERROR
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; I obtain the error
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; [IDAS ERROR] &amp;nbsp;IDASolve
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; At t = 0 and h = 0, the corrector convergence failed repeatedly or
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; with |h| = hmin.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; SUNDIALS_ERROR: IDASolve() failed with flag = -4
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Francesco S. Pasqualini
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;---------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp;&amp;gt; -------------------------------------
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900344p25912857.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25900344</id>
	<title>Re: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-14T15:36:07Z</published>
	<updated>2009-10-14T15:36:07Z</updated>
	<author>
		<name>Alan Hindmarsh</name>
	</author>
	<content type="html">rather large set of equations
&lt;br&gt;Sender: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900344&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;owner-sundials-users@...&lt;/a&gt;
&lt;br&gt;Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900344&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;My guess is that your problem is outside the domain for which IDA
&lt;br&gt;can be expected to work, by virtue of the index, and possibly
&lt;br&gt;(even slightly) inaccurate initial values. &amp;nbsp;IDA was really designed
&lt;br&gt;for index-1 systems.
&lt;br&gt;&lt;br&gt;-Alan H
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Thu, 15 Oct 2009, Francesco Pasqualini wrote:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; Hi Alan,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; I don't see any actual errors in what you've supplied
&lt;br&gt;&amp;nbsp;&amp;gt; Great!
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; , but
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; there are two questionable things:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; uchh :D
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; 1. You have a comment about calling IDACalcIC, but no such call.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; Inconsistent IC is the most likely cause of the initial failure you
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; have.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; It would be very useful to know if IDACalcIC succeeds with whatever
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; you
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; give for initial guesses. &amp;nbsp;(It still might fail if the guesses are not
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; good enough.)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Well, the point is that my system is likely to be not index one, I am
&lt;br&gt;&amp;nbsp;&amp;gt; developing my understanding of the basics in these same time period,
&lt;br&gt;&amp;nbsp;&amp;gt; so I can't be precise. My actual guess is that my systems is likely to
&lt;br&gt;&amp;nbsp;&amp;gt; be in &amp;quot;The Hessenberg form of size three&amp;quot; and suspecting so, I am
&lt;br&gt;&amp;nbsp;&amp;gt; following the advice of the manual &amp;quot;For problems that do not fall into
&lt;br&gt;&amp;nbsp;&amp;gt; either of these categories, the user is responsible for passing
&lt;br&gt;&amp;nbsp;&amp;gt; consistent values, or risk failure in the numerical integration.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; For the consistency of the initial conditions, at this point, I've
&lt;br&gt;&amp;nbsp;&amp;gt; proceeded like that: I initialized my matlab routine, with a very
&lt;br&gt;&amp;nbsp;&amp;gt; small time step so that it performs only one iteration, and then I use
&lt;br&gt;&amp;nbsp;&amp;gt; the vector generated after this iteration to feed the C++ routine.
&lt;br&gt;&amp;nbsp;&amp;gt; They should be consistent.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; 2. Your iout loop appears to generate tout = 1, 1, 1, 2, 3, ... . &amp;nbsp;Do
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt; you have some reason for the extra calls with tout = 1?
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; That is a mistake I made, cause I've some macro defined and used in
&lt;br&gt;&amp;nbsp;&amp;gt; that fragment, but in an attempt to simplify, I changed with 1.... in
&lt;br&gt;&amp;nbsp;&amp;gt; fact the real number was 0.3, but actually the whole loop can be made
&lt;br&gt;&amp;nbsp;&amp;gt; clearer: I must admit I've copied it from another examples :D
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I attach another implementation where the loop is 1, 2, 3, ... , 10
&lt;br&gt;&amp;nbsp;&amp;gt; and the error is still the original one.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; What do you suggest as best candidate to be the problem?
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thank you,
&lt;br&gt;&amp;nbsp;&amp;gt; Francesco
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector
&lt;br&gt;&amp;nbsp;&amp;gt; resval,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; int main()
&lt;br&gt;&amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void *mem;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector y, ydot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector idv, avtol;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int iout, retval;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype rtol, atol, t0, tout, tret;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)y, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)ydot, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;avtol = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)avtol, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idv = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)idv, &amp;quot;id&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype id_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype ydot_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype IC[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for(int i=1; i&amp;lt;=NEQ; i++){
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(idv,i)=id_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(y,i)=IC[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(ydot,i) = ydot_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(avtol,i) = ATOL;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GPBdata = (UserData) malloc(sizeof *GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Set remaining inputs to IDAMalloc. */
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t0 = 0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rtol = 1.0e-5;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;atol = 1.0e-12;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// all IDACreate and IDAMalloc to initialize IDA.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mem = IDACreate();
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)mem, &amp;quot;IDACreate&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetUserData(mem, GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetUserData&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetId(mem, idv);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetId&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDAInit(mem, resGPB, t0, y, ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDAInit&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASStolerances(mem, rtol, atol);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASStolerances&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDADense(mem, NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDADense&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetSuppressAlg(mem, TRUE);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetSuppressAlg&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;Call IDACalcIC (with default options) to correct the initial
&lt;br&gt;&amp;nbsp;&amp;gt; values.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tout = RCONST(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (iout = 1; iout &amp;lt;= 10; iout++) {
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASolve(mem, iout*tout, &amp;tret, y, ydot,
&lt;br&gt;&amp;nbsp;&amp;gt; IDA_NORMAL);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASolve&amp;quot;, 1)) return(retval);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PrintOutput(mem, tret, y);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(idv);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IDAFree(&amp;mem);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;free(GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return(0);
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; /*
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;* Define the system residual function.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector rr,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data){
&lt;br&gt;&amp;nbsp;&amp;gt; ...
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; ERROR
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I obtain the error
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; [IDAS ERROR] &amp;nbsp;IDASolve
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; At t = 0 and h = 0, the corrector convergence failed repeatedly or
&lt;br&gt;&amp;nbsp;&amp;gt; with |h| = hmin.
&lt;br&gt;&amp;nbsp;&amp;gt; SUNDIALS_ERROR: IDASolve() failed with flag = -4
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Francesco S. Pasqualini
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900344p25900344.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25900329</id>
	<title>Re: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-14T15:36:06Z</published>
	<updated>2009-10-14T15:36:06Z</updated>
	<author>
		<name>Francesco Pasqualini-3</name>
	</author>
	<content type="html">rather large set of equations
&lt;br&gt;Date: Thu, 15 Oct 2009 00:08:39 +0200
&lt;br&gt;Sender: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900329&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;owner-sundials-users@...&lt;/a&gt;
&lt;br&gt;Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900329&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;Hi Alan,
&lt;br&gt;&amp;nbsp;&amp;gt; I don't see any actual errors in what you've supplied
&lt;br&gt;Great!
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; , but
&lt;br&gt;&amp;nbsp;&amp;gt; there are two questionable things:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;uchh :D
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; 1. You have a comment about calling IDACalcIC, but no such call.
&lt;br&gt;&amp;nbsp;&amp;gt; Inconsistent IC is the most likely cause of the initial failure you
&lt;br&gt;&amp;nbsp;&amp;gt; have.
&lt;br&gt;&amp;nbsp;&amp;gt; It would be very useful to know if IDACalcIC succeeds with whatever
&lt;br&gt;&amp;nbsp;&amp;gt; you
&lt;br&gt;&amp;nbsp;&amp;gt; give for initial guesses. &amp;nbsp;(It still might fail if the guesses are not
&lt;br&gt;&amp;nbsp;&amp;gt; good enough.)
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;Well, the point is that my system is likely to be not index one, I am
&lt;br&gt;developing my understanding of the basics in these same time period,
&lt;br&gt;so I can't be precise. My actual guess is that my systems is likely to
&lt;br&gt;be in &amp;quot;The Hessenberg form of size three&amp;quot; and suspecting so, I am
&lt;br&gt;following the advice of the manual &amp;quot;For problems that do not fall into
&lt;br&gt;either of these categories, the user is responsible for passing
&lt;br&gt;consistent values, or risk failure in the numerical integration.
&lt;br&gt;&lt;br&gt;For the consistency of the initial conditions, at this point, I've
&lt;br&gt;proceeded like that: I initialized my matlab routine, with a very
&lt;br&gt;small time step so that it performs only one iteration, and then I use
&lt;br&gt;the vector generated after this iteration to feed the C++ routine.
&lt;br&gt;They should be consistent.
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; 2. Your iout loop appears to generate tout = 1, 1, 1, 2, 3, ... . &amp;nbsp;Do
&lt;br&gt;&amp;nbsp;&amp;gt; you have some reason for the extra calls with tout = 1?
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;That is a mistake I made, cause I've some macro defined and used in
&lt;br&gt;that fragment, but in an attempt to simplify, I changed with 1.... in
&lt;br&gt;fact the real number was 0.3, but actually the whole loop can be made
&lt;br&gt;clearer: I must admit I've copied it from another examples :D
&lt;br&gt;&lt;br&gt;I attach another implementation where the loop is 1, 2, 3, ... , 10
&lt;br&gt;and the error is still the original one.
&lt;br&gt;&lt;br&gt;What do you suggest as best candidate to be the problem?
&lt;br&gt;&lt;br&gt;Thank you,
&lt;br&gt;Francesco
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&lt;br&gt;static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector
&lt;br&gt;resval,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void *user_data);
&lt;br&gt;&lt;br&gt;int main()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *mem;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; N_Vector y, ydot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; N_Vector idv, avtol;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int iout, retval;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; realtype rtol, atol, t0, tout, tret;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag((void *)y, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ydot = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag((void *)ydot, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;avtol = N_VNew_Serial(NEQ);
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)avtol, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; idv = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag((void *)idv, &amp;quot;id&amp;quot;, 0)) return(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; realtype id_vect[] = {...};
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; realtype ydot_vect[] = {...};
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; realtype IC[] = {...};
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(int i=1; i&amp;lt;=NEQ; i++){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ith(idv,i)=id_vect[i-1];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ith(y,i)=IC[i-1];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ith(ydot,i) = ydot_vect[i-1];
&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(avtol,i) = ATOL;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GPBdata = (UserData) malloc(sizeof *GPBdata);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Set remaining inputs to IDAMalloc. */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t0 = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rtol = 1.0e-5;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; atol = 1.0e-12;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // all IDACreate and IDAMalloc to initialize IDA.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mem = IDACreate();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag((void *)mem, &amp;quot;IDACreate&amp;quot;, 0)) return(1);
&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetUserData(mem, GPBdata);
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetUserData&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retval = IDASetId(mem, idv);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag(&amp;retval, &amp;quot;IDASetId&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retval = IDAInit(mem, resGPB, t0, y, ydot);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag(&amp;retval, &amp;quot;IDAInit&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retval = IDASStolerances(mem, rtol, atol);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag(&amp;retval, &amp;quot;IDASStolerances&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retval = IDADense(mem, NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag(&amp;retval, &amp;quot;IDADense&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetSuppressAlg(mem, TRUE);
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetSuppressAlg&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;Call IDACalcIC (with default options) to correct the initial
&lt;br&gt;values.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tout = RCONST(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (iout = 1; iout &amp;lt;= 10; iout++) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retval = IDASolve(mem, iout*tout, &amp;tret, y, ydot,
&lt;br&gt;IDA_NORMAL);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(check_flag(&amp;retval, &amp;quot;IDASolve&amp;quot;, 1)) return(retval);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PrintOutput(mem, tret, y);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; N_VDestroy_Serial(y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; N_VDestroy_Serial(ydot);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; N_VDestroy_Serial(idv);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IDAFree(&amp;mem);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(GPBdata);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return(0);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;/*
&lt;br&gt;&amp;nbsp; &amp;nbsp; * Define the system residual function.
&lt;br&gt;&amp;nbsp; &amp;nbsp; */
&lt;br&gt;&lt;br&gt;&lt;br&gt;static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector rr,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void *user_data){
&lt;br&gt;...
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;ERROR
&lt;br&gt;&lt;br&gt;I obtain the error
&lt;br&gt;&lt;br&gt;[IDAS ERROR] &amp;nbsp;IDASolve
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;At t = 0 and h = 0, the corrector convergence failed repeatedly or
&lt;br&gt;with |h| = hmin.
&lt;br&gt;SUNDIALS_ERROR: IDASolve() failed with flag = -4
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&lt;br&gt;Francesco S. Pasqualini
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;- &amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900329p25900329.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25900297</id>
	<title>Re: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-14T14:46:01Z</published>
	<updated>2009-10-14T14:46:01Z</updated>
	<author>
		<name>Alan Hindmarsh</name>
	</author>
	<content type="html">rather large set of equations
&lt;br&gt;Sender: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900297&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;owner-sundials-users@...&lt;/a&gt;
&lt;br&gt;Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900297&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;Hello Francesco,
&lt;br&gt;&lt;br&gt;I don't see any actual errors in what you've supplied, but
&lt;br&gt;there are two questionable things:
&lt;br&gt;&lt;br&gt;1. You have a comment about calling IDACalcIC, but no such call.
&lt;br&gt;Inconsistent IC is the most likely cause of the initial failure you have.
&lt;br&gt;It would be very useful to know if IDACalcIC succeeds with whatever you
&lt;br&gt;give for initial guesses. &amp;nbsp;(It still might fail if the guesses are not
&lt;br&gt;good enough.)
&lt;br&gt;&lt;br&gt;2. Your iout loop appears to generate tout = 1, 1, 1, 2, 3, ... . &amp;nbsp;Do
&lt;br&gt;you have some reason for the extra calls with tout = 1?
&lt;br&gt;&lt;br&gt;-Alan H
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Wed, 14 Oct 2009, Francesco Pasqualini wrote:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; Hi everybody,
&lt;br&gt;&amp;nbsp;&amp;gt; I am working on the C++ implementation of an IVP problem described by
&lt;br&gt;&amp;nbsp;&amp;gt; a DAE system composed of 153 equations (NEQ), 39 among them being
&lt;br&gt;&amp;nbsp;&amp;gt; differential, and the relationships are non-linear. A Nightmare to
&lt;br&gt;&amp;nbsp;&amp;gt; start with, and of course I am running into troubles with IDASolve().
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I want to state that:
&lt;br&gt;&amp;nbsp;&amp;gt; 1) I've run the Robertson kinetics DAE serial example problem, and I
&lt;br&gt;&amp;nbsp;&amp;gt; successfully modified some part of it
&lt;br&gt;&amp;nbsp;&amp;gt; 2) I got the same system of equation coded in Matlab, but in a tricky
&lt;br&gt;&amp;nbsp;&amp;gt; way using ODE15s and a ODE formulation, with recalculation of all the
&lt;br&gt;&amp;nbsp;&amp;gt; algebraic part (this code is not mine)
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; GENERAL INFORMATION:
&lt;br&gt;&amp;nbsp;&amp;gt; I am on a MacOsX machine and I am using Xcode.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; EXAMPLE OF THE CODE
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I attach an extract of the code, with all the relevant part. For the
&lt;br&gt;&amp;nbsp;&amp;gt; sake of simplicity I've removed very long list of numbers and the
&lt;br&gt;&amp;nbsp;&amp;gt; actual residual function. If anyone wants to help I would be happy
&lt;br&gt;&amp;nbsp;&amp;gt; sending the actual code.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; The initial conditions are provided using the matlab code to generate
&lt;br&gt;&amp;nbsp;&amp;gt; the set of values, so they shouldn't be the problem.
&lt;br&gt;&amp;nbsp;&amp;gt; I suspect the problem could be with the formulation of the residual
&lt;br&gt;&amp;nbsp;&amp;gt; function, but I would like an opinion, before going to find an error
&lt;br&gt;&amp;nbsp;&amp;gt; in the formulation of so many equations.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector
&lt;br&gt;&amp;nbsp;&amp;gt; resval,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; int main()
&lt;br&gt;&amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void *mem;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector y, ydot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector idv, avtol;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int iout, retval;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype rtol, atol, t0, tout, tret;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)y, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)ydot, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;avtol = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)avtol, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idv = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)idv, &amp;quot;id&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype id_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype ydot_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype IC[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for(int i=1; i&amp;lt;=NEQ; i++){
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(idv,i)=id_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(y,i)=IC[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(ydot,i) = ydot_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(avtol,i) = ATOL;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GPBdata = (UserData) malloc(sizeof *GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Set remaining inputs to IDAMalloc. */
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t0 = 0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rtol = 1.0e-5;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;atol = 1.0e-12;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// all IDACreate and IDAMalloc to initialize IDA.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mem = IDACreate();
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)mem, &amp;quot;IDACreate&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetUserData(mem, GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetUserData&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetId(mem, idv);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetId&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDAInit(mem, resGPB, t0, y, ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDAInit&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASStolerances(mem, rtol, atol);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASStolerances&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDADense(mem, NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDADense&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetSuppressAlg(mem, TRUE);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetSuppressAlg&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;Call IDACalcIC (with default options) to correct the initial values.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tout = RCONST(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (iout = 1; iout &amp;lt;= 10; iout++) {
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASolve(mem, tout, &amp;tret, y, ydot, IDA_NORMAL);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASolve&amp;quot;, 1)) return(retval);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PrintOutput(mem, tret, y);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (iout &amp;lt; 3) tout *= 1; else tout += 1;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(idv);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IDAFree(&amp;mem);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;free(GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return(0);
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; /*
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;* Define the system residual function.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector rr,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data){
&lt;br&gt;&amp;nbsp;&amp;gt; ...
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; ERROR
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I obtain the error
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; [IDAS ERROR] &amp;nbsp;IDASolve
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; At t = 0 and h = 0, the corrector convergence failed repeatedly or
&lt;br&gt;&amp;nbsp;&amp;gt; with |h| = hmin.
&lt;br&gt;&amp;nbsp;&amp;gt; SUNDIALS_ERROR: IDASolve() failed with flag = -4
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Any help will be very much appreciated.
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks in advance
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Francesco S. Pasqualini
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900297p25900297.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25900326</id>
	<title>Re: IDASolve() failed with flag = -4, for a</title>
	<published>2009-10-14T14:46:01Z</published>
	<updated>2009-10-14T14:46:01Z</updated>
	<author>
		<name>Alan Hindmarsh</name>
	</author>
	<content type="html">rather large set of equations
&lt;br&gt;Sender: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900326&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;owner-sundials-users@...&lt;/a&gt;
&lt;br&gt;Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25900326&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;Hello Francesco,
&lt;br&gt;&lt;br&gt;I don't see any actual errors in what you've supplied, but
&lt;br&gt;there are two questionable things:
&lt;br&gt;&lt;br&gt;1. You have a comment about calling IDACalcIC, but no such call.
&lt;br&gt;Inconsistent IC is the most likely cause of the initial failure you have.
&lt;br&gt;It would be very useful to know if IDACalcIC succeeds with whatever you
&lt;br&gt;give for initial guesses. &amp;nbsp;(It still might fail if the guesses are not
&lt;br&gt;good enough.)
&lt;br&gt;&lt;br&gt;2. Your iout loop appears to generate tout = 1, 1, 1, 2, 3, ... . &amp;nbsp;Do
&lt;br&gt;you have some reason for the extra calls with tout = 1?
&lt;br&gt;&lt;br&gt;-Alan H
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Wed, 14 Oct 2009, Francesco Pasqualini wrote:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt; Hi everybody,
&lt;br&gt;&amp;nbsp;&amp;gt; I am working on the C++ implementation of an IVP problem described by
&lt;br&gt;&amp;nbsp;&amp;gt; a DAE system composed of 153 equations (NEQ), 39 among them being
&lt;br&gt;&amp;nbsp;&amp;gt; differential, and the relationships are non-linear. A Nightmare to
&lt;br&gt;&amp;nbsp;&amp;gt; start with, and of course I am running into troubles with IDASolve().
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I want to state that:
&lt;br&gt;&amp;nbsp;&amp;gt; 1) I've run the Robertson kinetics DAE serial example problem, and I
&lt;br&gt;&amp;nbsp;&amp;gt; successfully modified some part of it
&lt;br&gt;&amp;nbsp;&amp;gt; 2) I got the same system of equation coded in Matlab, but in a tricky
&lt;br&gt;&amp;nbsp;&amp;gt; way using ODE15s and a ODE formulation, with recalculation of all the
&lt;br&gt;&amp;nbsp;&amp;gt; algebraic part (this code is not mine)
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; GENERAL INFORMATION:
&lt;br&gt;&amp;nbsp;&amp;gt; I am on a MacOsX machine and I am using Xcode.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; EXAMPLE OF THE CODE
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I attach an extract of the code, with all the relevant part. For the
&lt;br&gt;&amp;nbsp;&amp;gt; sake of simplicity I've removed very long list of numbers and the
&lt;br&gt;&amp;nbsp;&amp;gt; actual residual function. If anyone wants to help I would be happy
&lt;br&gt;&amp;nbsp;&amp;gt; sending the actual code.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; The initial conditions are provided using the matlab code to generate
&lt;br&gt;&amp;nbsp;&amp;gt; the set of values, so they shouldn't be the problem.
&lt;br&gt;&amp;nbsp;&amp;gt; I suspect the problem could be with the formulation of the residual
&lt;br&gt;&amp;nbsp;&amp;gt; function, but I would like an opinion, before going to find an error
&lt;br&gt;&amp;nbsp;&amp;gt; in the formulation of so many equations.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector
&lt;br&gt;&amp;nbsp;&amp;gt; resval,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; int main()
&lt;br&gt;&amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void *mem;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector y, ydot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector idv, avtol;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int iout, retval;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype rtol, atol, t0, tout, tret;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)y, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)ydot, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;avtol = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)avtol, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idv = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)idv, &amp;quot;id&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype id_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype ydot_vect[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype IC[] = {...};
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for(int i=1; i&amp;lt;=NEQ; i++){
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(idv,i)=id_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(y,i)=IC[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(ydot,i) = ydot_vect[i-1];
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(avtol,i) = ATOL;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GPBdata = (UserData) malloc(sizeof *GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Set remaining inputs to IDAMalloc. */
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t0 = 0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rtol = 1.0e-5;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;atol = 1.0e-12;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// all IDACreate and IDAMalloc to initialize IDA.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mem = IDACreate();
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)mem, &amp;quot;IDACreate&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetUserData(mem, GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetUserData&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetId(mem, idv);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetId&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDAInit(mem, resGPB, t0, y, ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDAInit&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASStolerances(mem, rtol, atol);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASStolerances&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDADense(mem, NEQ);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDADense&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetSuppressAlg(mem, TRUE);
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetSuppressAlg&amp;quot;, 1)) return(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; // &amp;nbsp; &amp;nbsp; &amp;nbsp;Call IDACalcIC (with default options) to correct the initial values.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tout = RCONST(1);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (iout = 1; iout &amp;lt;= 10; iout++) {
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASolve(mem, tout, &amp;tret, y, ydot, IDA_NORMAL);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASolve&amp;quot;, 1)) return(retval);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PrintOutput(mem, tret, y);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (iout &amp;lt; 3) tout *= 1; else tout += 1;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(ydot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(idv);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IDAFree(&amp;mem);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;free(GPBdata);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return(0);
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; /*
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;* Define the system residual function.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector rr,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data){
&lt;br&gt;&amp;nbsp;&amp;gt; ...
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; ERROR
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I obtain the error
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; [IDAS ERROR] &amp;nbsp;IDASolve
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; At t = 0 and h = 0, the corrector convergence failed repeatedly or
&lt;br&gt;&amp;nbsp;&amp;gt; with |h| = hmin.
&lt;br&gt;&amp;nbsp;&amp;gt; SUNDIALS_ERROR: IDASolve() failed with flag = -4
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Any help will be very much appreciated.
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks in advance
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Francesco S. Pasqualini
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-tp25900326p25900326.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25899321</id>
	<title>IDASolve() failed with flag = -4, for a rather large set of equations</title>
	<published>2009-10-14T13:34:18Z</published>
	<updated>2009-10-14T13:34:18Z</updated>
	<author>
		<name>Francesco Pasqualini-3</name>
	</author>
	<content type="html">Hi everybody,
&lt;br&gt;I am working on the C++ implementation of an IVP problem described by
&lt;br&gt;a DAE system composed of 153 equations (NEQ), 39 among them being
&lt;br&gt;differential, and the relationships are non-linear. A Nightmare to
&lt;br&gt;start with, and of course I am running into troubles with IDASolve().
&lt;br&gt;&lt;br&gt;I want to state that:
&lt;br&gt;1) I've run the Robertson kinetics DAE serial example problem, and I
&lt;br&gt;successfully modified some part of it
&lt;br&gt;2) I got the same system of equation coded in Matlab, but in a tricky
&lt;br&gt;way using ODE15s and a ODE formulation, with recalculation of all the
&lt;br&gt;algebraic part (this code is not mine)
&lt;br&gt;&lt;br&gt;&lt;br&gt;GENERAL INFORMATION:
&lt;br&gt;I am on a MacOsX machine and I am using Xcode.
&lt;br&gt;&lt;br&gt;&lt;br&gt;EXAMPLE OF THE CODE
&lt;br&gt;&lt;br&gt;I attach an extract of the code, with all the relevant part. For the
&lt;br&gt;sake of simplicity I've removed very long list of numbers and the
&lt;br&gt;actual residual function. If anyone wants to help I would be happy
&lt;br&gt;sending the actual code.
&lt;br&gt;&lt;br&gt;The initial conditions are provided using the matlab code to generate
&lt;br&gt;the set of values, so they shouldn't be the problem.
&lt;br&gt;I suspect the problem could be with the formulation of the residual
&lt;br&gt;function, but I would like an opinion, before going to find an error
&lt;br&gt;in the formulation of so many equations.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector
&lt;br&gt;resval,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data);
&lt;br&gt;&lt;br&gt;int main()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;void *mem;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector y, ydot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_Vector idv, avtol;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int iout, retval;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype rtol, atol, t0, tout, tret;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)y, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)ydot, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;avtol = N_VNew_Serial(NEQ);
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)avtol, &amp;quot;N_VNew_Serial&amp;quot;, 0)) return(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;idv = N_VNew_Serial(NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)idv, &amp;quot;id&amp;quot;, 0)) return(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype id_vect[] = {...};
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype ydot_vect[] = {...};
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;realtype IC[] = {...};
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for(int i=1; i&amp;lt;=NEQ; i++){
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(idv,i)=id_vect[i-1];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(y,i)=IC[i-1];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(ydot,i) = ydot_vect[i-1];
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Ith(avtol,i) = ATOL;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GPBdata = (UserData) malloc(sizeof *GPBdata);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Set remaining inputs to IDAMalloc. */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t0 = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rtol = 1.0e-5;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;atol = 1.0e-12;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// all IDACreate and IDAMalloc to initialize IDA.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mem = IDACreate();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag((void *)mem, &amp;quot;IDACreate&amp;quot;, 0)) return(1);
&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetUserData(mem, GPBdata);
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetUserData&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetId(mem, idv);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetId&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDAInit(mem, resGPB, t0, y, ydot);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDAInit&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASStolerances(mem, rtol, atol);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASStolerances&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDADense(mem, NEQ);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDADense&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASetSuppressAlg(mem, TRUE);
&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASetSuppressAlg&amp;quot;, 1)) return(1);
&lt;br&gt;&lt;br&gt;// &amp;nbsp; &amp;nbsp; &amp;nbsp;Call IDACalcIC (with default options) to correct the initial values.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tout = RCONST(1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (iout = 1; iout &amp;lt;= 10; iout++) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retval = IDASolve(mem, tout, &amp;tret, y, ydot, IDA_NORMAL);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(check_flag(&amp;retval, &amp;quot;IDASolve&amp;quot;, 1)) return(retval);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PrintOutput(mem, tret, y);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (iout &amp;lt; 3) tout *= 1; else tout += 1;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(ydot);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N_VDestroy_Serial(idv);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IDAFree(&amp;mem);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;free(GPBdata);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return(0);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;/*
&lt;br&gt;&amp;nbsp; &amp;nbsp;* Define the system residual function.
&lt;br&gt;&amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&lt;br&gt;&lt;br&gt;static int resGPB(realtype time, N_Vector y, N_Vector ydot, N_Vector rr,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; void *user_data){
&lt;br&gt;...
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;ERROR
&lt;br&gt;&lt;br&gt;I obtain the error
&lt;br&gt;&lt;br&gt;[IDAS ERROR] &amp;nbsp;IDASolve
&lt;br&gt;&amp;nbsp; &amp;nbsp; At t = 0 and h = 0, the corrector convergence failed repeatedly or
&lt;br&gt;with |h| = hmin.
&lt;br&gt;SUNDIALS_ERROR: IDASolve() failed with flag = -4
&lt;br&gt;&lt;br&gt;&lt;br&gt;Any help will be very much appreciated.
&lt;br&gt;Thanks in advance
&lt;br&gt;&lt;br&gt;Francesco S. Pasqualini
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/IDASolve%28%29-failed-with-flag-%3D--4%2C-for-a-rather-large-set-of-equations-tp25899321p25899321.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25896419</id>
	<title>Re: Drastic Change in &quot;y&quot; After Call to CVNlsNewton()</title>
	<published>2009-10-14T11:24:28Z</published>
	<updated>2009-10-14T11:24:28Z</updated>
	<author>
		<name>bowens1</name>
	</author>
	<content type="html">I have determined this was a minor problem with a pointer being set in my RHSfunction. Sorry about the additional post. I am finally starting to work with the N_Vector type.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;bowens1 wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hello,
&lt;br&gt;&lt;br&gt;Thank you for the assistance on the previous problem, that issue has been resolved.
&lt;br&gt;&lt;br&gt;I am trying to make some headway implementing sundials into my FEA code. However, at the first requested time &amp;quot;tout&amp;quot;, the solution is obviously incorrect. I have implemented this algorithm in MATLAB with success, and am seeing very different trends in the C++ implementation.
&lt;br&gt;&lt;br&gt;The drastic change in &amp;quot;y&amp;quot; appears to occur at the RHS function call on Line 2668 of covde.c in the CVNlsNewton() function. For example, I should expect values of y around [.79 .77 .75] but instead CVode is returning something like [101.78 100.2 100.2]. Definitely, a far cry from the values I expect from my validated MATLAB code.
&lt;br&gt;&lt;br&gt;If needed, here are my setting and initializations. These are the same settings I am using in my MATLAB implementation that has worked.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t0 = 0.0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //y = N_VMake_Serial(totalNumDof,u_s);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; abstol = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ydot = N_VNew_Serial(totalNumDof);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reltol = 1e-4;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i=0;i&amp;lt;totalNumDof;i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NV_Ith_S(y,i) = u_s[i];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NV_Ith_S(abstol,i) = reltol*100.0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cvode_mem = CVodeCreate(CV_BDF,CV_NEWTON);			
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeInit(cvode_mem,RHSfunction, t0, y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeSVtolerances(cvode_mem, reltol, abstol);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVDense(cvode_mem, totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeSetUserData(cvode_mem,this);
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25879547p25896419.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25896841</id>
	<title>Re: Drastic Change in &quot;y&quot; After Call to CVNlsNewton()</title>
	<published>2009-10-14T11:24:28Z</published>
	<updated>2009-10-14T11:24:28Z</updated>
	<author>
		<name>bowens1</name>
	</author>
	<content type="html">I have determined this was a minor problem with a pointer being set in my
&lt;br&gt;RHSfunction. Sorry about the additional post. I am finally starting to work
&lt;br&gt;with the N_Vector type.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;bowens1 wrote:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Hello,
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thank you for the assistance on the previous problem, that issue has been
&lt;br&gt;&amp;nbsp;&amp;gt; resolved.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I am trying to make some headway implementing sundials into my FEA code.
&lt;br&gt;&amp;nbsp;&amp;gt; However, at the first requested time &amp;quot;tout&amp;quot;, the solution is obviously
&lt;br&gt;&amp;nbsp;&amp;gt; incorrect. I have implemented this algorithm in MATLAB with success, and
&lt;br&gt;&amp;nbsp;&amp;gt; am seeing very different trends in the C++ implementation.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; The drastic change in &amp;quot;y&amp;quot; appears to occur at the RHS function call on
&lt;br&gt;&amp;nbsp;&amp;gt; Line 2668 of covde.c in the CVNlsNewton() function. For example, I should
&lt;br&gt;&amp;nbsp;&amp;gt; expect values of y around [.79 .77 .75] but instead CVode is returning
&lt;br&gt;&amp;nbsp;&amp;gt; something like [101.78 100.2 100.2]. Definitely, a far cry from the values
&lt;br&gt;&amp;nbsp;&amp;gt; I expect from my validated MATLAB code.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; If needed, here are my setting and initializations. These are the same
&lt;br&gt;&amp;nbsp;&amp;gt; settings I am using in my MATLAB implementation that has worked.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t0 = 0.0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //y = N_VMake_Serial(totalNumDof,u_s);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; abstol = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ydot = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reltol = 1e-4;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i=0;i&amp;lt;totalNumDof;i++)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NV_Ith_S(y,i) = u_s[i];
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NV_Ith_S(abstol,i) = reltol*100.0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cvode_mem = 
&lt;br&gt;CVodeCreate(CV_BDF,CV_NEWTON);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeInit(cvode_mem,RHSfunction, t0, y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeSVtolerances(cvode_mem, reltol, abstol);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVDense(cvode_mem, totalNumDof);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeSetUserData(cvode_mem,this);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks,
&lt;br&gt;&amp;nbsp;&amp;gt; Brian
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;View this message in context: 
&lt;br&gt;&lt;a href=&quot;http://*www.*nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25879547p25896419.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://*www.*nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25879547p25896419.html&lt;/a&gt;&lt;br&gt;Sent from the Sundials - Users mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25896841&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25879547p25896841.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25879547</id>
	<title>Drastic Change in &quot;y&quot; After Call to CVNlsNewton()</title>
	<published>2009-10-13T12:47:08Z</published>
	<updated>2009-10-13T12:47:08Z</updated>
	<author>
		<name>bowens1</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;Thank you for the assistance on the previous problem, that issue has been resolved.
&lt;br&gt;&lt;br&gt;I am trying to make some headway implementing sundials into my FEA code. However, at the first requested time &amp;quot;tout&amp;quot;, the solution is obviously incorrect. I have implemented this algorithm in MATLAB with success, and am seeing very different trends in the C++ implementation.
&lt;br&gt;&lt;br&gt;The drastic change in &amp;quot;y&amp;quot; appears to occur at the RHS function call on Line 2668 of covde.c in the CVNlsNewton() function. For example, I should expect values of y around [.79 .77 .75] but instead CVode is returning something like [101.78 100.2 100.2]. Definitely, a far cry from the values I expect from my validated MATLAB code.
&lt;br&gt;&lt;br&gt;If needed, here are my setting and initializations. These are the same settings I am using in my MATLAB implementation that has worked.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t0 = 0.0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //y = N_VMake_Serial(totalNumDof,u_s);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; y = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; abstol = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ydot = N_VNew_Serial(totalNumDof);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reltol = 1e-4;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i=0;i&amp;lt;totalNumDof;i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NV_Ith_S(y,i) = u_s[i];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NV_Ith_S(abstol,i) = reltol*100.0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cvode_mem = CVodeCreate(CV_BDF,CV_NEWTON);			
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeInit(cvode_mem,RHSfunction, t0, y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeSVtolerances(cvode_mem, reltol, abstol);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVDense(cvode_mem, totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag = CVodeSetUserData(cvode_mem,this);
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25879547p25879547.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25880340</id>
	<title>Drastic Change in &quot;y&quot; After Call to CVNlsNewton()</title>
	<published>2009-10-13T12:47:08Z</published>
	<updated>2009-10-13T12:47:08Z</updated>
	<author>
		<name>bowens1</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;Thank you for the assistance on the previous problem, that issue has been
&lt;br&gt;resolved.
&lt;br&gt;&lt;br&gt;I am trying to make some headway implementing sundials into my FEA code.
&lt;br&gt;However, at the first requested time &amp;quot;tout&amp;quot;, the solution is obviously
&lt;br&gt;incorrect. I have implemented this algorithm in MATLAB with success, and am
&lt;br&gt;seeing very different trends in the C++ implementation.
&lt;br&gt;&lt;br&gt;The drastic change in &amp;quot;y&amp;quot; appears to occur at the RHS function call on Line
&lt;br&gt;2668 of covde.c in the CVNlsNewton() function. For example, I should expect
&lt;br&gt;values of y around [.79 .77 .75] but instead CVode is returning something
&lt;br&gt;like [101.78 100.2 100.2]. Definitely, a far cry from the values I expect
&lt;br&gt;from my validated MATLAB code.
&lt;br&gt;&lt;br&gt;If needed, here are my setting and initializations. These are the same
&lt;br&gt;settings I am using in my MATLAB implementation that has worked.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t0 = 0.0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//y = N_VMake_Serial(totalNumDof,u_s);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;abstol = N_VNew_Serial(totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VNew_Serial(totalNumDof);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;reltol = 1e-4;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i=0;i&amp;lt;totalNumDof;i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NV_Ith_S(y,i) = u_s[i];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NV_Ith_S(abstol,i) = reltol*100.0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cvode_mem = 
&lt;br&gt;CVodeCreate(CV_BDF,CV_NEWTON);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;flag = CVodeInit(cvode_mem,RHSfunction, t0, y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;flag = CVodeSVtolerances(cvode_mem, reltol, abstol);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;flag = CVDense(cvode_mem, totalNumDof);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;flag = CVodeSetUserData(cvode_mem,this);
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;View this message in context: 
&lt;br&gt;&lt;a href=&quot;http://*www.*nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25879547p25879547.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://*www.*nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25879547p25879547.html&lt;/a&gt;&lt;br&gt;Sent from the Sundials - Users mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Drastic-Change-in-%22y%22-After-Call-to-CVNlsNewton%28%29-tp25880340p25880340.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25875239</id>
	<title>Re: Error in fcmix_serial for Sundials-2.4.0</title>
	<published>2009-10-12T18:19:16Z</published>
	<updated>2009-10-12T18:19:16Z</updated>
	<author>
		<name>Radu Serban-3</name>
	</author>
	<content type="html">&amp;nbsp;&amp;gt; I would appreciate your help. My problem is, that everytime that I
&lt;br&gt;&amp;nbsp;&amp;gt; start a
&lt;br&gt;&amp;nbsp;&amp;gt; simulation using the interface SUNDIALS_TB for Matlab, with the IDA
&lt;br&gt;&amp;nbsp;&amp;gt; Solver,
&lt;br&gt;&amp;nbsp;&amp;gt; using exactly the same parameters, initial estimates, etc., I get very
&lt;br&gt;&amp;nbsp;&amp;gt; different situations (sometimes I get Not-A-Numbers, sometimes it
&lt;br&gt;&amp;nbsp;&amp;gt; converges,
&lt;br&gt;&amp;nbsp;&amp;gt; sometimes it uses step sizes ridiculously small, etc), even with
&lt;br&gt;&amp;nbsp;&amp;gt; consistent
&lt;br&gt;&amp;nbsp;&amp;gt; initial conditions.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I suspect that some garbage might be fed in the solver because an
&lt;br&gt;&amp;nbsp;&amp;gt; erroneous
&lt;br&gt;&amp;nbsp;&amp;gt; utilization / combination of IDAInit, IDAReinit and IDAFree. However,
&lt;br&gt;&amp;nbsp;&amp;gt; I am
&lt;br&gt;&amp;nbsp;&amp;gt; not sure. Can somebody help with this issue? Thanks a lot!
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Roberto Lemoine
&lt;br&gt;&lt;br&gt;Roberto,
&lt;br&gt;&lt;br&gt;Maybe you could post the relevant part of your code showing how you use
&lt;br&gt;these functions?
&lt;br&gt;&lt;br&gt;--Radu
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25875239&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Error-in-fcmix_serial-for-Sundials-2.4.0-tp25858362p25875239.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25875226</id>
	<title>Re: SPAM-LOW:  Re: Sundials CVODE: y vector values</title>
	<published>2009-10-12T18:15:27Z</published>
	<updated>2009-10-12T18:15:27Z</updated>
	<author>
		<name>Radu Serban-3</name>
	</author>
	<content type="html">Brian,
&lt;br&gt;&lt;br&gt;The problem is that you are not loading the derivatives into the
&lt;br&gt;provided N_Vector ydot, but rather create a new one!
&lt;br&gt;&lt;br&gt;Your RHS function should be something like this (of course, you could
&lt;br&gt;just use memcpy instead of the for loop):
&lt;br&gt;&lt;br&gt;//==============================================================
&lt;br&gt;static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void* user_data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dmod =(DiffusionModel*)user_data;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double *qdot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double *q;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; qdot = NV_DATA_S(ydot);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; dmod-&amp;gt;totalNumDof; i++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; qdot[i] = dmod-&amp;gt;udot[i];
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int flag=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return flag;
&lt;br&gt;}
&lt;br&gt;//==============================================================
&lt;br&gt;&lt;br&gt;&lt;br&gt;--Radu
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;bowens1 wrote:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;quot;lost&amp;quot;/corrupted &amp;nbsp;after first call to RHSfunction
&lt;br&gt;&amp;nbsp;&amp;gt; Sender: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25875226&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;owner-sundials-users@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25875226&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I have looked into the problem ore and determined this is more likely a
&lt;br&gt;&amp;nbsp;&amp;gt; problem with how &amp;quot;ydot&amp;quot; is being handled. I checked my assignment to ydot
&lt;br&gt;&amp;nbsp;&amp;gt; within the RHS function and the contents are correct. However, after adding
&lt;br&gt;&amp;nbsp;&amp;gt; a print statement in the CVODE code after the call to
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; retval = f(tn, zn[0], zn[1], user_data);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; The values of &amp;quot;ydot&amp;quot; or &amp;quot;zn[1]&amp;quot; are much different than those that should to
&lt;br&gt;&amp;nbsp;&amp;gt; be output (based off what I am setting in the RHS function).
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Based on what I've read from the documentation it seems that my definition
&lt;br&gt;&amp;nbsp;&amp;gt; of ydot in the RHS function should be adequate but perhaps I am missing
&lt;br&gt;&amp;nbsp;&amp;gt; something.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks,
&lt;br&gt;&amp;nbsp;&amp;gt; Brian
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; bowens1 wrote:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Hello,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; I am currently implementing CVODE into an in-house FEA code 
&lt;br&gt;written in C++
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; that makes thorough use of object oriented programming. Within a
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; particular
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; method of a class I am trying to implement CVODE. I have made my RHS
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; function a static function outside the class as I have seen done in the
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; examples. I am having some problem in that at the second call to the
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; RHSfunction the values passed in under &amp;quot;N_vector y&amp;quot; seem clearly
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; incorrect.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; For example my IVP for &amp;nbsp;the problem is [0.79 0 0] and the second call to
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; RHS
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; function has the y vector as [-5.0784477968231915e+057
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; -5.0784477968231915e+057 -5.0784477968231915e+057]. It seems as 
&lt;br&gt;though the
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; y
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; vector is being corrupted some where in the main CVODE function.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; To test out sundials I wrote a smaller matlab code that is not nearly as
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; robust as the C++ implementation. The matlab implementation worked with
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; great success. I am using the same settings in both C++ and matlab
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; implementations. Also the two implementations are giving identical output
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; during the first call to the RHS function, the &amp;nbsp;C++ code gives erroneous
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; results after this.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; If needed here is my RHS function:
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; DiffusionModel is a class and user_data points to an object of this class
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; that I later assign to dmod. The method &amp;quot;solve_for_qdot()&amp;quot; 
&lt;br&gt;solves for qdot
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; and assigns it to some data object &amp;quot;udot&amp;quot; local to the DiffusionModel
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; class.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; *user_data)
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod =(DiffusionModel*)user_data;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *qdot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *q;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qdot = dmod-&amp;gt;udot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VMake_Serial(dmod-&amp;gt;totalNumDof,qdot);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int flag=0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return flag;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; I greatly appreciate any help in this matter, and I'll be glad to provide
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; anymore details as needed.
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Thanks,
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt; Brian
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25875226&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-SPAM-LOW%3A--Re%3A-Sundials-CVODE%3A-y-vector-values-tp25875226p25875226.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25875228</id>
	<title>Re: Sundials CVODE: y vector values &quot;lost&quot;/corrupted</title>
	<published>2009-10-12T18:08:25Z</published>
	<updated>2009-10-12T18:08:25Z</updated>
	<author>
		<name>Slaven</name>
	</author>
	<content type="html">&lt;br&gt;Brian:
&lt;br&gt;&lt;br&gt;Some C++ compilers have problems with handling pointers to static member
&lt;br&gt;functions. I was dealing with a similar problem a while ago, so I'll try to
&lt;br&gt;dig out a reference for you.
&lt;br&gt;&lt;br&gt;My solution was to define RHS function as an extern &amp;quot;C&amp;quot;. That way your RHS
&lt;br&gt;won't be member function of DiffusionModel, but standalone C function. The
&lt;br&gt;rest of your code should remain more or less the same. This worked for me.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Slaven
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Hello,
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I am currently implementing CVODE into an in-house FEA code written in C++
&lt;br&gt;&amp;nbsp;&amp;gt; that makes thorough use of object oriented programming. Within a particular
&lt;br&gt;&amp;nbsp;&amp;gt; method of a class I am trying to implement CVODE. I have made my RHS
&lt;br&gt;&amp;nbsp;&amp;gt; function a static function outside the class as I have seen done in the
&lt;br&gt;&amp;nbsp;&amp;gt; examples. I am having some problem in that at the second call to the
&lt;br&gt;&amp;nbsp;&amp;gt; RHSfunction the values passed in under &amp;quot;N_vector y&amp;quot; seem clearly incorrect.
&lt;br&gt;&amp;nbsp;&amp;gt; For example my IVP for &amp;nbsp;the problem is [0.79 0 0] and the second call to
&lt;br&gt;&amp;nbsp;&amp;gt; RHS function has the y vector as [-5.0784477968231915e+057
&lt;br&gt;&amp;nbsp;&amp;gt; -5.0784477968231915e+057 -5.0784477968231915e+057]. It seems as though the
&lt;br&gt;&amp;nbsp;&amp;gt; y vector is being corrupted some where in the main CVODE function.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; To test out sundials I wrote a smaller matlab code that is not nearly as
&lt;br&gt;&amp;nbsp;&amp;gt; robust as the C++ implementation. The matlab implementation worked with
&lt;br&gt;&amp;nbsp;&amp;gt; great success. I am using the same settings in both C++ and matlab
&lt;br&gt;&amp;nbsp;&amp;gt; implementations. Also the two implementations are giving identical output
&lt;br&gt;&amp;nbsp;&amp;gt; during the first call to the RHS function, the &amp;nbsp;C++ code gives erroneous
&lt;br&gt;&amp;nbsp;&amp;gt; results after this.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; If needed here is my RHS function:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; DiffusionModel is a class and user_data points to an object of this class
&lt;br&gt;&amp;nbsp;&amp;gt; that I later assign to dmod. The method &amp;quot;solve_for_qdot()&amp;quot; solves for qdot
&lt;br&gt;&amp;nbsp;&amp;gt; and assigns it to some data object &amp;quot;udot&amp;quot; local to the DiffusionModel
&lt;br&gt;&amp;nbsp;&amp;gt; class. //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt; static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void
&lt;br&gt;&amp;nbsp;&amp;gt; *user_data)
&lt;br&gt;&amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; dmod =(DiffusionModel*)user_data;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; double *qdot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; double *q;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; qdot = dmod-&amp;gt;udot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; ydot = N_VMake_Serial(dmod-&amp;gt;totalNumDof,qdot);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; int flag=0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; return flag;
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt; //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I greatly appreciate any help in this matter, and I'll be glad to provide
&lt;br&gt;&amp;nbsp;&amp;gt; anymore details as needed.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks,
&lt;br&gt;&amp;nbsp;&amp;gt; Brian
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25875228&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted-tp25858503p25875228.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25858503</id>
	<title>Sundials CVODE: y vector values &quot;lost&quot;/corrupted</title>
	<published>2009-10-12T09:06:01Z</published>
	<updated>2009-10-12T09:06:01Z</updated>
	<author>
		<name>Carol Woodward</name>
	</author>
	<content type="html">Date: Sun, 11 Oct 2009 18:02:05 -0700 (PDT)
&lt;br&gt;From: bowens1 &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858503&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bowens1@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858503&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;Subject: [sundials-users] Sundials CVODE: y vector values &amp;quot;lost&amp;quot;/corrupted
&lt;br&gt;&amp;nbsp; after first call to RHSfunction
&lt;br&gt;MIME-Version: 1.0
&lt;br&gt;Content-Type: text/plain; charset=us-ascii
&lt;br&gt;Content-Transfer-Encoding: 7bit
&lt;br&gt;X-Nabble-From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858503&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bowens1@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;Hello,
&lt;br&gt;&lt;br&gt;I am currently implementing CVODE into an in-house FEA code written in C++
&lt;br&gt;that makes thorough use of object oriented programming. Within a particular
&lt;br&gt;method of a class I am trying to implement CVODE. I have made my RHS
&lt;br&gt;function a static function outside the class as I have seen done in the
&lt;br&gt;examples. I am having some problem in that at the second call to the
&lt;br&gt;RHSfunction the values passed in under &amp;quot;N_vector y&amp;quot; seem clearly incorrect.
&lt;br&gt;For example my IVP for &amp;nbsp;the problem is [0.79 0 0] and the second call to RHS
&lt;br&gt;function has the y vector as [-5.0784477968231915e+057
&lt;br&gt;-5.0784477968231915e+057 -5.0784477968231915e+057]. It seems as though the y
&lt;br&gt;vector is being corrupted some where in the main CVODE function.
&lt;br&gt;&lt;br&gt;&lt;br&gt;To test out sundials I wrote a smaller matlab code that is not nearly as
&lt;br&gt;robust as the C++ implementation. The matlab implementation worked with
&lt;br&gt;great success. I am using the same settings in both C++ and matlab
&lt;br&gt;implementations. Also the two implementations are giving identical output
&lt;br&gt;during the first call to the RHS function, the &amp;nbsp;C++ code gives erroneous
&lt;br&gt;results after this.
&lt;br&gt;&lt;br&gt;If needed here is my RHS function:
&lt;br&gt;&lt;br&gt;DiffusionModel is a class and user_data points to an object of this class
&lt;br&gt;that I later assign to dmod. The method &amp;quot;solve_for_qdot()&amp;quot; solves for qdot
&lt;br&gt;and assigns it to some data object &amp;quot;udot&amp;quot; local to the DiffusionModel class.
&lt;br&gt;//==============================================================
&lt;br&gt;static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void
&lt;br&gt;*user_data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dmod =(DiffusionModel*)user_data;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double *qdot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double *q;	
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; qdot = dmod-&amp;gt;udot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ydot = N_VMake_Serial(dmod-&amp;gt;totalNumDof,qdot);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int flag=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return flag;
&lt;br&gt;}
&lt;br&gt;//==============================================================
&lt;br&gt;&lt;br&gt;I greatly appreciate any help in this matter, and I'll be glad to provide
&lt;br&gt;anymore details as needed.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;View this message in context: 
&lt;br&gt;&lt;a href=&quot;http://*www.*nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted-after-first-call-to-RHSfunction-tp25849334p25849334.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://*www.*nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted-after-first-call-to-RHSfunction-tp25849334p25849334.html&lt;/a&gt;&lt;br&gt;Sent from the Sundials - Users mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted-tp25858503p25858503.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25858393</id>
	<title>Re: Sundials CVODE: y vector values  &quot;lost&quot;/corrupted  after first call to RHSfunction</title>
	<published>2009-10-12T09:01:03Z</published>
	<updated>2009-10-12T09:01:03Z</updated>
	<author>
		<name>by way of Carol Woodward &lt;cswoodward@llnl.gov&gt;</name>
	</author>
	<content type="html">Date: Sun, 11 Oct 2009 21:33:44 -0700 (PDT)
&lt;br&gt;From: bowens1 &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858393&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bowens1@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858393&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;Subject: Re: [sundials-users] Sundials CVODE: y vector values
&lt;br&gt;&amp;nbsp; &amp;quot;lost&amp;quot;/corrupted &amp;nbsp;after first call to RHSfunction
&lt;br&gt;In-Reply-To: &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858393&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;25849356.post@...&lt;/a&gt;&amp;gt;
&lt;br&gt;MIME-Version: 1.0
&lt;br&gt;Content-Type: text/plain; charset=us-ascii
&lt;br&gt;Content-Transfer-Encoding: 7bit
&lt;br&gt;X-Nabble-From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858393&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bowens1@...&lt;/a&gt;
&lt;br&gt;References: &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858393&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;25849356.post@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;I have looked into the problem ore and determined this is more likely a
&lt;br&gt;problem with how &amp;quot;ydot&amp;quot; is being handled. I checked my assignment to ydot
&lt;br&gt;within the RHS function and the contents are correct. However, after adding
&lt;br&gt;a print statement in the CVODE code after the call to
&lt;br&gt;&lt;br&gt;retval = f(tn, zn[0], zn[1], user_data);
&lt;br&gt;&lt;br&gt;The values of &amp;quot;ydot&amp;quot; or &amp;quot;zn[1]&amp;quot; are much different than those that should to
&lt;br&gt;be output (based off what I am setting in the RHS function).
&lt;br&gt;&lt;br&gt;Based on what I've read from the documentation it seems that my definition
&lt;br&gt;of ydot in the RHS function should be adequate but perhaps I am missing
&lt;br&gt;something.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;bowens1 wrote:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Hello,
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I am currently implementing CVODE into an in-house FEA code written in C++
&lt;br&gt;&amp;nbsp;&amp;gt; that makes thorough use of object oriented programming. Within a
&lt;br&gt;&amp;nbsp;&amp;gt; particular
&lt;br&gt;&amp;nbsp;&amp;gt; method of a class I am trying to implement CVODE. I have made my RHS
&lt;br&gt;&amp;nbsp;&amp;gt; function a static function outside the class as I have seen done in the
&lt;br&gt;&amp;nbsp;&amp;gt; examples. I am having some problem in that at the second call to the
&lt;br&gt;&amp;nbsp;&amp;gt; RHSfunction the values passed in under &amp;quot;N_vector y&amp;quot; seem clearly
&lt;br&gt;&amp;nbsp;&amp;gt; incorrect.
&lt;br&gt;&amp;nbsp;&amp;gt; For example my IVP for &amp;nbsp;the problem is [0.79 0 0] and the second call to
&lt;br&gt;&amp;nbsp;&amp;gt; RHS
&lt;br&gt;&amp;nbsp;&amp;gt; function has the y vector as [-5.0784477968231915e+057
&lt;br&gt;&amp;nbsp;&amp;gt; -5.0784477968231915e+057 -5.0784477968231915e+057]. It seems as though the
&lt;br&gt;&amp;nbsp;&amp;gt; y
&lt;br&gt;&amp;nbsp;&amp;gt; vector is being corrupted some where in the main CVODE function.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; To test out sundials I wrote a smaller matlab code that is not nearly as
&lt;br&gt;&amp;nbsp;&amp;gt; robust as the C++ implementation. The matlab implementation worked with
&lt;br&gt;&amp;nbsp;&amp;gt; great success. I am using the same settings in both C++ and matlab
&lt;br&gt;&amp;nbsp;&amp;gt; implementations. Also the two implementations are giving identical output
&lt;br&gt;&amp;nbsp;&amp;gt; during the first call to the RHS function, the &amp;nbsp;C++ code gives erroneous
&lt;br&gt;&amp;nbsp;&amp;gt; results after this.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; If needed here is my RHS function:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; DiffusionModel is a class and user_data points to an object of this class
&lt;br&gt;&amp;nbsp;&amp;gt; that I later assign to dmod. The method &amp;quot;solve_for_qdot()&amp;quot; solves for qdot
&lt;br&gt;&amp;nbsp;&amp;gt; and assigns it to some data object &amp;quot;udot&amp;quot; local to the DiffusionModel
&lt;br&gt;&amp;nbsp;&amp;gt; class.
&lt;br&gt;&amp;nbsp;&amp;gt; //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt; static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void
&lt;br&gt;&amp;nbsp;&amp;gt; *user_data)
&lt;br&gt;&amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod =(DiffusionModel*)user_data;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *qdot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *q;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qdot = dmod-&amp;gt;udot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VMake_Serial(dmod-&amp;gt;totalNumDof,qdot);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int flag=0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return flag;
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt; //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I greatly appreciate any help in this matter, and I'll be glad to provide
&lt;br&gt;&amp;nbsp;&amp;gt; anymore details as needed.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks,
&lt;br&gt;&amp;nbsp;&amp;gt; Brian
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;View this message in context: 
&lt;br&gt;&lt;a href=&quot;http://*www.*nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted--after-first-call-to-RHSfunction-tp25849356p25850406.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://*www.*nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted--after-first-call-to-RHSfunction-tp25849356p25850406.html&lt;/a&gt;&lt;br&gt;Sent from the Sundials - Users mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Sundials-CVODE%3A-y-vector-values--%22lost%22-corrupted--after-first-call-to-RHSfunction-tp25858393p25858393.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25858362</id>
	<title>Re: Error in fcmix_serial for Sundials-2.4.0</title>
	<published>2009-10-12T08:56:01Z</published>
	<updated>2009-10-12T08:56:01Z</updated>
	<author>
		<name>by way of Carol Woodward &lt;cswoodward@llnl.gov&gt;</name>
	</author>
	<content type="html">Date: Mon, 12 Oct 2009 01:11:42 +0200
&lt;br&gt;Message-ID: &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858362&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;3f94f5490910111611v7ccbcac8had910ba5ed37ceea@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Subject: Re: [sundials-users] Error in fcmix_serial for Sundials-2.4.0
&lt;br&gt;From: Roberto Lemoine &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858362&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;robertolemoine@...&lt;/a&gt;&amp;gt;
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858362&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;Content-Type: multipart/alternative; boundary=00504502ca5aac98410475b0ef84
&lt;br&gt;&lt;br&gt;--00504502ca5aac98410475b0ef84
&lt;br&gt;Content-Type: text/plain; charset=ISO-8859-1
&lt;br&gt;&lt;br&gt;Hello everyone:
&lt;br&gt;&lt;br&gt;I would appreciate your help. My problem is, that everytime that I start a
&lt;br&gt;simulation using the interface SUNDIALS_TB for Matlab, with the IDA Solver,
&lt;br&gt;using exactly the same parameters, initial estimates, etc., I get very
&lt;br&gt;different situations (sometimes I get Not-A-Numbers, sometimes it converges,
&lt;br&gt;sometimes it uses step sizes ridiculously small, etc), even with consistent
&lt;br&gt;initial conditions.
&lt;br&gt;&lt;br&gt;I suspect that some garbage might be fed in the solver because an erroneous
&lt;br&gt;utilization / combination of IDAInit, IDAReinit and IDAFree. However, I am
&lt;br&gt;not sure. Can somebody help with this issue? Thanks a lot!
&lt;br&gt;&lt;br&gt;Roberto Lemoine
&lt;br&gt;&lt;br&gt;--00504502ca5aac98410475b0ef84
&lt;br&gt;Content-Type: text/html; charset=ISO-8859-1
&lt;br&gt;Content-Transfer-Encoding: quoted-printable
&lt;br&gt;&lt;br&gt;Hello everyone:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I would appreciate your help. My problem is, that ev=
&lt;br&gt;erytime that I start a simulation using the interface SUNDIALS_TB for Matla=
&lt;br&gt;b, with the IDA Solver, using exactly the same parameters, initial estimate=
&lt;br&gt;s, etc., I get very different situations (sometimes I get Not-A-Numbers, so=
&lt;br&gt;metimes it converges, sometimes it uses step sizes ridiculously small, etc)=
&lt;br&gt;, even with consistent initial conditions.&amp;lt;br&amp;gt;
&lt;br&gt;&amp;lt;br&amp;gt;I suspect that some garbage might be fed in the solver because an erron=
&lt;br&gt;eous utilization / combination of IDAInit, IDAReinit and IDAFree. However, =
&lt;br&gt;I am not sure. Can somebody help with this issue? Thanks a lot!&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;Roberto Lemoine&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;--00504502ca5aac98410475b0ef84--
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Error-in-fcmix_serial-for-Sundials-2.4.0-tp25858362p25858362.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25864676</id>
	<title>Re: Sundials CVODE: y vector values</title>
	<published>2009-10-11T21:33:44Z</published>
	<updated>2009-10-11T21:33:44Z</updated>
	<author>
		<name>bowens1</name>
	</author>
	<content type="html">&amp;quot;lost&amp;quot;/corrupted &amp;nbsp;after first call to RHSfunction
&lt;br&gt;Sender: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25864676&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;owner-sundials-users@...&lt;/a&gt;
&lt;br&gt;Reply-To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25864676&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sundials-users@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;I have looked into the problem ore and determined this is more likely a
&lt;br&gt;problem with how &amp;quot;ydot&amp;quot; is being handled. I checked my assignment to ydot
&lt;br&gt;within the RHS function and the contents are correct. However, after adding
&lt;br&gt;a print statement in the CVODE code after the call to
&lt;br&gt;&lt;br&gt;retval = f(tn, zn[0], zn[1], user_data);
&lt;br&gt;&lt;br&gt;The values of &amp;quot;ydot&amp;quot; or &amp;quot;zn[1]&amp;quot; are much different than those that should to
&lt;br&gt;be output (based off what I am setting in the RHS function).
&lt;br&gt;&lt;br&gt;Based on what I've read from the documentation it seems that my definition
&lt;br&gt;of ydot in the RHS function should be adequate but perhaps I am missing
&lt;br&gt;something.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;bowens1 wrote:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Hello,
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I am currently implementing CVODE into an in-house FEA code written in C++
&lt;br&gt;&amp;nbsp;&amp;gt; that makes thorough use of object oriented programming. Within a
&lt;br&gt;&amp;nbsp;&amp;gt; particular
&lt;br&gt;&amp;nbsp;&amp;gt; method of a class I am trying to implement CVODE. I have made my RHS
&lt;br&gt;&amp;nbsp;&amp;gt; function a static function outside the class as I have seen done in the
&lt;br&gt;&amp;nbsp;&amp;gt; examples. I am having some problem in that at the second call to the
&lt;br&gt;&amp;nbsp;&amp;gt; RHSfunction the values passed in under &amp;quot;N_vector y&amp;quot; seem clearly
&lt;br&gt;&amp;nbsp;&amp;gt; incorrect.
&lt;br&gt;&amp;nbsp;&amp;gt; For example my IVP for &amp;nbsp;the problem is [0.79 0 0] and the second call to
&lt;br&gt;&amp;nbsp;&amp;gt; RHS
&lt;br&gt;&amp;nbsp;&amp;gt; function has the y vector as [-5.0784477968231915e+057
&lt;br&gt;&amp;nbsp;&amp;gt; -5.0784477968231915e+057 -5.0784477968231915e+057]. It seems as though the
&lt;br&gt;&amp;nbsp;&amp;gt; y
&lt;br&gt;&amp;nbsp;&amp;gt; vector is being corrupted some where in the main CVODE function.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; To test out sundials I wrote a smaller matlab code that is not nearly as
&lt;br&gt;&amp;nbsp;&amp;gt; robust as the C++ implementation. The matlab implementation worked with
&lt;br&gt;&amp;nbsp;&amp;gt; great success. I am using the same settings in both C++ and matlab
&lt;br&gt;&amp;nbsp;&amp;gt; implementations. Also the two implementations are giving identical output
&lt;br&gt;&amp;nbsp;&amp;gt; during the first call to the RHS function, the &amp;nbsp;C++ code gives erroneous
&lt;br&gt;&amp;nbsp;&amp;gt; results after this.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; If needed here is my RHS function:
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; DiffusionModel is a class and user_data points to an object of this class
&lt;br&gt;&amp;nbsp;&amp;gt; that I later assign to dmod. The method &amp;quot;solve_for_qdot()&amp;quot; solves for qdot
&lt;br&gt;&amp;nbsp;&amp;gt; and assigns it to some data object &amp;quot;udot&amp;quot; local to the DiffusionModel
&lt;br&gt;&amp;nbsp;&amp;gt; class.
&lt;br&gt;&amp;nbsp;&amp;gt; //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt; static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void
&lt;br&gt;&amp;nbsp;&amp;gt; *user_data)
&lt;br&gt;&amp;nbsp;&amp;gt; {
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod =(DiffusionModel*)user_data;
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *qdot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *q;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qdot = dmod-&amp;gt;udot;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VMake_Serial(dmod-&amp;gt;totalNumDof,qdot);
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int flag=0;
&lt;br&gt;&amp;nbsp;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return flag;
&lt;br&gt;&amp;nbsp;&amp;gt; }
&lt;br&gt;&amp;nbsp;&amp;gt; //==============================================================
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; I greatly appreciate any help in this matter, and I'll be glad to provide
&lt;br&gt;&amp;nbsp;&amp;gt; anymore details as needed.
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt; Thanks,
&lt;br&gt;&amp;nbsp;&amp;gt; Brian
&lt;br&gt;&amp;nbsp;&amp;gt;
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;View this message in context: 
&lt;br&gt;&lt;a href=&quot;http://*www.*nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted--after-first-call-to-RHSfunction-tp25849356p25850406.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://*www.*nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted--after-first-call-to-RHSfunction-tp25849356p25850406.html&lt;/a&gt;&lt;br&gt;Sent from the Sundials - Users mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------------------------------------------------
&lt;br&gt;Center for Applied Scientific Computing
&lt;br&gt;Lawrence Livermore National Laboratory
&lt;br&gt;P.O. Box 808, L-561
&lt;br&gt;Livermore, CA &amp;nbsp;94551
&lt;br&gt;&lt;br&gt;(925) 424-6013 &amp;nbsp;(Office) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25864676&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cswoodward@...&lt;/a&gt;
&lt;br&gt;(925) 423-2993 &amp;nbsp;(Fax) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://people.llnl.gov/woodward6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://people.llnl.gov/woodward6&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Sundials-CVODE%3A-y-vector-values-tp25864676p25864676.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25850406</id>
	<title>Re: Sundials CVODE: y vector values &quot;lost&quot;/corrupted  after first call to RHSfunction</title>
	<published>2009-10-11T21:33:35Z</published>
	<updated>2009-10-11T21:33:35Z</updated>
	<author>
		<name>bowens1</name>
	</author>
	<content type="html">I have looked into the problem ore and determined this is more likely a problem with how &amp;quot;ydot&amp;quot; is being handled. I checked my assignment to ydot within the RHS function and the contents are correct. However, after adding a print statement in the CVODE code after the call to
&lt;br&gt;&lt;br&gt;retval = f(tn, zn[0], zn[1], user_data); 
&lt;br&gt;&lt;br&gt;The values of &amp;quot;ydot&amp;quot; or &amp;quot;zn[1]&amp;quot; are much different than those that should to be output (based off what I am setting in the RHS function).
&lt;br&gt;&lt;br&gt;Based on what I've read from the documentation it seems that my definition of ydot in the RHS function should be adequate but perhaps I am missing something.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;bowens1 wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hello,
&lt;br&gt;&lt;br&gt;I am currently implementing CVODE into an in-house FEA code written in C++
&lt;br&gt;that makes thorough use of object oriented programming. Within a particular
&lt;br&gt;method of a class I am trying to implement CVODE. I have made my RHS
&lt;br&gt;function a static function outside the class as I have seen done in the
&lt;br&gt;examples. I am having some problem in that at the second call to the
&lt;br&gt;RHSfunction the values passed in under &amp;quot;N_vector y&amp;quot; seem clearly incorrect.
&lt;br&gt;For example my IVP for &amp;nbsp;the problem is [0.79 0 0] and the second call to RHS
&lt;br&gt;function has the y vector as [-5.0784477968231915e+057
&lt;br&gt;-5.0784477968231915e+057 -5.0784477968231915e+057]. It seems as though the y
&lt;br&gt;vector is being corrupted some where in the main CVODE function.
&lt;br&gt;&lt;br&gt;&lt;br&gt;To test out sundials I wrote a smaller matlab code that is not nearly as
&lt;br&gt;robust as the C++ implementation. The matlab implementation worked with
&lt;br&gt;great success. I am using the same settings in both C++ and matlab
&lt;br&gt;implementations. Also the two implementations are giving identical output
&lt;br&gt;during the first call to the RHS function, the &amp;nbsp;C++ code gives erroneous
&lt;br&gt;results after this.
&lt;br&gt;&lt;br&gt;If needed here is my RHS function:
&lt;br&gt;&lt;br&gt;DiffusionModel is a class and user_data points to an object of this class
&lt;br&gt;that I later assign to dmod. The method &amp;quot;solve_for_qdot()&amp;quot; solves for qdot
&lt;br&gt;and assigns it to some data object &amp;quot;udot&amp;quot; local to the DiffusionModel class.
&lt;br&gt;//==============================================================
&lt;br&gt;static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void
&lt;br&gt;*user_data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod =(DiffusionModel*)user_data;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *qdot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *q;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qdot = dmod-&amp;gt;udot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VMake_Serial(dmod-&amp;gt;totalNumDof,qdot);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int flag=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return flag;
&lt;br&gt;}
&lt;br&gt;//==============================================================
&lt;br&gt;&lt;br&gt;I greatly appreciate any help in this matter, and I'll be glad to provide
&lt;br&gt;anymore details as needed.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted--after-first-call-to-RHSfunction-tp25849356p25850406.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25849356</id>
	<title>Sundials CVODE: y vector values &quot;lost&quot;/corrupted  after first call to RHSfunction</title>
	<published>2009-10-11T18:06:29Z</published>
	<updated>2009-10-11T18:06:29Z</updated>
	<author>
		<name>bowens1</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;I am currently implementing CVODE into an in-house FEA code written in C++
&lt;br&gt;that makes thorough use of object oriented programming. Within a particular
&lt;br&gt;method of a class I am trying to implement CVODE. I have made my RHS
&lt;br&gt;function a static function outside the class as I have seen done in the
&lt;br&gt;examples. I am having some problem in that at the second call to the
&lt;br&gt;RHSfunction the values passed in under &amp;quot;N_vector y&amp;quot; seem clearly incorrect.
&lt;br&gt;For example my IVP for &amp;nbsp;the problem is [0.79 0 0] and the second call to RHS
&lt;br&gt;function has the y vector as [-5.0784477968231915e+057
&lt;br&gt;-5.0784477968231915e+057 -5.0784477968231915e+057]. It seems as though the y
&lt;br&gt;vector is being corrupted some where in the main CVODE function.
&lt;br&gt;&lt;br&gt;&lt;br&gt;To test out sundials I wrote a smaller matlab code that is not nearly as
&lt;br&gt;robust as the C++ implementation. The matlab implementation worked with
&lt;br&gt;great success. I am using the same settings in both C++ and matlab
&lt;br&gt;implementations. Also the two implementations are giving identical output
&lt;br&gt;during the first call to the RHS function, the &amp;nbsp;C++ code gives erroneous
&lt;br&gt;results after this.
&lt;br&gt;&lt;br&gt;If needed here is my RHS function:
&lt;br&gt;&lt;br&gt;DiffusionModel is a class and user_data points to an object of this class
&lt;br&gt;that I later assign to dmod. The method &amp;quot;solve_for_qdot()&amp;quot; solves for qdot
&lt;br&gt;and assigns it to some data object &amp;quot;udot&amp;quot; local to the DiffusionModel class.
&lt;br&gt;//==============================================================
&lt;br&gt;static int RHSfunction(realtype t, N_Vector y, N_Vector ydot, void
&lt;br&gt;*user_data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DiffusionModel* dmod;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod =(DiffusionModel*)user_data;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *qdot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double *q;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;q = NV_DATA_S(y);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmod-&amp;gt;solve_for_qdot(t,q);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;qdot = dmod-&amp;gt;udot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ydot = N_VMake_Serial(dmod-&amp;gt;totalNumDof,qdot);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int flag=0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return flag;
&lt;br&gt;}
&lt;br&gt;//==============================================================
&lt;br&gt;&lt;br&gt;I greatly appreciate any help in this matter, and I'll be glad to provide
&lt;br&gt;anymore details as needed.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Brian&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Sundials---Users-f22834.html&quot; embed=&quot;fixTarget[22834]&quot; target=&quot;_top&quot; &gt;Sundials - Users&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Sundials-CVODE%3A-y-vector-values-%22lost%22-corrupted--after-first-call-to-RHSfunction-tp25849356p25849356.html" />
</entry>

</feed>
