"CellML" : { "modelFilename": variables.cellml_file, # input C++ source file or cellml XML file "initializeStatesToEquilibrium": False, # if the equilibrium values of the states should be computed before the simulation starts "initializeStatesToEquilibriumTimestepWidth": 1e-4, # if initializeStatesToEquilibrium is enable, the timestep width to use to solve the equilibrium equation # optimization parameters "optimizationType": "vc", # "vc", "simd", "openmp" type of generated optimizated source file "approximateExponentialFunction": True, # if optimizationType is "vc", whether the exponential function exp(x) should be approximate by (1+x/n)^n with n=1024 "compilerFlags": "-fPIC -O3 -march=native -shared ", # compiler flags used to compile the optimized model code "maximumNumberOfThreads": 0, # if optimizationType is "openmp", the maximum number of threads to use. Default value 0 means no restriction. # stimulation callbacks "setSpecificStatesFunction": set_specific_states, # callback function that sets states like Vm, activation can be implemented by using this method and directly setting Vm values, or by using setParameters/setSpecificParameters #"setSpecificStatesCallInterval": 2*int(1./variables.stimulation_frequency/variables.dt_0D), # set_specific_states should be called variables.stimulation_frequency times per ms, the factor 2 is needed because every Heun step includes two calls to rhs "setSpecificStatesCallInterval": 0, # 0 means disabled "setSpecificStatesCallFrequency": variables.get_specific_states_call_frequency(compartment_no), # set_specific_states should be called variables.stimulation_frequency times per ms "setSpecificStatesFrequencyJitter": variables.get_specific_states_frequency_jitter(compartment_no), # random value to add or substract to setSpecificStatesCallFrequency every stimulation, this is to add random jitter to the frequency "setSpecificStatesRepeatAfterFirstCall": 0.01, # [ms] simulation time span for which the setSpecificStates callback will be called after a call was triggered "setSpecificStatesCallEnableBegin": variables.get_specific_states_call_enable_begin(compartment_no),# [ms] first time when to call setSpecificStates "additionalArgument": compartment_no, "mappings": variables.mappings, # mappings between parameters and algebraics/constants and between outputConnectorSlots and states, algebraics or parameters, they are defined in helper.py "parametersInitialValues": variables.parameters_initial_values, #[0.0, 1.0], # initial values for the parameters: I_Stim, l_hs "meshName": "3Dmesh", # use the linear mesh, it was partitioned by the helper.py script which called opendihu/scripts/create_partitioned_meshes_for_settings.py "stimulationLogFilename": "out/stimulation.log", # output writer for states, algebraics and parameters "OutputWriter" : [ {"format": "Paraview", "outputInterval": (int)(1./variables.dt_0D*variables.output_timestep_multidomain), "filename": "out/" + variables.scenario_name + "/0D_all", "binary": True, "fixedFormat": False, "combineFiles": True, "fileNumbering": "incremental"} ] if variables.states_output else []
"initializeStatesToEquilibriumTimestepWidth": 1e-4, # if initializeStatesToEquilibrium is enable, the timestep width to use to solve the equilibrium equation # optimization parameters "optimizationType": "vc" if variables.use_vc else "simd", # "vc", "simd", "openmp" type of generated optimizated source file "approximateExponentialFunction": True, # if optimizationType is "vc", whether the exponential function exp(x) should be approximate by (1+x/n)^n with n=1024 "compilerFlags": "-fPIC -O3 -march=native -Wno-deprecated-declarations -shared ", # compiler flags used to compile the optimized model code "maximumNumberOfThreads": 0, # if optimizationType is "openmp", the maximum number of threads to use. Default value 0 means no restriction. # stimulation callbacks #"libraryFilename": "cellml_simd_lib.so", # compiled library #"setSpecificParametersFunction": set_specific_parameters, # callback function that sets parameters like stimulation current #"setSpecificParametersCallInterval": int(1./variables.stimulation_frequency/variables.dt_0D), # set_specific_parameters should be called every 0.1, 5e-5 * 1e3 = 5e-2 = 0.05 "setSpecificStatesFunction": set_specific_states, # callback function that sets states like Vm, activation can be implemented by using this method and directly setting Vm values, or by using setParameters/setSpecificParameters #"setSpecificStatesCallInterval": 2*int(1./variables.stimulation_frequency/variables.dt_0D), # set_specific_states should be called variables.stimulation_frequency times per ms, the factor 2 is needed because every Heun step includes two calls to rhs "setSpecificStatesCallInterval": 0, # 0 means disabled "setSpecificStatesCallFrequency": variables.get_specific_states_call_frequency(fiber_no, motor_unit_no), # set_specific_states should be called variables.stimulation_frequency times per ms "setSpecificStatesFrequencyJitter": variables.get_specific_states_frequency_jitter(fiber_no, motor_unit_no), # random value to add or substract to setSpecificStatesCallFrequency every stimulation, this is to add random jitter to the frequency "setSpecificStatesRepeatAfterFirstCall": 0.01, # [ms] simulation time span for which the setSpecificStates callback will be called after a call was triggered "setSpecificStatesCallEnableBegin": variables.get_specific_states_call_enable_begin(fiber_no, motor_unit_no),# [ms] first time when to call setSpecificStates "additionalArgument": fiber_no, # last argument that will be passed to the callback functions set_specific_states, set_specific_parameters, etc. # parameters to the cellml model "mappings": variables.mappings, # mappings between parameters and algebraics/constants and between outputConnectorSlots and states, algebraics or parameters, they are defined in helper.py "parametersInitialValues": variables.parameters_initial_values, #[0.0, 1.0], # initial values for the parameters: I_Stim, l_hs "meshName": "MeshFiber_{}".format(fiber_no), # reference to the fiber mesh "stimulationLogFilename": "out/stimulation.log", # a file that will contain the times of stimulations }, "OutputWriter" : [] #[ # {"format": "Paraview", "outputInterval": 1, "filename": "out/" + variables.scenario_name + "/0D_states({},{})".format(fiber_in_subdomain_coordinate_x,fiber_in_subdomain_coordinate_y), "binary": True, "fixedFormat": False, "combineFiles": True, "fileNumbering": "incremental"}