package Ġno . nt nu . ih b . v ico Ċ Ċ import Ġno . nt nu . ih b . f mi 4 j . Slave Instance Ċ import Ġno . nt nu . ih b . f mi 4 j . model description . Co Simulation Model Description Ċ import Ġno . nt nu . ih b . f mi 4 j . model description . Value Reference Ċ import Ġno . nt nu . ih b . f mi 4 j . model description . variables . Ca us ality Ċ import Ġno . nt nu . ih b . v ico . core .* Ċ import Ġno . nt nu . ih b . v ico . model . Model Resolver Ċ import Ġno . nt nu . ih b . v ico . model . Slave Provider Ċ import Ġno . nt nu . ih b . v ico . structure . Parameter Ċ import Ġno . nt nu . ih b . v ico . structure . ParameterSet Ċ import Ġno . nt nu . ih b . v ico . util . Observable Set Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ Ċ private Ġtype alias ĠCache < E > Ġ= ĠHashMap < Value Reference , ĠE > Ċ Ċ open Ġclass ĠSl ave Component Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġslave Provider : ĠSl ave Provider , ĊĠĠĠ Ġval Ġinstance Name : ĠString , ĊĠĠĠ Ġval Ġstep Size Hint : ĠDouble ? Ġ= Ġnull Ċ ) Ġ: ĠAbstract Component () Ġ{ ĊĊĠĠĠ Ġvar Ġstep Count Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġinternal Ġset ĊĊĠĠĠ Ġval Ġmodel Description : ĠCo Simulation Model Description ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġslave Provider . model Description ĊĊĠĠĠ Ġoverride Ġval Ġcomponent Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" slave Component " ĊĊĠĠĠ Ġval Ġvariables Marked For Reading : ĠObservable Set < String > Ġ= ĠObservable Set ( mutable Set Of ()) ĊĊĠĠĠ Ġinternal Ġval Ġinteger Set Cache Ġby Ġlazy Ġ{ ĠCache < Int >() Ġ} ĊĠĠĠ Ġinternal Ġval Ġreal Set Cache Ġby Ġlazy Ġ{ ĠCache < Double >() Ġ} ĊĠĠĠ Ġinternal Ġval Ġboolean Set Cache Ġby Ġlazy Ġ{ ĠCache < Boolean >() Ġ} ĊĠĠĠ Ġinternal Ġval Ġstring Set Cache Ġby Ġlazy Ġ{ ĠCache < String >() Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġinteger Get Cache Ġby Ġlazy Ġ{ ĠCache < Int >() Ġ} ĊĠĠĠ Ġinternal Ġval Ġreal Get Cache Ġby Ġlazy Ġ{ ĠCache < Double >() Ġ} ĊĠĠĠ Ġinternal Ġval Ġboolean Get Cache Ġby Ġlazy Ġ{ ĠCache < Boolean >() Ġ} ĊĠĠĠ Ġinternal Ġval Ġstring Get Cache Ġby Ġlazy Ġ{ ĠCache < String >() Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġparameter Sets : ĠMutable Map < String , ĠParameter Set > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġf mu Path : ĠString , ĊĠĠĠĠĠĠĠ Ġinstance Name : ĠString , ĊĠĠĠĠĠĠĠ Ġstep Size Hint : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ: Ġthis ( File ( f mu Path ), Ġinstance Name , Ġstep Size Hint ) ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġf mu Path : ĠFile , ĊĠĠĠĠĠĠĠ Ġinstance Name : ĠString , ĊĠĠĠĠĠĠĠ Ġstep Size Hint : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ: Ġthis ( Model Resolver . resolve ( f mu Path ), Ġinstance Name , Ġstep Size Hint ) ĊĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Variables Ġ= Ġmodel Description . model Variables ĊĊĠĠĠĠĠĠĠ Ġval Ġints Ġ= Ġ( model Variables . inte gers Ġ+ Ġmodel Variables . enum er ations ). map Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt Scalar Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Marked For Reading . add ( v . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteger Get Cache [ v . value Reference ] Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetter Ġ= Ġ{ Ġinteger Set Cache [ v . value Reference ] Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġca us ality Ġ= Ġv . ca us ality . convert () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġre als Ġ= Ġmodel Variables . re als . map Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReal Scalar Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Marked For Reading . add ( v . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreal Get Cache [ v . value Reference ] Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetter Ġ= Ġ{ Ġreal Set Cache [ v . value Reference ] Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġca us ality Ġ= Ġv . ca us ality . convert () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġstrings Ġ= Ġmodel Variables . strings . map Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStr Scalar Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Marked For Reading . add ( v . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Get Cache [ v . value Reference ] Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetter Ġ= Ġ{ Ġstring Set Cache [ v . value Reference ] Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġca us ality Ġ= Ġv . ca us ality . convert () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġb ooleans Ġ= Ġmodel Variables . b ooleans . map Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBool Scalar Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariables Marked For Reading . add ( v . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Get Cache [ v . value Reference ] Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetter Ġ= Ġ{ Ġboolean Set Cache [ v . value Reference ] Ġ= Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġca us ality Ġ= Ġv . ca us ality . convert () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproperties . register Properties ( ints Ġ+ Ġre als Ġ+ Ġstrings Ġ+ Ġb ooleans ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinstantiate (): ĠSl ave Instance Ġ= Ġslave Provider . instantiate ( instance Name ) ĊĊĠĠĠ Ġfun Ġget ParameterSet ( name : ĠString ): ĠParameter Set ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparameter Sets [ name ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ParameterSet ( name : ĠString , Ġvar arg Ġparameters : ĠParameter ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ParameterSet ( name , Ġparameters . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ParameterSet ( name : ĠString , Ġparameters : ĠList < Parameter >) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ParameterSet ( ParameterSet ( name , Ġparameters )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ParameterSet ( parameter Set : ĠParameter Set ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( parameter Set . name Ġ! in Ġparameter Sets ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ParameterSet Ġnamed Ġ'${ parameter Set . name }' Ġhas Ġalready Ġbeen Ġadded Ġto Ġcomponent Ġ'${ instance Name }' !" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġparameter Sets [ parameter Set . name ] Ġ= Ġparameter Set ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġclear Caches () Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( real Get Cache , Ġinteger Get Cache , Ġboolean Get Cache , Ġstring Get Cache ). forEach Ġ{ Ġit . clear () Ġ} ĊĠĠĠĠĠĠĠ ĠlistOf ( real Set Cache , Ġinteger Set Cache , Ġboolean Set Cache , Ġstring Set Cache ). forEach Ġ{ Ġit . clear () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Slave Component ( instance Name =$ instance Name )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Slave Component :: class . java ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġfun ĠC aus ality ?. convert (): Ġno . nt nu . ih b . v ico . core . Ca us ality Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠC aus ality . INPUT Ġ-> Ġno . nt nu . ih b . v ico . core . Ca us ality . INPUT ĊĠĠĠĠĠĠĠ ĠC aus ality . OUTPUT Ġ-> Ġno . nt nu . ih b . v ico . core . Ca us ality . OUTPUT ĊĠĠĠĠĠĠĠ ĠC aus ality . LOCAL Ġ-> Ġno . nt nu . ih b . v ico . core . Ca us ality . LOCAL ĊĠĠĠĠĠĠĠ ĠC aus ality . PARAMETER Ġ-> Ġno . nt nu . ih b . v ico . core . Ca us ality . PARAMETER ĊĠĠĠĠĠĠĠ ĠC aus ality . CAL C UL ATED _ PARAMETER Ġ-> Ġno . nt nu . ih b . v ico . core . Ca us ality . CAL C UL ATED _ PARAMETER ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġno . nt nu . ih b . v ico . core . Ca us ality . UNKNOWN ĊĠĠĠ Ġ} Ċ } ĊĊ