1*c4762a1bSJed Brown! Program usage: mpiexec -n 1 chwirut1f [-help] [all TAO options] 2*c4762a1bSJed Brown! 3*c4762a1bSJed Brown! Description: This example demonstrates use of the TAO package to solve a 4*c4762a1bSJed Brown! nonlinear least-squares problem on a single processor. We minimize the 5*c4762a1bSJed Brown! Chwirut function: 6*c4762a1bSJed Brown! sum_{i=0}^{n/2-1} ( alpha*(x_{2i+1}-x_{2i}^2)^2 + (1-x_{2i})^2 ) 7*c4762a1bSJed Brown! 8*c4762a1bSJed Brown! The C version of this code is test_chwirut1.c 9*c4762a1bSJed Brown! 10*c4762a1bSJed Brown!!/*T 11*c4762a1bSJed Brown! Concepts: TAO^Solving an unconstrained minimization problem 12*c4762a1bSJed Brown! Routines: TaoCreate(); 13*c4762a1bSJed Brown! Routines: TaoSetType(); 14*c4762a1bSJed Brown! Routines: TaoSetInitialVector(); 15*c4762a1bSJed Brown! Routines: TaoSetResidualRoutine(); 16*c4762a1bSJed Brown! Routines: TaoSetFromOptions(); 17*c4762a1bSJed Brown! Routines: TaoSolve(); 18*c4762a1bSJed Brown! Routines: TaoDestroy(); 19*c4762a1bSJed Brown! Processors: 1 20*c4762a1bSJed Brown!T*/ 21*c4762a1bSJed Brown 22*c4762a1bSJed Brown 23*c4762a1bSJed Brown! 24*c4762a1bSJed Brown! ---------------------------------------------------------------------- 25*c4762a1bSJed Brown! 26*c4762a1bSJed Brown#include "chwirut1f.h" 27*c4762a1bSJed Brown 28*c4762a1bSJed Brown! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 29*c4762a1bSJed Brown! Variable declarations 30*c4762a1bSJed Brown! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 31*c4762a1bSJed Brown! 32*c4762a1bSJed Brown! See additional variable declarations in the file chwirut1f.h 33*c4762a1bSJed Brown 34*c4762a1bSJed Brown PetscErrorCode ierr ! used to check for functions returning nonzeros 35*c4762a1bSJed Brown Vec x ! solution vector 36*c4762a1bSJed Brown Vec f ! vector of functions 37*c4762a1bSJed Brown Tao tao ! Tao context 38*c4762a1bSJed Brown PetscInt nhist 39*c4762a1bSJed Brown PetscMPIInt size,rank ! number of processes running 40*c4762a1bSJed Brown PetscReal zero 41*c4762a1bSJed Brown PetscReal hist(100) ! objective value history 42*c4762a1bSJed Brown PetscReal resid(100)! residual history 43*c4762a1bSJed Brown PetscReal cnorm(100)! cnorm history 44*c4762a1bSJed Brown PetscInt lits(100) ! #ksp history 45*c4762a1bSJed Brown PetscInt oh 46*c4762a1bSJed Brown TaoConvergedReason reason 47*c4762a1bSJed Brown 48*c4762a1bSJed Brown! Note: Any user-defined Fortran routines (such as FormGradient) 49*c4762a1bSJed Brown! MUST be declared as external. 50*c4762a1bSJed Brown 51*c4762a1bSJed Brown external FormFunction 52*c4762a1bSJed Brown 53*c4762a1bSJed Brown zero = 0.0 54*c4762a1bSJed Brown 55*c4762a1bSJed Brown! Initialize TAO and PETSc 56*c4762a1bSJed Brown call PetscInitialize(PETSC_NULL_CHARACTER,ierr) 57*c4762a1bSJed Brown if (ierr .ne. 0) then 58*c4762a1bSJed Brown print*,'Unable to initialize PETSc' 59*c4762a1bSJed Brown stop 60*c4762a1bSJed Brown endif 61*c4762a1bSJed Brown 62*c4762a1bSJed Brown call MPI_Comm_size(PETSC_COMM_WORLD,size,ierr) 63*c4762a1bSJed Brown call MPI_Comm_rank(PETSC_COMM_WORLD,rank,ierr) 64*c4762a1bSJed Brown if (size .ne. 1) then; SETERRA(PETSC_COMM_SELF,PETSC_ERR_WRONG_MPI_SIZE,'This is a uniprocessor example only '); endif 65*c4762a1bSJed Brown 66*c4762a1bSJed Brown! Initialize problem parameters 67*c4762a1bSJed Brown m = 214 68*c4762a1bSJed Brown n = 3 69*c4762a1bSJed Brown 70*c4762a1bSJed Brown 71*c4762a1bSJed Brown! Allocate vectors for the solution and gradient 72*c4762a1bSJed Brown call VecCreateSeq(PETSC_COMM_SELF,n,x,ierr) 73*c4762a1bSJed Brown call VecCreateSeq(PETSC_COMM_SELF,m,f,ierr) 74*c4762a1bSJed Brown 75*c4762a1bSJed Brown 76*c4762a1bSJed Brown! The TAO code begins here 77*c4762a1bSJed Brown 78*c4762a1bSJed Brown! Create TAO solver 79*c4762a1bSJed Brown call TaoCreate(PETSC_COMM_SELF,tao,ierr);CHKERRA(ierr) 80*c4762a1bSJed Brown call TaoSetType(tao,TAOPOUNDERS,ierr);CHKERRA(ierr) 81*c4762a1bSJed Brown! Set routines for function, gradient, and hessian evaluation 82*c4762a1bSJed Brown 83*c4762a1bSJed Brown call TaoSetResidualRoutine(tao,f, & 84*c4762a1bSJed Brown & FormFunction,0,ierr) 85*c4762a1bSJed Brown CHKERRA(ierr) 86*c4762a1bSJed Brown 87*c4762a1bSJed Brown! Optional: Set initial guess 88*c4762a1bSJed Brown call InitializeData() 89*c4762a1bSJed Brown call FormStartingPoint(x) 90*c4762a1bSJed Brown call TaoSetInitialVector(tao, x, ierr) 91*c4762a1bSJed Brown CHKERRA(ierr) 92*c4762a1bSJed Brown 93*c4762a1bSJed Brown 94*c4762a1bSJed Brown! Check for TAO command line options 95*c4762a1bSJed Brown call TaoSetFromOptions(tao,ierr) 96*c4762a1bSJed Brown CHKERRA(ierr) 97*c4762a1bSJed Brown oh = 100 98*c4762a1bSJed Brown call TaoSetConvergenceHistory(tao,hist,resid,cnorm,lits, & 99*c4762a1bSJed Brown & oh,PETSC_TRUE,ierr) 100*c4762a1bSJed Brown CHKERRA(ierr) 101*c4762a1bSJed Brown! SOLVE THE APPLICATION 102*c4762a1bSJed Brown call TaoSolve(tao,ierr) 103*c4762a1bSJed Brown CHKERRA(ierr) 104*c4762a1bSJed Brown call TaoGetConvergenceHistory(tao,nhist,ierr) 105*c4762a1bSJed Brown CHKERRA(ierr) 106*c4762a1bSJed Brown call TaoGetConvergedReason(tao, reason, ierr) 107*c4762a1bSJed Brown if (reason .le. 0) then 108*c4762a1bSJed Brown print *,'Tao failed.' 109*c4762a1bSJed Brown print *,'Try a different TAO method, adjust some parameters,' 110*c4762a1bSJed Brown print *,'or check the function evaluation routines.' 111*c4762a1bSJed Brown endif 112*c4762a1bSJed Brown 113*c4762a1bSJed Brown! Free TAO data structures 114*c4762a1bSJed Brown call TaoDestroy(tao,ierr) 115*c4762a1bSJed Brown 116*c4762a1bSJed Brown! Free PETSc data structures 117*c4762a1bSJed Brown call VecDestroy(x,ierr) 118*c4762a1bSJed Brown call VecDestroy(f,ierr) 119*c4762a1bSJed Brown 120*c4762a1bSJed Brown call PetscFinalize(ierr) 121*c4762a1bSJed Brown 122*c4762a1bSJed Brown end 123*c4762a1bSJed Brown 124*c4762a1bSJed Brown 125*c4762a1bSJed Brown! -------------------------------------------------------------------- 126*c4762a1bSJed Brown! FormFunction - Evaluates the function f(X) and gradient G(X) 127*c4762a1bSJed Brown! 128*c4762a1bSJed Brown! Input Parameters: 129*c4762a1bSJed Brown! tao - the Tao context 130*c4762a1bSJed Brown! X - input vector 131*c4762a1bSJed Brown! dummy - not used 132*c4762a1bSJed Brown! 133*c4762a1bSJed Brown! Output Parameters: 134*c4762a1bSJed Brown! f - function vector 135*c4762a1bSJed Brown 136*c4762a1bSJed Brown subroutine FormFunction(tao, x, f, dummy, ierr) 137*c4762a1bSJed Brown#include "chwirut1f.h" 138*c4762a1bSJed Brown 139*c4762a1bSJed Brown Tao tao 140*c4762a1bSJed Brown Vec x,f 141*c4762a1bSJed Brown PetscErrorCode ierr 142*c4762a1bSJed Brown PetscInt dummy 143*c4762a1bSJed Brown 144*c4762a1bSJed Brown PetscInt i 145*c4762a1bSJed Brown 146*c4762a1bSJed Brown! PETSc's VecGetArray acts differently in Fortran than it does in C. 147*c4762a1bSJed Brown! Calling VecGetArray((Vec) X, (PetscReal) x_array(0:1), (PetscOffset) x_index, ierr) 148*c4762a1bSJed Brown! will return an array of doubles referenced by x_array offset by x_index. 149*c4762a1bSJed Brown! i.e., to reference the kth element of X, use x_array(k + x_index). 150*c4762a1bSJed Brown! Notice that by declaring the arrays with range (0:1), we are using the C 0-indexing practice. 151*c4762a1bSJed Brown PetscReal f_v(0:1),x_v(0:1) 152*c4762a1bSJed Brown PetscOffset f_i,x_i 153*c4762a1bSJed Brown 154*c4762a1bSJed Brown ierr = 0 155*c4762a1bSJed Brown 156*c4762a1bSJed Brown! Get pointers to vector data 157*c4762a1bSJed Brown call VecGetArray(x,x_v,x_i,ierr) 158*c4762a1bSJed Brown CHKERRQ(ierr) 159*c4762a1bSJed Brown call VecGetArray(f,f_v,f_i,ierr) 160*c4762a1bSJed Brown CHKERRQ(ierr) 161*c4762a1bSJed Brown 162*c4762a1bSJed Brown 163*c4762a1bSJed Brown! Compute F(X) 164*c4762a1bSJed Brown do i=0,m-1 165*c4762a1bSJed Brown f_v(f_i+i) = y(i) - exp(-x_v(x_i+0)*t(i))/ & 166*c4762a1bSJed Brown & (x_v(x_i+1) + x_v(x_i+2)*t(i)) 167*c4762a1bSJed Brown 168*c4762a1bSJed Brown enddo 169*c4762a1bSJed Brown 170*c4762a1bSJed Brown 171*c4762a1bSJed Brown! Restore vectors 172*c4762a1bSJed Brown call VecRestoreArray(X,x_v,x_i,ierr) 173*c4762a1bSJed Brown CHKERRQ(ierr) 174*c4762a1bSJed Brown call VecRestoreArray(F,f_v,f_i,ierr) 175*c4762a1bSJed Brown CHKERRQ(ierr) 176*c4762a1bSJed Brown 177*c4762a1bSJed Brown 178*c4762a1bSJed Brown return 179*c4762a1bSJed Brown end 180*c4762a1bSJed Brown 181*c4762a1bSJed Brown subroutine FormStartingPoint(x) 182*c4762a1bSJed Brown#include "chwirut1f.h" 183*c4762a1bSJed Brown 184*c4762a1bSJed Brown Vec x 185*c4762a1bSJed Brown PetscReal x_v(0:1) 186*c4762a1bSJed Brown PetscOffset x_i 187*c4762a1bSJed Brown PetscErrorCode ierr 188*c4762a1bSJed Brown 189*c4762a1bSJed Brown call VecGetArray(x,x_v,x_i,ierr) 190*c4762a1bSJed Brown x_v(x_i) = 0.15 191*c4762a1bSJed Brown x_v(x_i+1) = 0.008 192*c4762a1bSJed Brown x_v(x_i+2) = 0.01 193*c4762a1bSJed Brown call VecRestoreArray(x,x_v,x_i,ierr) 194*c4762a1bSJed Brown return 195*c4762a1bSJed Brown end 196*c4762a1bSJed Brown 197*c4762a1bSJed Brown subroutine InitializeData() 198*c4762a1bSJed Brown#include "chwirut1f.h" 199*c4762a1bSJed Brown 200*c4762a1bSJed Brown integer i 201*c4762a1bSJed Brown i=0 202*c4762a1bSJed Brown y(i) = 92.9000; t(i) = 0.5000; i=i+1 203*c4762a1bSJed Brown y(i) = 78.7000; t(i) = 0.6250; i=i+1 204*c4762a1bSJed Brown y(i) = 64.2000; t(i) = 0.7500; i=i+1 205*c4762a1bSJed Brown y(i) = 64.9000; t(i) = 0.8750; i=i+1 206*c4762a1bSJed Brown y(i) = 57.1000; t(i) = 1.0000; i=i+1 207*c4762a1bSJed Brown y(i) = 43.3000; t(i) = 1.2500; i=i+1 208*c4762a1bSJed Brown y(i) = 31.1000; t(i) = 1.7500; i=i+1 209*c4762a1bSJed Brown y(i) = 23.6000; t(i) = 2.2500; i=i+1 210*c4762a1bSJed Brown y(i) = 31.0500; t(i) = 1.7500; i=i+1 211*c4762a1bSJed Brown y(i) = 23.7750; t(i) = 2.2500; i=i+1 212*c4762a1bSJed Brown y(i) = 17.7375; t(i) = 2.7500; i=i+1 213*c4762a1bSJed Brown y(i) = 13.8000; t(i) = 3.2500; i=i+1 214*c4762a1bSJed Brown y(i) = 11.5875; t(i) = 3.7500; i=i+1 215*c4762a1bSJed Brown y(i) = 9.4125; t(i) = 4.2500; i=i+1 216*c4762a1bSJed Brown y(i) = 7.7250; t(i) = 4.7500; i=i+1 217*c4762a1bSJed Brown y(i) = 7.3500; t(i) = 5.2500; i=i+1 218*c4762a1bSJed Brown y(i) = 8.0250; t(i) = 5.7500; i=i+1 219*c4762a1bSJed Brown y(i) = 90.6000; t(i) = 0.5000; i=i+1 220*c4762a1bSJed Brown y(i) = 76.9000; t(i) = 0.6250; i=i+1 221*c4762a1bSJed Brown y(i) = 71.6000; t(i) = 0.7500; i=i+1 222*c4762a1bSJed Brown y(i) = 63.6000; t(i) = 0.8750; i=i+1 223*c4762a1bSJed Brown y(i) = 54.0000; t(i) = 1.0000; i=i+1 224*c4762a1bSJed Brown y(i) = 39.2000; t(i) = 1.2500; i=i+1 225*c4762a1bSJed Brown y(i) = 29.3000; t(i) = 1.7500; i=i+1 226*c4762a1bSJed Brown y(i) = 21.4000; t(i) = 2.2500; i=i+1 227*c4762a1bSJed Brown y(i) = 29.1750; t(i) = 1.7500; i=i+1 228*c4762a1bSJed Brown y(i) = 22.1250; t(i) = 2.2500; i=i+1 229*c4762a1bSJed Brown y(i) = 17.5125; t(i) = 2.7500; i=i+1 230*c4762a1bSJed Brown y(i) = 14.2500; t(i) = 3.2500; i=i+1 231*c4762a1bSJed Brown y(i) = 9.4500; t(i) = 3.7500; i=i+1 232*c4762a1bSJed Brown y(i) = 9.1500; t(i) = 4.2500; i=i+1 233*c4762a1bSJed Brown y(i) = 7.9125; t(i) = 4.7500; i=i+1 234*c4762a1bSJed Brown y(i) = 8.4750; t(i) = 5.2500; i=i+1 235*c4762a1bSJed Brown y(i) = 6.1125; t(i) = 5.7500; i=i+1 236*c4762a1bSJed Brown y(i) = 80.0000; t(i) = 0.5000; i=i+1 237*c4762a1bSJed Brown y(i) = 79.0000; t(i) = 0.6250; i=i+1 238*c4762a1bSJed Brown y(i) = 63.8000; t(i) = 0.7500; i=i+1 239*c4762a1bSJed Brown y(i) = 57.2000; t(i) = 0.8750; i=i+1 240*c4762a1bSJed Brown y(i) = 53.2000; t(i) = 1.0000; i=i+1 241*c4762a1bSJed Brown y(i) = 42.5000; t(i) = 1.2500; i=i+1 242*c4762a1bSJed Brown y(i) = 26.8000; t(i) = 1.7500; i=i+1 243*c4762a1bSJed Brown y(i) = 20.4000; t(i) = 2.2500; i=i+1 244*c4762a1bSJed Brown y(i) = 26.8500; t(i) = 1.7500; i=i+1 245*c4762a1bSJed Brown y(i) = 21.0000; t(i) = 2.2500; i=i+1 246*c4762a1bSJed Brown y(i) = 16.4625; t(i) = 2.7500; i=i+1 247*c4762a1bSJed Brown y(i) = 12.5250; t(i) = 3.2500; i=i+1 248*c4762a1bSJed Brown y(i) = 10.5375; t(i) = 3.7500; i=i+1 249*c4762a1bSJed Brown y(i) = 8.5875; t(i) = 4.2500; i=i+1 250*c4762a1bSJed Brown y(i) = 7.1250; t(i) = 4.7500; i=i+1 251*c4762a1bSJed Brown y(i) = 6.1125; t(i) = 5.2500; i=i+1 252*c4762a1bSJed Brown y(i) = 5.9625; t(i) = 5.7500; i=i+1 253*c4762a1bSJed Brown y(i) = 74.1000; t(i) = 0.5000; i=i+1 254*c4762a1bSJed Brown y(i) = 67.3000; t(i) = 0.6250; i=i+1 255*c4762a1bSJed Brown y(i) = 60.8000; t(i) = 0.7500; i=i+1 256*c4762a1bSJed Brown y(i) = 55.5000; t(i) = 0.8750; i=i+1 257*c4762a1bSJed Brown y(i) = 50.3000; t(i) = 1.0000; i=i+1 258*c4762a1bSJed Brown y(i) = 41.0000; t(i) = 1.2500; i=i+1 259*c4762a1bSJed Brown y(i) = 29.4000; t(i) = 1.7500; i=i+1 260*c4762a1bSJed Brown y(i) = 20.4000; t(i) = 2.2500; i=i+1 261*c4762a1bSJed Brown y(i) = 29.3625; t(i) = 1.7500; i=i+1 262*c4762a1bSJed Brown y(i) = 21.1500; t(i) = 2.2500; i=i+1 263*c4762a1bSJed Brown y(i) = 16.7625; t(i) = 2.7500; i=i+1 264*c4762a1bSJed Brown y(i) = 13.2000; t(i) = 3.2500; i=i+1 265*c4762a1bSJed Brown y(i) = 10.8750; t(i) = 3.7500; i=i+1 266*c4762a1bSJed Brown y(i) = 8.1750; t(i) = 4.2500; i=i+1 267*c4762a1bSJed Brown y(i) = 7.3500; t(i) = 4.7500; i=i+1 268*c4762a1bSJed Brown y(i) = 5.9625; t(i) = 5.2500; i=i+1 269*c4762a1bSJed Brown y(i) = 5.6250; t(i) = 5.7500; i=i+1 270*c4762a1bSJed Brown y(i) = 81.5000; t(i) = .5000; i=i+1 271*c4762a1bSJed Brown y(i) = 62.4000; t(i) = .7500; i=i+1 272*c4762a1bSJed Brown y(i) = 32.5000; t(i) = 1.5000; i=i+1 273*c4762a1bSJed Brown y(i) = 12.4100; t(i) = 3.0000; i=i+1 274*c4762a1bSJed Brown y(i) = 13.1200; t(i) = 3.0000; i=i+1 275*c4762a1bSJed Brown y(i) = 15.5600; t(i) = 3.0000; i=i+1 276*c4762a1bSJed Brown y(i) = 5.6300; t(i) = 6.0000; i=i+1 277*c4762a1bSJed Brown y(i) = 78.0000; t(i) = .5000; i=i+1 278*c4762a1bSJed Brown y(i) = 59.9000; t(i) = .7500; i=i+1 279*c4762a1bSJed Brown y(i) = 33.2000; t(i) = 1.5000; i=i+1 280*c4762a1bSJed Brown y(i) = 13.8400; t(i) = 3.0000; i=i+1 281*c4762a1bSJed Brown y(i) = 12.7500; t(i) = 3.0000; i=i+1 282*c4762a1bSJed Brown y(i) = 14.6200; t(i) = 3.0000; i=i+1 283*c4762a1bSJed Brown y(i) = 3.9400; t(i) = 6.0000; i=i+1 284*c4762a1bSJed Brown y(i) = 76.8000; t(i) = .5000; i=i+1 285*c4762a1bSJed Brown y(i) = 61.0000; t(i) = .7500; i=i+1 286*c4762a1bSJed Brown y(i) = 32.9000; t(i) = 1.5000; i=i+1 287*c4762a1bSJed Brown y(i) = 13.8700; t(i) = 3.0000; i=i+1 288*c4762a1bSJed Brown y(i) = 11.8100; t(i) = 3.0000; i=i+1 289*c4762a1bSJed Brown y(i) = 13.3100; t(i) = 3.0000; i=i+1 290*c4762a1bSJed Brown y(i) = 5.4400; t(i) = 6.0000; i=i+1 291*c4762a1bSJed Brown y(i) = 78.0000; t(i) = .5000; i=i+1 292*c4762a1bSJed Brown y(i) = 63.5000; t(i) = .7500; i=i+1 293*c4762a1bSJed Brown y(i) = 33.8000; t(i) = 1.5000; i=i+1 294*c4762a1bSJed Brown y(i) = 12.5600; t(i) = 3.0000; i=i+1 295*c4762a1bSJed Brown y(i) = 5.6300; t(i) = 6.0000; i=i+1 296*c4762a1bSJed Brown y(i) = 12.7500; t(i) = 3.0000; i=i+1 297*c4762a1bSJed Brown y(i) = 13.1200; t(i) = 3.0000; i=i+1 298*c4762a1bSJed Brown y(i) = 5.4400; t(i) = 6.0000; i=i+1 299*c4762a1bSJed Brown y(i) = 76.8000; t(i) = .5000; i=i+1 300*c4762a1bSJed Brown y(i) = 60.0000; t(i) = .7500; i=i+1 301*c4762a1bSJed Brown y(i) = 47.8000; t(i) = 1.0000; i=i+1 302*c4762a1bSJed Brown y(i) = 32.0000; t(i) = 1.5000; i=i+1 303*c4762a1bSJed Brown y(i) = 22.2000; t(i) = 2.0000; i=i+1 304*c4762a1bSJed Brown y(i) = 22.5700; t(i) = 2.0000; i=i+1 305*c4762a1bSJed Brown y(i) = 18.8200; t(i) = 2.5000; i=i+1 306*c4762a1bSJed Brown y(i) = 13.9500; t(i) = 3.0000; i=i+1 307*c4762a1bSJed Brown y(i) = 11.2500; t(i) = 4.0000; i=i+1 308*c4762a1bSJed Brown y(i) = 9.0000; t(i) = 5.0000; i=i+1 309*c4762a1bSJed Brown y(i) = 6.6700; t(i) = 6.0000; i=i+1 310*c4762a1bSJed Brown y(i) = 75.8000; t(i) = .5000; i=i+1 311*c4762a1bSJed Brown y(i) = 62.0000; t(i) = .7500; i=i+1 312*c4762a1bSJed Brown y(i) = 48.8000; t(i) = 1.0000; i=i+1 313*c4762a1bSJed Brown y(i) = 35.2000; t(i) = 1.5000; i=i+1 314*c4762a1bSJed Brown y(i) = 20.0000; t(i) = 2.0000; i=i+1 315*c4762a1bSJed Brown y(i) = 20.3200; t(i) = 2.0000; i=i+1 316*c4762a1bSJed Brown y(i) = 19.3100; t(i) = 2.5000; i=i+1 317*c4762a1bSJed Brown y(i) = 12.7500; t(i) = 3.0000; i=i+1 318*c4762a1bSJed Brown y(i) = 10.4200; t(i) = 4.0000; i=i+1 319*c4762a1bSJed Brown y(i) = 7.3100; t(i) = 5.0000; i=i+1 320*c4762a1bSJed Brown y(i) = 7.4200; t(i) = 6.0000; i=i+1 321*c4762a1bSJed Brown y(i) = 70.5000; t(i) = .5000; i=i+1 322*c4762a1bSJed Brown y(i) = 59.5000; t(i) = .7500; i=i+1 323*c4762a1bSJed Brown y(i) = 48.5000; t(i) = 1.0000; i=i+1 324*c4762a1bSJed Brown y(i) = 35.8000; t(i) = 1.5000; i=i+1 325*c4762a1bSJed Brown y(i) = 21.0000; t(i) = 2.0000; i=i+1 326*c4762a1bSJed Brown y(i) = 21.6700; t(i) = 2.0000; i=i+1 327*c4762a1bSJed Brown y(i) = 21.0000; t(i) = 2.5000; i=i+1 328*c4762a1bSJed Brown y(i) = 15.6400; t(i) = 3.0000; i=i+1 329*c4762a1bSJed Brown y(i) = 8.1700; t(i) = 4.0000; i=i+1 330*c4762a1bSJed Brown y(i) = 8.5500; t(i) = 5.0000; i=i+1 331*c4762a1bSJed Brown y(i) = 10.1200; t(i) = 6.0000; i=i+1 332*c4762a1bSJed Brown y(i) = 78.0000; t(i) = .5000; i=i+1 333*c4762a1bSJed Brown y(i) = 66.0000; t(i) = .6250; i=i+1 334*c4762a1bSJed Brown y(i) = 62.0000; t(i) = .7500; i=i+1 335*c4762a1bSJed Brown y(i) = 58.0000; t(i) = .8750; i=i+1 336*c4762a1bSJed Brown y(i) = 47.7000; t(i) = 1.0000; i=i+1 337*c4762a1bSJed Brown y(i) = 37.8000; t(i) = 1.2500; i=i+1 338*c4762a1bSJed Brown y(i) = 20.2000; t(i) = 2.2500; i=i+1 339*c4762a1bSJed Brown y(i) = 21.0700; t(i) = 2.2500; i=i+1 340*c4762a1bSJed Brown y(i) = 13.8700; t(i) = 2.7500; i=i+1 341*c4762a1bSJed Brown y(i) = 9.6700; t(i) = 3.2500; i=i+1 342*c4762a1bSJed Brown y(i) = 7.7600; t(i) = 3.7500; i=i+1 343*c4762a1bSJed Brown y(i) = 5.4400; t(i) = 4.2500; i=i+1 344*c4762a1bSJed Brown y(i) = 4.8700; t(i) = 4.7500; i=i+1 345*c4762a1bSJed Brown y(i) = 4.0100; t(i) = 5.2500; i=i+1 346*c4762a1bSJed Brown y(i) = 3.7500; t(i) = 5.7500; i=i+1 347*c4762a1bSJed Brown y(i) = 24.1900; t(i) = 3.0000; i=i+1 348*c4762a1bSJed Brown y(i) = 25.7600; t(i) = 3.0000; i=i+1 349*c4762a1bSJed Brown y(i) = 18.0700; t(i) = 3.0000; i=i+1 350*c4762a1bSJed Brown y(i) = 11.8100; t(i) = 3.0000; i=i+1 351*c4762a1bSJed Brown y(i) = 12.0700; t(i) = 3.0000; i=i+1 352*c4762a1bSJed Brown y(i) = 16.1200; t(i) = 3.0000; i=i+1 353*c4762a1bSJed Brown y(i) = 70.8000; t(i) = .5000; i=i+1 354*c4762a1bSJed Brown y(i) = 54.7000; t(i) = .7500; i=i+1 355*c4762a1bSJed Brown y(i) = 48.0000; t(i) = 1.0000; i=i+1 356*c4762a1bSJed Brown y(i) = 39.8000; t(i) = 1.5000; i=i+1 357*c4762a1bSJed Brown y(i) = 29.8000; t(i) = 2.0000; i=i+1 358*c4762a1bSJed Brown y(i) = 23.7000; t(i) = 2.5000; i=i+1 359*c4762a1bSJed Brown y(i) = 29.6200; t(i) = 2.0000; i=i+1 360*c4762a1bSJed Brown y(i) = 23.8100; t(i) = 2.5000; i=i+1 361*c4762a1bSJed Brown y(i) = 17.7000; t(i) = 3.0000; i=i+1 362*c4762a1bSJed Brown y(i) = 11.5500; t(i) = 4.0000; i=i+1 363*c4762a1bSJed Brown y(i) = 12.0700; t(i) = 5.0000; i=i+1 364*c4762a1bSJed Brown y(i) = 8.7400; t(i) = 6.0000; i=i+1 365*c4762a1bSJed Brown y(i) = 80.7000; t(i) = .5000; i=i+1 366*c4762a1bSJed Brown y(i) = 61.3000; t(i) = .7500; i=i+1 367*c4762a1bSJed Brown y(i) = 47.5000; t(i) = 1.0000; i=i+1 368*c4762a1bSJed Brown y(i) = 29.0000; t(i) = 1.5000; i=i+1 369*c4762a1bSJed Brown y(i) = 24.0000; t(i) = 2.0000; i=i+1 370*c4762a1bSJed Brown y(i) = 17.7000; t(i) = 2.5000; i=i+1 371*c4762a1bSJed Brown y(i) = 24.5600; t(i) = 2.0000; i=i+1 372*c4762a1bSJed Brown y(i) = 18.6700; t(i) = 2.5000; i=i+1 373*c4762a1bSJed Brown y(i) = 16.2400; t(i) = 3.0000; i=i+1 374*c4762a1bSJed Brown y(i) = 8.7400; t(i) = 4.0000; i=i+1 375*c4762a1bSJed Brown y(i) = 7.8700; t(i) = 5.0000; i=i+1 376*c4762a1bSJed Brown y(i) = 8.5100; t(i) = 6.0000; i=i+1 377*c4762a1bSJed Brown y(i) = 66.7000; t(i) = .5000; i=i+1 378*c4762a1bSJed Brown y(i) = 59.2000; t(i) = .7500; i=i+1 379*c4762a1bSJed Brown y(i) = 40.8000; t(i) = 1.0000; i=i+1 380*c4762a1bSJed Brown y(i) = 30.7000; t(i) = 1.5000; i=i+1 381*c4762a1bSJed Brown y(i) = 25.7000; t(i) = 2.0000; i=i+1 382*c4762a1bSJed Brown y(i) = 16.3000; t(i) = 2.5000; i=i+1 383*c4762a1bSJed Brown y(i) = 25.9900; t(i) = 2.0000; i=i+1 384*c4762a1bSJed Brown y(i) = 16.9500; t(i) = 2.5000; i=i+1 385*c4762a1bSJed Brown y(i) = 13.3500; t(i) = 3.0000; i=i+1 386*c4762a1bSJed Brown y(i) = 8.6200; t(i) = 4.0000; i=i+1 387*c4762a1bSJed Brown y(i) = 7.2000; t(i) = 5.0000; i=i+1 388*c4762a1bSJed Brown y(i) = 6.6400; t(i) = 6.0000; i=i+1 389*c4762a1bSJed Brown y(i) = 13.6900; t(i) = 3.0000; i=i+1 390*c4762a1bSJed Brown y(i) = 81.0000; t(i) = .5000; i=i+1 391*c4762a1bSJed Brown y(i) = 64.5000; t(i) = .7500; i=i+1 392*c4762a1bSJed Brown y(i) = 35.5000; t(i) = 1.5000; i=i+1 393*c4762a1bSJed Brown y(i) = 13.3100; t(i) = 3.0000; i=i+1 394*c4762a1bSJed Brown y(i) = 4.8700; t(i) = 6.0000; i=i+1 395*c4762a1bSJed Brown y(i) = 12.9400; t(i) = 3.0000; i=i+1 396*c4762a1bSJed Brown y(i) = 5.0600; t(i) = 6.0000; i=i+1 397*c4762a1bSJed Brown y(i) = 15.1900; t(i) = 3.0000; i=i+1 398*c4762a1bSJed Brown y(i) = 14.6200; t(i) = 3.0000; i=i+1 399*c4762a1bSJed Brown y(i) = 15.6400; t(i) = 3.0000; i=i+1 400*c4762a1bSJed Brown y(i) = 25.5000; t(i) = 1.7500; i=i+1 401*c4762a1bSJed Brown y(i) = 25.9500; t(i) = 1.7500; i=i+1 402*c4762a1bSJed Brown y(i) = 81.7000; t(i) = .5000; i=i+1 403*c4762a1bSJed Brown y(i) = 61.6000; t(i) = .7500; i=i+1 404*c4762a1bSJed Brown y(i) = 29.8000; t(i) = 1.7500; i=i+1 405*c4762a1bSJed Brown y(i) = 29.8100; t(i) = 1.7500; i=i+1 406*c4762a1bSJed Brown y(i) = 17.1700; t(i) = 2.7500; i=i+1 407*c4762a1bSJed Brown y(i) = 10.3900; t(i) = 3.7500; i=i+1 408*c4762a1bSJed Brown y(i) = 28.4000; t(i) = 1.7500; i=i+1 409*c4762a1bSJed Brown y(i) = 28.6900; t(i) = 1.7500; i=i+1 410*c4762a1bSJed Brown y(i) = 81.3000; t(i) = .5000; i=i+1 411*c4762a1bSJed Brown y(i) = 60.9000; t(i) = .7500; i=i+1 412*c4762a1bSJed Brown y(i) = 16.6500; t(i) = 2.7500; i=i+1 413*c4762a1bSJed Brown y(i) = 10.0500; t(i) = 3.7500; i=i+1 414*c4762a1bSJed Brown y(i) = 28.9000; t(i) = 1.7500; i=i+1 415*c4762a1bSJed Brown y(i) = 28.9500; t(i) = 1.7500; i=i+1 416*c4762a1bSJed Brown 417*c4762a1bSJed Brown return 418*c4762a1bSJed Brown end 419*c4762a1bSJed Brown 420*c4762a1bSJed Brown!/*TEST 421*c4762a1bSJed Brown! 422*c4762a1bSJed Brown! build: 423*c4762a1bSJed Brown! requires: !complex 424*c4762a1bSJed Brown! 425*c4762a1bSJed Brown! test: 426*c4762a1bSJed Brown! args: -tao_smonitor -tao_max_it 100 -tao_type pounders -tao_gatol 1.e-5 427*c4762a1bSJed Brown! requires: !single 428*c4762a1bSJed Brown! 429*c4762a1bSJed Brown!TEST*/ 430