Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_ANP_AnalysisInterface.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright 2002 Sandia Corporation. Under the terms
5 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
6 // Government retains certain rights in this software.
7 //
8 // Xyce(TM) Parallel Electrical Simulator
9 // Copyright (C) 2002-2014 Sandia Corporation
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //-----------------------------------------------------------------------------
24 
25 //-----------------------------------------------------------------------------
26 // Filename : $RCSfile: N_ANP_AnalysisInterface.C,v $
27 // Purpose :
28 // Special Notes :
29 // Creator : Richard Schiek, SNL, Electrical and Microsystem Modeling
30 // Creation Date : 01/24/08
31 //
32 // Revision Information:
33 // ---------------------
34 // Revision Number: $Revision: 1.46 $
35 // Revision Date : $Date: 2014/02/24 23:49:12 $
36 // Current Owner : $Author: tvrusso $
37 //-----------------------------------------------------------------------------
38 
39 #include <Xyce_config.h>
40 
41 #include <iostream>
42 
44 #include <N_ANP_AnalysisManager.h>
45 
46 #include <N_TIA_Assembler.h>
47 #include <N_TIA_DataStore.h>
48 #include <N_TIA_TimeIntInfo.h>
49 #include <N_TIA_TwoLevelError.h>
50 
51 #include <N_UTL_OptionBlock.h>
52 #include <N_ERH_ErrorMgr.h>
53 #include <N_LOA_Loader.h>
54 
55 #include <N_PDS_Manager.h>
56 
57 #include <N_IO_CmdParse.h>
58 
59 #include <N_UTL_BreakPoint.h>
60 #include <N_UTL_NoCase.h>
61 
62 #include <N_TIA_TimeIntInfo.h>
63 #include <N_TIA_TwoLevelError.h>
64 
65 #include <N_LOA_NonlinearEquationLoader.h>
66 #include <N_DEV_DeviceInterface.h>
67 #include <N_TOP_Topology.h>
68 #include <N_LAS_Builder.h>
69 #include <N_NLS_Manager.h>
70 
71 namespace Xyce {
72 namespace Analysis {
73 
74 //-----------------------------------------------------------------------------
75 // Function : anpAnalysisModeToNLS
76 // Purpose : Converte between N_NLS_Manager.h AnalysisMode enum and
77 // : expanded ANP_AnalysisInterface.h ANP_Analysis_Mode enum.
78 // Special Notes :
79 // Scope :
80 // Creator : Todd Coffey, 1414
81 // Creation Date : 07/23/08
82 //-----------------------------------------------------------------------------
84 {
85  AnalysisMode outMode;
86  if (mode == ANP_MODE_TRANSIENT)
87  {
88  outMode = TRANSIENT;
89  }
90  else if (mode == ANP_MODE_DC_OP)
91  {
92  outMode = DC_OP;
93  }
94  else if (mode == ANP_MODE_DC_SWEEP)
95  {
96  outMode = DC_SWEEP;
97  }
98  else if (mode == ANP_MODE_HB)
99  {
100  outMode = HB_MODE;
101  }
102  else
103  {
104  outMode = NUM_MODES; // Should be this be TRANSIENT?
105  }
106  return outMode;
107 }
108 
109 //-----------------------------------------------------------------------------
110 // Function : AnalysisInterface::AnalysisInterface
111 // Purpose : constructor
112 // Special Notes :
113 // Scope : public
114 // Creator : Eric Keiter, 9233, Computational Sciences
115 // Creation Date : 11/10/00
116 //-----------------------------------------------------------------------------
118  : commandLine_(cp)
119 {
121 }
122 
123 //-----------------------------------------------------------------------------
124 // Function : AnalysisInterface::~AnalysisInterface
125 // Purpose : destructor
126 // Special Notes :
127 // Scope : public
128 // Creator : Eric Keiter, SNL
129 // Creation Date : 11/10/00
130 //-----------------------------------------------------------------------------
132 {}
133 
134 //-----------------------------------------------------------------------------
135 // Function : AnalysisInterface::resetAll
136 // Purpose : just like a destructor without the death
137 // Special Notes :
138 // Scope : public
139 // Creator : Todd Coffey, Rich Schiek, Ting Mei
140 // Creation Date : 7/24/08
141 //-----------------------------------------------------------------------------
143 {
144  anaManagerPtr_->resetAll();
145 }
146 
147 
148 //-----------------------------------------------------------------------------
149 // Function : AnalysisInterface::registerTIAParams
150 // Purpose :
151 // Special Notes :
152 // Scope : public
153 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
154 // Creation Date : 6/06/00
155 //-----------------------------------------------------------------------------
157 
158 {
159  anaManagerPtr_->registerTIAParams(tiaParams_tmp);
160  return true;
161 }
162 
163 //-----------------------------------------------------------------------------
164 // Function : AnalysisInterface::registerNonlinearEquationLoader
165 // Purpose :
166 // Special Notes :
167 // Scope : public
168 // Creator : Todd S. Coffey, 1414
169 // Creation Date : 07/23/08
170 //-----------------------------------------------------------------------------
171 bool AnalysisInterface::registerNonlinearEquationLoader( N_LOA_NonlinearEquationLoader * nonlinearEquationLoaderPtr )
172 {
173  anaManagerPtr_->registerNonlinearEquationLoader(nonlinearEquationLoaderPtr);
174  return true;
175 }
176 
177 //-----------------------------------------------------------------------------
178 // Function : AnalysisInterface::registerDeviceInterface
179 // Purpose :
180 // Special Notes :
181 // Scope : public
182 // Creator : Todd S. Coffey, 1414
183 // Creation Date : 07/23/08
184 //-----------------------------------------------------------------------------
186 {
187  anaManagerPtr_->registerDeviceInterface(devInterfacePtr);
188  return true;
189 }
190 
191 //-----------------------------------------------------------------------------
192 // Function : AnalysisInterface::registerTopology
193 // Purpose :
194 // Special Notes :
195 // Scope : public
196 // Creator : Todd S. Coffey, 1414
197 // Creation Date : 07/23/08
198 //-----------------------------------------------------------------------------
199 bool AnalysisInterface::registerTopology( N_TOP_Topology * topoMgrPtr )
200 {
201  anaManagerPtr_->registerTopology( topoMgrPtr );
202  return true;
203 }
204 
205 //-----------------------------------------------------------------------------
206 // Function : AnalysisInterface::registerApplicationBuilder
207 // Purpose :
208 // Special Notes :
209 // Scope : public
210 // Creator : Todd S. Coffey, 1414
211 // Creation Date : 07/23/08
212 //-----------------------------------------------------------------------------
213 bool AnalysisInterface::registerApplicationBuilder( N_LAS_Builder * appBuilderPtr )
214 {
215  anaManagerPtr_->registerApplicationBuilder( appBuilderPtr );
216  return true;
217 }
218 
219 //-----------------------------------------------------------------------------
220 // Function : AnalysisInterface::registerPkgOptionsMgr
221 // Purpose :
222 // Special Notes :
223 // Scope : public
224 // Creator : Rich Schiek, 1437
225 // Creation Date : 10/21/08
226 //-----------------------------------------------------------------------------
227 bool AnalysisInterface::registerPkgOptionsMgr( N_IO_PkgOptionsMgr *pkgOptPtr )
228 {
229  pkgOptMgrPtr_ = pkgOptPtr;
230 
231  // this work was in the constructor, but now we don't know the pkgOptMgrPtr_ until
232  // it is registered. So, do this work now.
233  std::string netListFile = "";
234  if (commandLine_.getArgumentValue("netlist") != "")
235  {
236  netListFile = commandLine_.getArgumentValue("netlist");
237  }
238 
239  pkgOptMgrPtr_->submitRegistration(
240  "TIMEINT", netListFile, new AnalysisInterface_TranOptionsReg( this ) );
241 
242  pkgOptMgrPtr_->submitRegistration(
243  "TRAN", netListFile, new AnalysisInterface_TransAnalysisReg( this ) );
244 
245  pkgOptMgrPtr_->submitRegistration(
246  "DC", netListFile, new AnalysisInterface_DCAnalysisReg( this ) );
247 
248  pkgOptMgrPtr_->submitRegistration(
249  "OP", netListFile, new AnalysisInterface_OPAnalysisReg( this ) );
250 
251  pkgOptMgrPtr_->submitRegistration(
252  "STEP", netListFile, new AnalysisInterface_STEPAnalysisReg( this ) );
253 
254  pkgOptMgrPtr_->submitRegistration(
255  "OP_IO", netListFile, new AnalysisInterface_DCOPOptionsReg( this ) );
256 
257  pkgOptMgrPtr_->submitRegistration(
258  "SAVE", netListFile, new AnalysisInterface_SaveOptionsReg( this ) );
259 
260  // MPDE specific netlist lines
261  pkgOptMgrPtr_->submitRegistration(
262  "MPDE", netListFile, new AnalysisInterface_MPDE_AnalysisReg( this ) );
263 
264  pkgOptMgrPtr_->submitRegistration(
265  "MPDEINT", netListFile, new AnalysisInterface_MPDE_OptionsReg( this ) );
266 
267  pkgOptMgrPtr_->submitRegistration(
268  "TIMEINT-MPDE", netListFile, new AnalysisInterface_MPDE_TranMPDEOptionsReg( this ) );
269 
270  // HB Specific netlist lines
271  pkgOptMgrPtr_->submitRegistration(
272  "HB", netListFile, new AnalysisInterface_HB_AnalysisReg( this ) );
273 
274  pkgOptMgrPtr_->submitRegistration(
275  "HBINT", netListFile, new AnalysisInterface_HB_OptionsReg( this ) );
276 
277  pkgOptMgrPtr_->submitRegistration(
278  "LINSOL-HB", netListFile, new AnalysisInterface_HB_LinSolReg( this ) );
279 
280  pkgOptMgrPtr_->submitRegistration(
281  "LINSOL", netListFile, new AnalysisInterface_LinSolReg( this ) );
282 
283  // AC Specific netlist lines
284  pkgOptMgrPtr_->submitRegistration(
285  "AC", netListFile, new AnalysisInterface_AC_AnalysisReg( this ) );
286 
287  // MOR Specific netlist lines
288  pkgOptMgrPtr_->submitRegistration(
289  "MOR", netListFile, new AnalysisInterface_MOR_AnalysisReg( this ) );
290 
291  // MOR Specific netlist lines
292  pkgOptMgrPtr_->submitRegistration(
293  "MOR_OPTS", netListFile, new AnalysisInterface_MOR_OptionsReg( this ) );
294 
295  pkgOptMgrPtr_->submitRegistration(
296  "SENS", netListFile, new AnalysisInterface_SensOptionsReg( this ) );
297 
298  return true;
299 }
300 
301 //-----------------------------------------------------------------------------
302 // Function : AnalysisInterface::setTranAnalysisParams
303 // Purpose :
304 // Special Notes :
305 // Scope : public
306 // Creator : Robert Hoekstra, SNL, Parallel Computational Sciences
307 // Creation Date : 9/27/00
308 //-----------------------------------------------------------------------------
309 bool AnalysisInterface::setTranAnalysisParams(const N_UTL_OptionBlock &tiaParamsBlock)
310 {
311  return anaManagerPtr_->setTranAnalysisParams(tiaParamsBlock);
312 }
313 
314 //-----------------------------------------------------------------------------
315 // Function : AnalysisInterface::setDCAnalysisParams
316 // Purpose :
317 // Special Notes :
318 // Scope : public
319 // Creator : Robert Hoekstra, SNL, Parallel Computational Sciences
320 // Creation Date : 10/6/00
321 //-----------------------------------------------------------------------------
322 bool AnalysisInterface::setDCAnalysisParams(const N_UTL_OptionBlock & tiaParamsBlock)
323 {
324  return anaManagerPtr_->setDCAnalysisParams(tiaParamsBlock);
325 }
326 
327 //-----------------------------------------------------------------------------
328 // Function : AnalysisInterface::setACAnalysisParams
329 // Purpose : Method to handle AC statements
330 // Special Notes :
331 // Scope : public
332 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
333 // Creation Date : 10/18/07
334 //-----------------------------------------------------------------------------
335 bool AnalysisInterface::setACAnalysisParams(const N_UTL_OptionBlock & ACParamBlock)
336 {
337  return anaManagerPtr_->setACAnalysisParams(ACParamBlock);
338 }
339 
340 //-----------------------------------------------------------------------------
341 // Function : AnalysisInterface::setOPAnalysisParams
342 // Purpose :
343 // Special Notes :
344 // Scope : public
345 // Creator : Eric Keiter, SNL
346 // Creation Date : 10/15/07
347 //-----------------------------------------------------------------------------
348 bool AnalysisInterface::setOPAnalysisParams(const N_UTL_OptionBlock & tiaParamsBlock)
349 {
350  return anaManagerPtr_->setOPAnalysisParams(tiaParamsBlock);
351 }
352 
353 //-----------------------------------------------------------------------------
354 // Function : AnalysisInterface::setSTEPAnalysisParams
355 // Purpose :
356 // Special Notes :
357 // Scope : public
358 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
359 // Creation Date : 10/30/03
360 //-----------------------------------------------------------------------------
361 bool AnalysisInterface::setSTEPAnalysisParams(const N_UTL_OptionBlock & tiaParamsBlock)
362 {
363  return anaManagerPtr_->setSTEPAnalysisParams(tiaParamsBlock);
364 }
365 
366 
367 //-----------------------------------------------------------------------------
368 // Function : AnalysisInterface::setSaveOptions
369 // Purpose : Method to handle SAVE statements
370 // Special Notes :
371 // Scope : public
372 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
373 // Creation Date : 10/18/07
374 //-----------------------------------------------------------------------------
375 bool AnalysisInterface::setSaveOptions(const N_UTL_OptionBlock & tiaParamBlock)
376 {
377  return anaManagerPtr_->setSaveOptions(tiaParamBlock);
378 }
379 
380 //-----------------------------------------------------------------------------
381 // Function : AnalysisInterface::setDCOPRestartParams
382 // Purpose : Method to handle DCOP restart statements
383 // Special Notes :
384 // Scope : public
385 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
386 // Creation Date : 10/18/07
387 //-----------------------------------------------------------------------------
388 bool AnalysisInterface::setDCOPRestartParams(const N_UTL_OptionBlock & tiaParamBlock)
389 {
390  return anaManagerPtr_->setDCOPRestartParams(tiaParamBlock);
391 }
392 
393 
394 //-----------------------------------------------------------------------------
395 // Function : AnalysisInterface::setPauseTime
396 // Purpose :
397 // Special Notes :
398 // Scope : public
399 // Creator : Tom Russo, SNL, Component Information and Models
400 // Creation Date : 04/29/04
401 //-----------------------------------------------------------------------------
402 void AnalysisInterface::setPauseTime(const double pauseTime)
403 {
404  anaManagerPtr_->setPauseTime(pauseTime);
405 }
406 
407 //-----------------------------------------------------------------------------
408 // Function : AnalysisInterface::getPauseTime
409 // Purpose :
410 // Special Notes :
411 // Scope : public
412 // Creator : Tom Russo, SNL, Component Information and Models
413 // Creation Date : 04/29/04
414 //-----------------------------------------------------------------------------
416 {
417  return(anaManagerPtr_->getPauseTime());
418 }
419 
420 //-----------------------------------------------------------------------------
421 // Function : AnalysisInterface::isPaused
422 //
423 // Purpose : return the true if the simulation is currently paused
424 //
425 // Special Notes :
426 // Scope : public
427 // Creator : Rich Schiek, SNL, Electrical and Microsystems Simulation
428 // Creation Date : 02/18/2008
429 //-----------------------------------------------------------------------------
431 {
432  return(anaManagerPtr_->isPaused());
433 }
434 //-----------------------------------------------------------------------------
435 // Function : AnalysisInterface::resumeSimulation
436 // Purpose : signal to control algorithm that simulation is continuing
437 // from previously paused simulation
438 // Special Notes :
439 // Scope : public
440 // Creator : Tom Russo, SNL, Component Information and Models
441 // Creation Date : 04/29/04
442 //-----------------------------------------------------------------------------
444 {
445  anaManagerPtr_->resumeSimulation();
446 }
447 
448 //-----------------------------------------------------------------------------
449 // Function : AnalysisInterface::setTranOptions
450 // Purpose :
451 // Special Notes :
452 // Scope : public
453 // Creator : Robert Hoekstra, SNL, Parallel Computational Sciences
454 // Creation Date : 9/29/00
455 //-----------------------------------------------------------------------------
456 bool AnalysisInterface::setTranOptions(const N_UTL_OptionBlock & OB)
457 {
458  return anaManagerPtr_->setTranOptions(OB);
459 }
460 
461 //-----------------------------------------------------------------------------
462 // Function : AnalysisInterface::setMPDEAnalysisParams
463 // Purpose :
464 // Special Notes :
465 // Scope : public
466 // Creator : Todd Coffey, 1414
467 // Creation Date : 7/23/08
468 //-----------------------------------------------------------------------------
469 bool AnalysisInterface::setMPDEAnalysisParams(const N_UTL_OptionBlock & OB)
470 {
471  return anaManagerPtr_->setMPDEAnalysisParams(OB);
472 }
473 
474 //-----------------------------------------------------------------------------
475 // Function : AnalysisInterface::setMPDEOptions
476 // Purpose :
477 // Special Notes :
478 // Scope : public
479 // Creator : Todd Coffey, 1414
480 // Creation Date : 7/23/08
481 //-----------------------------------------------------------------------------
482 bool AnalysisInterface::setMPDEOptions(const N_UTL_OptionBlock & OB)
483 {
484  return anaManagerPtr_->setMPDEOptions(OB);
485 }
486 
487 //-----------------------------------------------------------------------------
488 // Function : AnalysisInterface::setHBAnalysisParams
489 // Purpose :
490 // Special Notes :
491 // Scope : public
492 // Creator : Todd Coffey, Ting Mei
493 // Creation Date : 7/30/08
494 //-----------------------------------------------------------------------------
495 bool AnalysisInterface::setHBAnalysisParams(const N_UTL_OptionBlock & OB)
496 {
497  return anaManagerPtr_->setHBAnalysisParams(OB);
498 }
499 
500 //-----------------------------------------------------------------------------
501 // Function : AnalysisInterface::setHBOptions
502 // Purpose :
503 // Special Notes :
504 // Scope : public
505 // Creator : Todd Coffey, Ting Mei
506 // Creation Date : 7/30/08
507 //-----------------------------------------------------------------------------
508 bool AnalysisInterface::setHBOptions(const N_UTL_OptionBlock & OB)
509 {
510  return anaManagerPtr_->setHBOptions(OB);
511 }
512 
513 //-----------------------------------------------------------------------------
514 // Function : AnalysisInterface::setLinSol
515 // Purpose :
516 // Special Notes :
517 // Scope : public
518 // Creator : Eric R. Keiter, SNL
519 // Creation Date : 07/12/2013
520 //-----------------------------------------------------------------------------
521 bool AnalysisInterface::setLinSol(const N_UTL_OptionBlock & OB)
522 {
523  return anaManagerPtr_->setLinSol(OB);
524 }
525 
526 //-----------------------------------------------------------------------------
527 // Function : AnalysisInterface::setHBLinSol
528 // Purpose :
529 // Special Notes :
530 // Scope : public
531 // Creator : Heidi Thornquist
532 // Creation Date : 11/11/08
533 //-----------------------------------------------------------------------------
534 bool AnalysisInterface::setHBLinSol(const N_UTL_OptionBlock & OB)
535 {
536  return anaManagerPtr_->setHBLinSol(OB);
537 }
538 
539 //-----------------------------------------------------------------------------
540 // Function : AnalysisInterface::setMORAnalysisParams
541 // Purpose :
542 // Special Notes :
543 // Scope : public
544 // Creator : Heidi Thornquist and Ting Mei
545 // Creation Date : 5/31/12
546 //-----------------------------------------------------------------------------
547 bool AnalysisInterface::setMORAnalysisParams(const N_UTL_OptionBlock & OB)
548 {
549  return anaManagerPtr_->setMORAnalysisParams(OB);
550 }
551 
552 //-----------------------------------------------------------------------------
553 // Function : AnalysisInterface::setMOROptions
554 // Purpose :
555 // Special Notes :
556 // Scope : public
557 // Creator : Heidi Thornquist and Ting Mei
558 // Creation Date : 5/31/12
559 //-----------------------------------------------------------------------------
560 bool AnalysisInterface::setMOROptions(const N_UTL_OptionBlock & OB)
561 {
562  return anaManagerPtr_->setMOROptions(OB);
563 }
564 
565 //-----------------------------------------------------------------------------
566 // Function : AnalysisInterface::setTRANMPDEOptions
567 // Purpose :
568 // Special Notes :
569 // Scope : public
570 // Creator : Todd Coffey, 1414
571 // Creation Date : 7/23/08
572 //-----------------------------------------------------------------------------
573 bool AnalysisInterface::setTRANMPDEOptions(const N_UTL_OptionBlock & OB)
574 {
575  return anaManagerPtr_->setTRANMPDEOptions(OB);
576 }
577 
578 
579 //-----------------------------------------------------------------------------
580 // Function : AnalysisInterface::setSensOptions
581 // Purpose :
582 // Special Notes :
583 // Scope : public
584 // Creator : Eric Keiter, Sandia
585 // Creation Date : 6/5/13
586 //-----------------------------------------------------------------------------
587 bool AnalysisInterface::setSensOptions(const N_UTL_OptionBlock & OB)
588 {
589  return anaManagerPtr_->setSensOptions(OB);
590 }
591 
592 //-----------------------------------------------------------------------------
593 // Function : AnalysisInterface::registerElapsedTimer
594 // Purpose :
595 // Special Notes :
596 // Scope : public
597 // Creator : Dave Shirley, PSSI
598 // Creation Date : 02/24/06
599 //-----------------------------------------------------------------------------
601 {
602  return anaManagerPtr_->registerElapsedTimer(et);
603 }
604 
605 //-----------------------------------------------------------------------------
606 // Function : AnalysisInterface::getBlockAnalysisFlag
607 // Purpose :
608 // Special Notes :
609 // Scope : public
610 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
611 // Creation Date : 5/29/05
612 //-----------------------------------------------------------------------------
614 {
615  return anaManagerPtr_->getBlockAnalysisFlag();
616 }
617 
618 //-----------------------------------------------------------------------------
619 // Function : AnalysisInterface::getTransientFlag
620 // Purpose :
621 // Special Notes :
622 // Scope : public
623 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
624 // Creation Date : 5/29/05
625 //-----------------------------------------------------------------------------
627 {
628  return anaManagerPtr_->getTransientFlag();
629 }
630 
631 //-----------------------------------------------------------------------------
632 // Function : AnalysisInterface::initializeAll
633 // Purpose : This function performs the final initializations. Mainly,
634 // it initializes the two data container classes, DataStore and
635 // StepErrorControl. It also registers the neccessary vectors
636 // with the LAS system class.
637 // Special Notes : This function should *only* be called after all the
638 // registrations have all been performed. In particular, the
639 // N_LAS_System class *must* be registered before this function
640 // is called.
641 // Scope : public
642 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
643 // Creation Date : 11/10/00
644 //-----------------------------------------------------------------------------
645 
647 {
648  return anaManagerPtr_->initializeAll();
649 }
650 
651 //-----------------------------------------------------------------------------
652 // Function : AnalysisInterface::registerLinearSystem
653 // Purpose :
654 // Special Notes :
655 // Scope : public
656 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
657 // Creation Date : 6/05/01
658 //-----------------------------------------------------------------------------
659 bool AnalysisInterface::registerLinearSystem(N_LAS_System * lasSysPtr)
660 {
661  anaManagerPtr_->registerLinearSystem(lasSysPtr);
662 
663  return true;
664 }
665 
666 //-----------------------------------------------------------------------------
667 // Function : AnalysisInterface::registerLoader
668 // Purpose :
669 // Special Notes :
670 // Scope : public
671 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
672 // Creation Date : 6/05/01
673 //-----------------------------------------------------------------------------
674 bool AnalysisInterface::registerLoader(N_LOA_Loader * loaderPtr)
675 {
676  return anaManagerPtr_->registerLoader(loaderPtr);
677 }
678 
679 //-----------------------------------------------------------------------------
680 // Function : AnalysisInterface::registerOutputMgr
681 // Purpose :
682 // Special Notes :
683 // Scope : public
684 // Creator : Robert Hoekstra, SNL, Parallel Computational Sciences
685 // Creation Date : 6/05/01
686 //-----------------------------------------------------------------------------
687 bool AnalysisInterface::registerOutputMgr(N_IO_OutputMgr * outputPtr)
688 {
689  return anaManagerPtr_->registerOutputMgr(outputPtr);
690 }
691 
692 //-----------------------------------------------------------------------------
693 // Function : AnalysisInterface::registerRestartMgr
694 // Purpose :
695 // Special Notes :
696 // Scope : public
697 // Creator : Robert Hoekstra, SNL, Parallel Computational Sciences
698 // Creation Date : 6/05/01
699 //-----------------------------------------------------------------------------
700 bool AnalysisInterface::registerRestartMgr(N_IO_RestartMgr * restartPtr)
701 {
702  return anaManagerPtr_->registerRestartMgr(restartPtr);
703 }
704 
705 //-----------------------------------------------------------------------------
706 // Function : AnalysisInterface::registerNLSolver
707 // Purpose :
708 // Special Notes :
709 // Scope : public
710 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
711 // Creation Date : 6/05/01
712 //-----------------------------------------------------------------------------
714 {
715  return anaManagerPtr_->registerNLSManager(nlsMgrPtr);
716 }
717 
718 //-----------------------------------------------------------------------------
719 // Function : AnalysisInterface::run
720 // Purpose : Execute the top level control loop.
721 // Special Notes :
722 // Scope : public
723 // Creator : Eric R. Keiter, 9233, Computational Sciences
724 // Creation Date : 11/10/00
725 //-----------------------------------------------------------------------------
726 
728 {
729  return anaManagerPtr_->run();
730 }
731 
732 //-----------------------------------------------------------------------------
733 // Function : AnalysisInterface::updateDerivs
734 // Purpose : calls the time int. method to update the corrector
735 // derivatives.
736 // Special Notes :
737 // Scope : public
738 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
739 // Creation Date : 11/10/00
740 //-----------------------------------------------------------------------------
741 
743 {
744  return anaManagerPtr_->updateDerivs ();
745 }
746 
747 //-----------------------------------------------------------------------------
748 // Function : AnalysisInterface::updateDivDiffs
749 // Purpose :
750 // Special Notes :
751 // Scope : public
752 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
753 // Creation Date : 11/10/00
754 //-----------------------------------------------------------------------------
755 
757 {
758  return anaManagerPtr_->updateDivDiffs();
759 }
760 
761 //-----------------------------------------------------------------------------
762 // Function : AnalysisInterface::getTime
763 // Purpose :
764 // Special Notes :
765 // Scope : public
766 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
767 // Creation Date : 6/27/00
768 //-----------------------------------------------------------------------------
770 {
771  return anaManagerPtr_->getTime();
772 }
773 
774 //-----------------------------------------------------------------------------
775 // Function : AnalysisInterface::getCurrentTime
776 // Purpose :
777 // Special Notes :
778 // Scope : public
779 // Creator : Richard Schiek, Electrical and Mems Modeling
780 // Creation Date : 8/21/2009
781 //-----------------------------------------------------------------------------
783 {
784  return anaManagerPtr_->getCurrentTime();
785 }
786 
787 
788 //-----------------------------------------------------------------------------
789 // Function : AnalysisInterface::getFinalTime
790 // Purpose :
791 // Special Notes :
792 // Scope : public
793 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
794 // Creation Date : 9/04/01
795 //-----------------------------------------------------------------------------
797 {
798  return anaManagerPtr_->getFinalTime();
799 }
800 
801 //-----------------------------------------------------------------------------
802 // Function : AnalysisInterface::getInitialTime
803 // Purpose :
804 // Special Notes :
805 // Scope : public
806 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
807 // Creation Date : 3/04/02
808 //-----------------------------------------------------------------------------
810 {
811  return anaManagerPtr_->getInitialTime();
812 }
813 
814 //-----------------------------------------------------------------------------
815 // Function : AnalysisInterface::equateTmpVectors
816 // Purpose :
817 // Special Notes :
818 // Scope : public
819 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
820 // Creation Date : 01/24/02
821 //-----------------------------------------------------------------------------
823 {
824  return anaManagerPtr_->equateTmpVectors();
825 }
826 
827 //-----------------------------------------------------------------------------
828 // Function : AnalysisInterface::updateDerivsBlock
829 // Purpose : calls the time int. method to update the corrector
830 // derivatives, but only does it a subset of the solution
831 // and state vectors.
832 // Special Notes :
833 // Scope : public
834 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
835 // Creation Date : 01/10/01
836 //-----------------------------------------------------------------------------
837 //inline
838 bool AnalysisInterface::updateDerivsBlock(const std::list<index_pair> & solGIDList,
839  const std::list<index_pair> & staGIDList)
840 {
841  return anaManagerPtr_->updateDerivsBlock(solGIDList, staGIDList);
842 }
843 
844 //-----------------------------------------------------------------------------
845 // Function : AnalysisInterface::restartDataSize
846 // Purpose : Gets the size of the restart data (bytes?).
847 // Special Notes :
848 // Scope : public
849 // Creator : Rob Hoekstra, SNL, Parallel Computational Sciences
850 // Creation Date : 07/31/01
851 //-----------------------------------------------------------------------------
853 {
854  return anaManagerPtr_->restartDataSize( pack );
855 }
856 
857 //-----------------------------------------------------------------------------
858 // Function : AnalysisInterface::dumpRestartData
859 // Purpose : Dumps the restart data to a file.
860 // Special Notes :
861 // Scope : public
862 // Creator : Rob Hoekstra, SNL, Parallel Computational Sciences
863 // Creation Date : 07/31/01
864 //-----------------------------------------------------------------------------
865 bool AnalysisInterface::dumpRestartData(char * buf, int bsize, int & pos,
866  N_PDS_Comm * comm, bool pack )
867 {
868  return anaManagerPtr_->dumpRestartData(buf, bsize, pos, comm, pack);
869 }
870 
871 //-----------------------------------------------------------------------------
872 // Function : AnalysisInterface::restoreRestartData
873 // Purpose : Restores the restart data from a file.
874 // Special Notes :
875 // Scope : public
876 // Creator : Rob Hoekstra, SNL, Parallel Computational Sciences
877 // Creation Date : 07/31/01
878 //-----------------------------------------------------------------------------
879 bool AnalysisInterface::restoreRestartData(char * buf, int bsize, int & pos,
880  N_PDS_Comm * comm, bool pack )
881 {
882  return anaManagerPtr_->restoreRestartData(buf, bsize, pos, comm, pack);
883 }
884 
885 //-----------------------------------------------------------------------------
886 // Function : AnalysisInterface::getSolnVarData
887 // Purpose : Gets the solution variable data.
888 // Special Notes :
889 // Scope : public
890 // Creator : Rob Hoekstra, SNL, Parallel Computational Sciences
891 // Creation Date : 07/31/01
892 //-----------------------------------------------------------------------------
893 bool AnalysisInterface::getSolnVarData(const int & gid, std::vector<double> & varData)
894 {
895  return anaManagerPtr_->getSolnVarData(gid, varData);
896 }
897 
898 //-----------------------------------------------------------------------------
899 // Function : AnalysisInterface::getStateVarData
900 // Purpose : Gets the state variable data.
901 // Special Notes :
902 // Scope : public
903 // Creator : Rob Hoekstra, SNL, Parallel Computational Sciences
904 // Creation Date : 07/31/01
905 //-----------------------------------------------------------------------------
906 bool AnalysisInterface::getStateVarData(const int & gid, std::vector<double> & varData)
907 {
908  return anaManagerPtr_->getStateVarData(gid, varData);
909 }
910 
911 //-----------------------------------------------------------------------------
912 // Function : AnalysisInterface::getStoreVarData
913 // Purpose : Gets the store variable data.
914 // Special Notes :
915 // Scope : public
916 // Creator : Eric Keiter
917 // Creation Date :
918 //-----------------------------------------------------------------------------
919 bool AnalysisInterface::getStoreVarData(const int & gid, std::vector<double> & varData)
920 {
921  return anaManagerPtr_->getStoreVarData(gid, varData);
922 }
923 
924 //-----------------------------------------------------------------------------
925 // Function : AnalysisInterface::setSolnVarData
926 // Purpose : Sets the solution variable data.
927 // Special Notes :
928 // Scope : public
929 // Creator : Rob Hoekstra, SNL, Parallel Computational Sciences
930 // Creation Date : 07/31/01
931 //-----------------------------------------------------------------------------
933  const std::vector<double> & varData)
934 {
935  return anaManagerPtr_->setSolnVarData(gid, varData);
936 }
937 
938 //-----------------------------------------------------------------------------
939 // Function : AnalysisInterface::setStateVarData
940 // Purpose : Sets the state variable data.
941 // Special Notes :
942 // Scope : public
943 // Creator : Rob Hoekstra, SNL, Parallel Computational Sciences
944 // Creation Date : 07/31/01
945 //-----------------------------------------------------------------------------
947  const std::vector<double> & varData)
948 {
949  return anaManagerPtr_->setStateVarData(gid, varData);
950 }
951 
952 
953 //-----------------------------------------------------------------------------
954 // Function : AnalysisInterface::setStoreVarData
955 // Purpose : Sets the state variable data.
956 // Special Notes :
957 // Scope : public
958 // Creator : Eric Keiter, SNL
959 // Creation Date :
960 //-----------------------------------------------------------------------------
962  const std::vector<double> & varData)
963 {
964  return anaManagerPtr_->setStoreVarData(gid, varData);
965 }
966 
967 //-----------------------------------------------------------------------------
968 // Function : AnalysisInterface::setBeginningIntegrationFlag
969 // Purpose : set beginning integration flag to true
970 // Special Notes :
971 // Scope : public
972 // Creator : Richard Schiek, Electrical and Microsytems Modeling
973 // Creation Date : 03/5/2010
974 //-----------------------------------------------------------------------------
976 {
977  anaManagerPtr_->setBeginningIntegrationFlag (bif);
978 }
979 
980 //-----------------------------------------------------------------------------
981 // Function : AnalysisInterface::registerParallelServices
982 // Purpose :
983 // Special Notes :
984 // Scope : public
985 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
986 // Creation Date : 08/30/01
987 //-----------------------------------------------------------------------------
989 {
990  return anaManagerPtr_->registerParallelServices(pds);
991 
992 }
993 
994 //-----------------------------------------------------------------------------
995 // Function : AnalysisInterface::outputSummary
996 // Purpose : Outputs summary information for time-integration function.
997 // Special Notes :
998 // Scope : public
999 // Creator : Scott A. Hutchinson, SNL, Computational Sciences
1000 // Creation Date : 07/30/02
1001 //-----------------------------------------------------------------------------
1003 {
1004  bool bsuccess = true;
1005 
1006  if (!Teuchos::is_null(anaManagerPtr_))
1007  {
1008  bsuccess = anaManagerPtr_->printLoopInfo(0,0);
1009  }
1010 
1011  return bsuccess;
1012 
1013 }
1014 
1015 
1016 //-----------------------------------------------------------------------------
1017 // Function : AnalysisInterface::setNextSolVectorPtr
1018 // Purpose :
1019 // Special Notes :
1020 // Scope : public
1021 // Creator : Eric R. Keiter, SNL, Computational Sciences
1022 // Creation Date : 04/22/03
1023 //-----------------------------------------------------------------------------
1024 bool AnalysisInterface::setNextSolVectorPtr (N_LAS_Vector * solVecPtr)
1025 {
1026  return anaManagerPtr_->setNextSolVectorPtr (solVecPtr);
1027 }
1028 
1029 //-----------------------------------------------------------------------------
1030 // Function : AnalysisInterface::loadRHS
1031 // Purpose : manages the RHS load.
1032 // Special Notes :
1033 // Scope : public
1034 // Creator : Eric R. Keiter, SNL, Computational Sciences
1035 // Creation Date : 03/03/04
1036 //-----------------------------------------------------------------------------
1038 {
1039  return anaManagerPtr_->assemblerPtr->loadRHS();
1040 }
1041 
1042 //-----------------------------------------------------------------------------
1043 // Function : AnalysisInterface::loadJacobian
1044 // Purpose : Manages the jacobian load.
1045 // Special Notes :
1046 // Scope : public
1047 // Creator : Eric R. Keiter, SNL, Computational Sciences
1048 // Creation Date : 03/03/04
1049 //-----------------------------------------------------------------------------
1051 {
1052  return anaManagerPtr_->assemblerPtr->loadJacobian();
1053 }
1054 
1055 //-----------------------------------------------------------------------------
1056 // Function : AnalysisInterface::applyJacobian
1057 // Purpose : Manages the jacobian load.
1058 // Special Notes :
1059 // Scope : public
1060 // Creator : Eric R. Keiter, SNL, Computational Sciences
1061 // Creation Date : 03/03/04
1062 //-----------------------------------------------------------------------------
1063 bool AnalysisInterface::applyJacobian (const N_LAS_Vector& input, N_LAS_Vector& result)
1064 {
1065  return anaManagerPtr_->assemblerPtr->applyJacobian(input,result);
1066 }
1067 
1068 //-----------------------------------------------------------------------------
1069 // Function : AnalysisInterface::getResidualTime
1070 // Purpose : This should give the time for the most recent Residual load.
1071 // Special Notes :
1072 // Scope : public
1073 // Creator : Eric R. Keiter, SNL, Computational Sciences
1074 // Creation Date : 03/03/04
1075 //-----------------------------------------------------------------------------
1077 {
1078  return anaManagerPtr_->assemblerPtr->residualTime_;
1079 }
1080 
1081 //-----------------------------------------------------------------------------
1082 // Function : AnalysisInterface::getJacobianTime
1083 // Purpose : This should give the time for the most recent Jacobian load.
1084 // Special Notes :
1085 // Scope : public
1086 // Creator : Eric R. Keiter, SNL, Computational Sciences
1087 // Creation Date : 03/03/04
1088 //-----------------------------------------------------------------------------
1090 {
1091  return anaManagerPtr_->assemblerPtr->jacobianTime_;
1092 }
1093 
1094 //-----------------------------------------------------------------------------
1095 // Function : AnalysisInterface::getTIAParams
1096 // Purpose :
1097 // Special Notes :
1098 // Scope : public
1099 // Creator : Eric R. Keiter, SNL, Computational Sciences
1100 // Creation Date : 11/05/04
1101 //-----------------------------------------------------------------------------
1103 {
1104  return anaManagerPtr_->tiaParams;
1105 }
1106 
1107 //-----------------------------------------------------------------------------
1108 // Function : AnalysisInterface::simulationComplete
1109 // Purpose : return boolean signifying whether simulation is complete
1110 // Special Notes :
1111 // Scope : public
1112 // Creator : Tom Russo, SNL, Component Information and Models
1113 // Creation Date : 05/06/2004
1114 //-----------------------------------------------------------------------------
1116 {
1117  return anaManagerPtr_->simulationComplete();
1118 }
1119 
1120 //-----------------------------------------------------------------------------
1121 // Function : AnalysisInterface::completeOPStartStep
1122 // Purpose :
1123 // Special Notes :
1124 // Scope : public
1125 // Creator : Dave Shirley, PSSI
1126 // Creation Date : 06/28/2006
1127 //-----------------------------------------------------------------------------
1129 {
1130  return anaManagerPtr_->completeOPStartStep();
1131 }
1132 
1133 //-----------------------------------------------------------------------------
1134 // Function : AnalysisInterface::completeHomotopyStep
1135 // Purpose :
1136 // Special Notes :
1137 // Scope : public
1138 // Creator : Eric Keiter, SNL, 9233
1139 // Creation Date : 03/20/2006
1140 //-----------------------------------------------------------------------------
1142  ( const std::vector<std::string> & paramNames,
1143  const std::vector<double> & paramVals,
1144  N_LAS_Vector * solnVecPtr )
1145 {
1146  return anaManagerPtr_->completeHomotopyStep(paramNames, paramVals,solnVecPtr);
1147 }
1148 
1149 //-----------------------------------------------------------------------------
1150 // Function : AnalysisInterface::failHomotopyStep
1151 // Purpose :
1152 // Special Notes :
1153 // Scope : public
1154 // Creator : Eric Keiter, SNL, 9233
1155 // Creation Date : 03/30/2006
1156 //-----------------------------------------------------------------------------
1158 {
1159  return anaManagerPtr_->failHomotopyStep ();
1160 }
1161 
1162 //-----------------------------------------------------------------------------
1163 // Function : AnalysisInterface::startTimeStep
1164 // Purpose :
1165 // Special Notes :
1166 // Scope : public
1167 // Creator : Eric Keiter, SNL
1168 // Creation Date : 03/20/2006
1169 //-----------------------------------------------------------------------------
1171 {
1172  return anaManagerPtr_->startTimeStep (tiInfo);
1173 }
1174 
1175 //-----------------------------------------------------------------------------
1176 // Function : AnalysisInterface::runStep
1177 // Purpose :
1178 // Special Notes :
1179 // Scope : public
1180 // Creator : Eric Keiter, SNL
1181 // Creation Date : 03/06/2006
1182 //-----------------------------------------------------------------------------
1184  (const N_TIA_TimeIntInfo & tiInfo, N_TIA_TwoLevelError & tlError)
1185 {
1186  return anaManagerPtr_->runStep (tiInfo, tlError);
1187 }
1188 
1189 //-----------------------------------------------------------------------------
1190 // Function : AnalysisInterface::startupSolvers
1191 // Purpose :
1192 // Special Notes :
1193 // Scope : public
1194 // Creator : Eric Keiter, SNL
1195 // Creation Date : 03/06/2006
1196 //-----------------------------------------------------------------------------
1198 {
1199  return anaManagerPtr_->startupSolvers ();
1200 }
1201 
1202 //-----------------------------------------------------------------------------
1203 // Function : AnalysisInterface::finishSolvers
1204 // Purpose :
1205 // Special Notes :
1206 // Scope : public
1207 // Creator : Eric Keiter, SNL
1208 // Creation Date : 03/06/2006
1209 //-----------------------------------------------------------------------------
1211 {
1212  return anaManagerPtr_->finishSolvers ();
1213 }
1214 
1215 //-----------------------------------------------------------------------------
1216 // Function : AnalysisInterface::provisionalStep
1217 // Purpose :
1218 // Special Notes :
1219 // Scope : public
1220 // Creator : Eric Keiter, SNL
1221 // Creation Date : 03/04/09
1222 //-----------------------------------------------------------------------------
1223 bool AnalysisInterface::provisionalStep (double maxTimeStep,
1224  double &currTimeStep)
1225 {
1226  return anaManagerPtr_->provisionalStep (maxTimeStep, currTimeStep);
1227 }
1228 
1229 //-----------------------------------------------------------------------------
1230 // Function : AnalysisInterface::acceptProvisionalStep
1231 // Purpose :
1232 // Special Notes :
1233 // Scope : public
1234 // Creator : Eric Keiter, SNL
1235 // Creation Date : 04/10/09
1236 //-----------------------------------------------------------------------------
1238 {
1239  anaManagerPtr_->acceptProvisionalStep ();
1240 }
1241 
1242 //-----------------------------------------------------------------------------
1243 // Function : AnalysisInterface::rejectProvisionalStep
1244 // Purpose :
1245 // Special Notes :
1246 // Scope : public
1247 // Creator : Eric Keiter, SNL
1248 // Creation Date : 04/10/09
1249 //-----------------------------------------------------------------------------
1251 {
1252  anaManagerPtr_->rejectProvisionalStep ();
1253 }
1254 
1255 #ifdef Xyce_Dakota
1256 
1257 //-----------------------------------------------------------------------------
1258 // Function : AnalysisInterface::getDakotaRunFlag
1259 // Purpose :
1260 // Special Notes :
1261 // Scope : public
1262 // Creator : Richard Schiek, SNL
1263 // Creation Date :
1264 //-----------------------------------------------------------------------------
1265 bool AnalysisInterface::getDakotaRunFlag()
1266 {
1267  return anaManagerPtr_->getDakotaRunFlag();
1268 }
1269 
1270 
1271 //-----------------------------------------------------------------------------
1272 // Function : AnalysisInterface::setDakotaRunFlag
1273 // Purpose :
1274 // Special Notes :
1275 // Scope : public
1276 // Creator : Richard Schiek, SNL
1277 // Creation Date :
1278 //-----------------------------------------------------------------------------
1279 void AnalysisInterface::setDakotaRunFlag( bool flag )
1280 {
1281  anaManagerPtr_->setDakotaRunFlag( flag );
1282 }
1283 
1284 
1285 //-----------------------------------------------------------------------------
1286 // Function : AnalysisInterface::getDakotaIteration
1287 // Purpose :
1288 // Special Notes :
1289 // Scope : public
1290 // Creator : Richard Schiek, SNL
1291 // Creation Date :
1292 //-----------------------------------------------------------------------------
1293 int AnalysisInterface::getDakotaIteration()
1294 {
1295  return anaManagerPtr_->getDakotaIteration();
1296 }
1297 
1298 
1299 //-----------------------------------------------------------------------------
1300 // Function : AnalysisInterface::setDakotaIteration
1301 // Purpose :
1302 // Special Notes :
1303 // Scope : public
1304 // Creator : Richard Schiek, SNL
1305 // Creation Date :
1306 //-----------------------------------------------------------------------------
1307 void AnalysisInterface::setDakotaIteration( int iterNumber )
1308 {
1309  anaManagerPtr_->setDakotaIteration( iterNumber );
1310 }
1311 
1312 #endif
1313 
1314 //-----------------------------------------------------------------------------
1315 // Function : AnalysisInterface::condutanceTest
1316 // Purpose :
1317 // Special Notes :
1318 // Scope : public
1319 // Creator : Eric Keiter, SNL
1320 // Creation Date :
1321 //-----------------------------------------------------------------------------
1323 {
1324  anaManagerPtr_->conductanceTest ();
1325 }
1326 
1327 //-----------------------------------------------------------------------------
1328 // Function : AnalysisInterface::homotopyStepSuccess
1329 // Purpose :
1330 // Special Notes :
1331 // Scope : public
1332 // Creator : Eric Keiter, SNL
1333 // Creation Date : 03/20/06
1334 //-----------------------------------------------------------------------------
1336  ( const std::vector<std::string> & paramNames,
1337  const std::vector<double> & paramVals)
1338 {
1339  anaManagerPtr_->homotopyStepSuccess ( paramNames, paramVals);
1340 }
1341 
1342 //-----------------------------------------------------------------------------
1343 // Function : AnalysisInterface::homotopyStepFailure
1344 // Purpose :
1345 // Special Notes :
1346 // Scope : public
1347 // Creator : Eric Keiter, SNL
1348 // Creation Date : 03/30/06
1349 //-----------------------------------------------------------------------------
1351 {
1352  anaManagerPtr_->homotopyStepFailure ();
1353 }
1354 
1355 //-----------------------------------------------------------------------------
1356 // Function : AnalysisInterface::stepSuccess
1357 // Purpose :
1358 // Special Notes :
1359 // Scope : public
1360 // Creator : Eric Keiter, SNL
1361 // Creation Date : 03/12/06
1362 //-----------------------------------------------------------------------------
1364 {
1365  anaManagerPtr_->stepSuccess (analysis);
1366 }
1367 
1368 //-----------------------------------------------------------------------------
1369 // Function : AnalysisInterface::stepFailure
1370 // Purpose :
1371 // Special Notes :
1372 // Scope : public
1373 // Creator : Eric Keiter, SNL
1374 // Creation Date : 03/12/06
1375 //-----------------------------------------------------------------------------
1377 {
1378  anaManagerPtr_->stepFailure (analysis);
1379 }
1380 
1381 //-----------------------------------------------------------------------------
1382 // Function : AnalysisInterface::getInitialQnorm
1383 // Purpose :
1384 // Special Notes :
1385 // Scope : public
1386 // Creator : Eric Keiter, SNL
1387 // Creation Date : 03/12/06
1388 //-----------------------------------------------------------------------------
1390 {
1391  return anaManagerPtr_->getInitialQnorm (tle);
1392 }
1393 
1394 //-----------------------------------------------------------------------------
1395 // Function : AnalysisInterface::getBreakPoints
1396 // Purpose :
1397 // Special Notes :
1398 // Scope : public
1399 // Creator : Eric Keiter, SNL
1400 // Creation Date : 03/12/06
1401 //-----------------------------------------------------------------------------
1402 bool AnalysisInterface::getBreakPoints (std::vector<N_UTL_BreakPoint> &breakPointTimes)
1403 {
1404  return anaManagerPtr_->getBreakPoints (breakPointTimes);
1405 }
1406 
1407 //-----------------------------------------------------------------------------
1408 // Function : AnalysisInterface::getTimeIntInfo
1409 // Purpose :
1410 // Special Notes :
1411 // Scope : public
1412 // Creator : Eric Keiter, SNL
1413 // Creation Date : 02/11/07
1414 //-----------------------------------------------------------------------------
1416 {
1417  anaManagerPtr_->getTimeIntInfo (tiInfo);
1418 }
1419 
1420 //-----------------------------------------------------------------------------
1421 // Function : AnalysisInterface::silenceProgress
1422 // Purpose : shut up "percent complete" noise
1423 // Special Notes :
1424 // Scope : public
1425 // Creator : Tom Russo
1426 // Creation Date : 11 Feb 2009
1427 //-----------------------------------------------------------------------------
1429 {
1430  anaManagerPtr_->silenceProgress();
1431 }
1432 
1433 //-----------------------------------------------------------------------------
1434 // Function : AnalysisInterface::enableProgress
1435 // Purpose : enable "percent complete" noise
1436 // Special Notes :
1437 // Scope : public
1438 // Creator : Tom Russo
1439 // Creation Date : 11 Feb 2009
1440 //-----------------------------------------------------------------------------
1442 {
1443  anaManagerPtr_->enableProgress();
1444 }
1445 
1446 //-----------------------------------------------------------------------------
1447 // Function : AnalysisInterface::initializeTransientModel
1448 // Purpose : ModelEvaluator Interface
1449 // Special Notes :
1450 // Scope : public
1451 // Creator : Coffey, Schiek, Mei
1452 // Creation Date : 05/29/09
1453 //-----------------------------------------------------------------------------
1455 {
1456  anaManagerPtr_->initializeTransientModel();
1457 }
1458 //-----------------------------------------------------------------------------
1459 // Function : AnalysisInterface::evalModel
1460 // Purpose : ModelEvaluator Interface
1461 // Special Notes :
1462 // Scope : public
1463 // Creator : Coffey, Schiek, Mei
1464 // Creation Date : 05/27/09
1465 //-----------------------------------------------------------------------------
1467  double t,
1468  N_LAS_Vector * SolVectorPtr,
1469  N_LAS_Vector * CurrSolVectorPtr,
1470  N_LAS_Vector * LastSolVectorPtr,
1471  N_LAS_Vector * StaVectorPtr,
1472  N_LAS_Vector * CurrStaVectorPtr,
1473  N_LAS_Vector * LastStaVectorPtr,
1474  N_LAS_Vector * StaDerivVectorPtr,
1475  N_LAS_Vector * StoVectorPtr,
1476  N_LAS_Vector * CurrStoVectorPtr,
1477  N_LAS_Vector * LastStoVectorPtr,
1478  N_LAS_Vector * stoLeadCurrQCompVectorPtr,
1479  N_LAS_Vector * QVectorPtr,
1480  N_LAS_Vector * FVectorPtr,
1481  N_LAS_Vector * dFdxdVpVectorPtr,
1482  N_LAS_Vector * dQdxdVpVectorPtr,
1483  N_LAS_Matrix * dQdxMatrixPtr,
1484  N_LAS_Matrix * dFdxMatrixPtr
1485  )
1486 {
1487  return (
1488  anaManagerPtr_->evalTransientModel(
1489  t,
1490  SolVectorPtr,
1491  CurrSolVectorPtr,
1492  LastSolVectorPtr,
1493  StaVectorPtr,
1494  CurrStaVectorPtr,
1495  LastStaVectorPtr,
1496  StaDerivVectorPtr,
1497  StoVectorPtr,
1498  CurrStoVectorPtr,
1499  LastStoVectorPtr,
1500  stoLeadCurrQCompVectorPtr,
1501  QVectorPtr,
1502  FVectorPtr,
1503  dFdxdVpVectorPtr,
1504  dQdxdVpVectorPtr,
1505  dQdxMatrixPtr,
1506  dFdxMatrixPtr
1507  )
1508  );
1509 }
1510 //-----------------------------------------------------------------------------
1511 // Function : AnalysisInterface::evalTransientModelState
1512 // Purpose : ModelEvaluator Interface
1513 // Special Notes :
1514 // Scope : public
1515 // Creator : Coffey, Schiek, Mei
1516 // Creation Date : 05/29/09
1517 //-----------------------------------------------------------------------------
1519  double t,
1520  N_LAS_Vector * SolVectorPtr,
1521  N_LAS_Vector * StaVectorPtr,
1522  N_LAS_Vector * StoVectorPtr
1523  )
1524 {
1525  return (
1526  anaManagerPtr_->evalTransientModelState(
1527  t,
1528  SolVectorPtr,
1529  StaVectorPtr,
1530  StoVectorPtr
1531  )
1532  );
1533 }
1534 
1535 } // namespace Analysis
1536 } // namespace Xyce