From 291863259ae0e0a044b6bb2c4a67f11cde872c7b Mon Sep 17 00:00:00 2001 From: Shane Stafford Date: Wed, 20 Aug 2014 08:24:58 -0600 Subject: [PATCH] Allow time step to increase after shrinking. This addresses issue #3764. --- framework/include/timesteppers/ConstantDT.h | 5 +++- framework/src/timesteppers/ConstantDT.C | 22 ++++++++++++++---- .../failure/gold/constant_failure_out.e | Bin 29240 -> 39004 bytes 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/framework/include/timesteppers/ConstantDT.h b/framework/include/timesteppers/ConstantDT.h index 2f9c08f8be72..0f0a41e4e0ea 100644 --- a/framework/include/timesteppers/ConstantDT.h +++ b/framework/include/timesteppers/ConstantDT.h @@ -30,7 +30,10 @@ class ConstantDT : public TimeStepper protected: virtual Real computeInitialDT(); virtual Real computeDT(); -}; +private: + const Real _constant_dt; + const Real _growth_factor; +}; #endif /* CONSTANTDT_H */ diff --git a/framework/src/timesteppers/ConstantDT.C b/framework/src/timesteppers/ConstantDT.C index a5f85c2f3786..c456df289aea 100644 --- a/framework/src/timesteppers/ConstantDT.C +++ b/framework/src/timesteppers/ConstantDT.C @@ -16,26 +16,38 @@ #include "FEProblem.h" #include "Transient.h" +namespace +{ +const std::string dt_name = "dt"; +const std::string growth_factor_name = "growth_factor"; +} + template<> InputParameters validParams() { InputParameters params = validParams(); - params.addRequiredParam("dt", "Size of the time step"); + params.addRequiredParam( dt_name, "Size of the time step" ); + params.addRangeCheckedParam( growth_factor_name, 2, growth_factor_name + ">=1", + "Maximum ratio of new to previous timestep sizes following a step that required the time" + " step to be cut due to a failed solve." ); return params; } ConstantDT::ConstantDT(const std::string & name, InputParameters parameters) : - TimeStepper(name, parameters) -{} + TimeStepper( name, parameters ), + _constant_dt( getParam( dt_name ) ), + _growth_factor( getParam( growth_factor_name ) ) +{ +} Real ConstantDT::computeInitialDT() { - return getParam("dt"); + return _constant_dt; } Real ConstantDT::computeDT() { - return getCurrentDT(); + return std::min( _constant_dt, _growth_factor * getCurrentDT() ); } diff --git a/test/tests/time_steppers/failure/gold/constant_failure_out.e b/test/tests/time_steppers/failure/gold/constant_failure_out.e index 8dd2571cda6dfc4abe859008dcaee6b8428e16ac..e997d9536adc9802deca0236dd871eacaf4ab333 100644 GIT binary patch delta 6236 zcmd6rdvp}l9mmn7IIR;a@~QmgoI^X~-86Sje|6g8ftguI3)3HnF_G z`F%B%`f^setIXBaFq~5X@6XRku#{Dj&y}zwFLzE|sFO0ADASS}Yjus;Nx|NUNWMx}&z{3TDoUao!3o{j& z%CTI90c#rUu+CMC4_Fm*5Svs;t4ded=wMUThshMRljXPh1<*(ym|)y+4c3_!rLa}o zoJ-B7Dia(i%qOFdM&4iIj(^=oxUD)bj%kFU>OlOx;uXNS?IZE!z_ZJa#~V!oDFVvY z7jL5gMaFGWKU#|b`u=`C!$ zTdNV^fT1akqMTi`GSzYYL(vU_xO1@uyP)pc9;^Kejizu_{Pi$PGKk1)z63d zO}%iXNjYI%a|cwkH79g&E@D4l5uasED-;oDe&9&byEz}@f!@Xj@ecU4*$PW>?C9Fo zG~y1+ds!F91X*C3mg|Hr|IK9X91?b%4$LIpi3#!1T_ihxz8hMb>tMPypHx-_ENxv6 zhPM5BirVGkCCATN%EYBX!roF=E(gbwJTyqfJ-Re6X{8h}OHydOj`4Wtoea-0+dO0o z@bg{)hAlR-j+sD!^|@fEB?Cq+=9$p}np9Yj;e(X=wy2I8>&Urv#NTAgd=&O-3;d;8_e+L`l-ZR8sWr(n=Oj;^a(S$YKm3@w>D3; z2oA5!g;NeQaUKcE;xSx5FZRSs%84v!4;|qB0hSMPtN`~nS~Fq>0lyF=&z!74R*nD_ zYiqJ%&jcsqAxkV8jR3u?mQDmBIC+-!iGgIH8$!1bWW6-!bCcR(#43dgja8&F0*uRr zyNt#H_t#XU5?|bO7t6R<9*z{uiLVTJ#vz3_i=qT4$NGYtn{!HQ5KdWY2~A*c3b8)t z*Xt~W?02C6?eTX?o9~2d7~%5zYbc=6Wr3O zSL@p(N{Jhc+VVTBghLid38$|^CB&T86%>4zMX%QqryHz?^^(#f!ZA_(&#t#lR6okt z`sNkiNV6u4IUmtJ@fiDm$XI4fs>rW4g|9?%zrDug#ITbq8mW}nf+s38N30^H%0b2^ z6MW@R3HMZB+ie4TD^PHwx6npfwbg^iRMy)^UVtL#~--s z)EfICu^(PWes@ck{rJI=LmT?WkJ>NYo5=4S>$ivH56$**`?Y5GqcHUuw1@H7PHBX}!<_b9<5 z;=fL$OU}eED-c|b;7iD@L#`gV8ssjQx#7oOQG(wrSAzGAVv5(v;G@5j!ToPzirtvv zIvM=I6X;xpv*LZ?-7Gd+(AR zzO0eCuY4tQ_gs^?B||cI?4-yI^LsDR2!2!r{*4NJn+zWNQU)JMM(_y)KZ4+K+2KnE zklUx?J`u+alQP>Ury}!mGJ-eC;76ulCgx%$3K0ATf)B;OqpwR>3_N)2dpU2tyVNfA zqkoN!zxL2w{ex%UvP=EBE%xE?P~itJ4qmhmi~Wl?+5d9w>DzCZRxI~vpW4sXpQ(EO zqkQadwEvBMy0SEL4ExvYe}DGO0~<14#{N(C57MW-)R(;ldy{?qr+1WQH~j?r?Jy_YlN0i{R8)fj|Nd#|`x&L?)xi=wqJ93XAH(aX(k4{s8A4BjEg53y?Ah;L7 z-3UI9;Bpl=L&d#a=7tAfLa-IVcOzIp@G1m9h2R1u_&rd9&!u6CEy!Jh+}+4+L~fJB z4fkaoLU6tcEdFCyx^T7XF%uuj;M9L2xD3HX2+lxDIov= delta 3391 zcmZwH3s4m29RP4{c^x2?6GR>&cYvfr;5hDhp2})?C@;MOCE$@RC+xx1d*$|c*c#4^ ztutxO2>D}b8!AFft99Z)4tzA~;EXXoV#>7E(1hy67)ueSg&4F=rgV4z%av`rGu;2% z-S7K-|L?!w$K()k?tx_JV+rAR9mXYJN!Gv>LP;3v;0ci_>4p@4Qql{}{+W^^(95<@ zz-_jD4gvy5$u%erNF$^Z;0SnLat!(cG9|6>5&L@(zGZ(SAU#mS4(<-zO2{U_8>l2= zVjv$xxvtwCv_vCsVc{G^PznFdEt5)mhdG4^HL7MS6J17d>HLgSA3`pARX zK4ahrW?xQ09~ph12#p{91Lyqaz|GiJL@D_?SD6{xbo$S7ebA_yuJ@q|VR1G#wHr$~sb zGVYP93*;(|R+XjA&X%iHS!{O&JYMont<5RWY8Kxq*@+K(yh$w*2yIcpwG=(r%ah>X zS{;ACELFkB)2Sg~N{tcP{4>u&>MQ=9TWNnH;8t299NVUXuGVd!D}5XCGppgV%&)+a z73@jP(i8IMG8h}pP*xLVchF9w%kGqC>}DL4)owGhH_yS8W(|yLdfB-Za4J&;A8uGH zH5r?XswQpXK*$jvyv86!>NKfXscC(XJje!3i5Ib=;t-6e7L+R z8M@a6z<@S^AHlWfmb8o3Ek2*+GWMJ=G;sw`!$(DleC)O+!unz^|$)oF3?ta@iK zWwJZ1Mi&?}A_)frStZJdR&#SRZKK+aPP1{Bg=XL%rcLm;MxSAJao?5Quav`LcTtSX z=yXvovz5l(yFo7cJhOQzkyc|TkC_bIo9OLz!(RJG`1##NJ~;yxXNvutOKY*ez{*Hmzoc-C%p5Cr!%@ z3K3`SXi9+Yyd3CdR)ZrWfGfJpVP{+pr@e`07`u~dV%oX6SBjsu*xI;df>FCZO8iDx z$n4e)K@O+c=AwYK#zLG{6U48OVv7|6x*h5$rq$j-F|@1AL0RlA6m4``_JFK@16-}u zf5$~P@nzg)wi(&vC5=VgZkBMP<3P%8(^W4X<4@YZIv9SZ40Pi9=Q{P!yJyfd@dJ?X z8=HD%rG)LF_B`zx;TnsFbdWvwL;v$PCR+jCWzsjoLp(42xG~KA2MvGWzbijKawPs( z#|K6CF&6IhJ-<@_mqY#SN|KM(6!Ld#4kt{lIDm0w1o_9!0T*X=7co{{B0n?DJ4Q~H zVmzHgdcPg{XKZaA#u^*>z)jR22n%szBlHnDm7Q|w?okrsFKKdS`S6o(6#IpkO#U5H z@kKt-tWt4;mWP;-v{Ojv5GHWqkudRfVZMH09``U#Ag>g|>S-}-n@2eM*9g~KL3nr+ z;T=~IUUo-Vh(vJLirwr9vFqNu65+%b5jIXDeC9a9J6{msafJK#BAoa$Fdoba^5_Er_ zjBfmo#BTaY&UJG?xT!3S2uB?jN^C}WNG8BE!qRAje^G((>feZAjh8dI3td+Sx^cJB zHO!;?UKi`Sxm|f5;jrBZ9}O2OF)D_2`*_s{cU2;sU5;?WafC0JY59wA)Vg>dut5x#s4VM8UtQRfjJe2Q@LWgmRU#9uyl^ltWhH`er$ ze2m-cd+xp(dTM{X5lB87qRH`#A5W(bc4Bmoa`N$OC3TtK#i*_z zKY!nEXrM9*W4Vm{GUYf?;5{tFCUWZZ&4$omCB~q4$r;_kCky9Z7GkX1m+|8H<}-{~ z;meRuY^OgabhI23`SK7Zpv=XI%jSg%LxhRm#0k#s_xb3ii`{zn1!2V*!b(pgtkDW9 z`U2t46#~3ZfYoAnxkU^cd(b^@M)z+$=;q9zTXh*-xA%!qq8fzHToS|a-D0?5AHpYZ zAUvIlu=a-tSCj||FGn{p8r{*SVmBy+ce(S2-@dLD;el|39|a?v)hASfLU{59!u~fA z9%&H65kcaF4Y!0!96-hklCi`QI;r qSvTj7*zG7o_sjyi-zdpRC3l=Q-$S_O&j?RHL^%9=2*3aOBK&Woc2)!c