PageSourceSearch

https://dune-copasi.netlify.app/assets/js/86367986.beec7004.js

js dune-copasi.netlify.app collected 2026-10-03 10:41:08 UTC 9,437 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkdune_copasi_docusaurus=self.webpackChunkdune_copasi_docusaurus||[]).push([[2168],{9253:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>f,frontMatter:()=>o,metadata:()=>u,toc:()=>d});var r=t(4848),i=t(8453),a=t(1470),s=t(9365);const o={id:"ini_file",title:"Config File",description:"Syntax of INI file",sidebar_label:"Config File"},l=void 0,u={id:"ini_file",title:"Config File",description:"Syntax of INI file",source:"@site/versioned_docs/version-v2.0.1/ini_file.mdx",sourceDirName:".",slug:"/ini_file",permalink:"/docs/v2.0.1/ini_file",draft:!1,unlisted:!1,editUrl:"https://gitlab.dune-project.org/copasi/dune-copasi/-/edit/master/doc/docusaurus/versioned_docs/version-v2.0.1/ini_file.mdx",tags:[],version:"v2.0.1",lastUpdatedBy:"Santiago Ospina De Los Rios",lastUpdatedAt:1713784883e3,frontMatter:{id:"ini_file",title:"Config File",description:"Syntax of INI file",sidebar_label:"Config File"},sidebar:"docs",previous:{title:"Configuration Options",permalink:"/docs/v2.0.1/category/docs/config"},next:{title:"Options",permalink:"/docs/v2.0.1/param_tree"}},c={},d=[{value:"Format",id:"format",level:2},{value:"Comments",id:"comments",level:3},{value:"Entries",id:"entries",level:3},{value:"Group",id:"group",level:3}];function h(e){const n={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/INI_file",children:"INI format"})," defines a set of ",(0,r.jsx)(n.a,{href:"param_tree",children:"configuration options"})," to initialize and run the models."]}),"\n",(0,r.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,r.jsxs)(n.p,{children:["The forrmat we use follows the DUNE ",(0,r.jsx)(n.code,{children:"ini"})," file convention. In short, the data is composed of a ",(0,r.jsx)(n.em,{children:"key\u2013value pairs"})," on the form ",(0,r.jsx)(n.code,{children:"key = value"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"comments",children:"Comments"}),"\n",(0,r.jsxs)(n.p,{children:["Characters followed by hash ",(0,r.jsx)(n.code,{children:"#"})," will be ignored."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ini",metastring:'title="config.ini"',children:"# %highlight\n# line comment\nkey = value\n"})}),"\n",(0,r.jsx)(n.h3,{id:"entries",children:"Entries"}),"\n",(0,r.jsxs)(n.p,{children:["An entry is given by a ",(0,r.jsx)(n.em,{children:"key-value pair"})," and must be entirely contained in one line. Additionally, ",(0,r.jsx)(n.em,{children:"keys"})," must be unique."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ini",metastring:'title="config.ini"',children:"id = value\n# %highlight-error\nid = val\n# error: repeated key 'i
1d'\n"})}),"\n",(0,r.jsx)(n.h3,{id:"group",children:"Group"}),"\n",(0,r.jsxs)(n.p,{children:["A ",(0,r.jsx)(n.em,{children:"key"})," is a string which may be contained on a common\ngroup of parameters by preceding the line with the ",(0,r.jsx)(n.em,{children:"group name"})," between\nbrackets and/or by preceding the ",(0,r.jsx)(n.em,{children:"key"})," by the ",(0,r.jsx)(n.em,{children:"group name"})," separated by a dot. Notice that\nthe two forms may be combined."]}),"\n",(0,r.jsx)(n.p,{children:"As an example, the three following INI files, are equivalent"}),"\n",(0,r.jsxs)(a.A,{defaultValue:"form1",values:[{label:"No grouping",value:"form1"},{label:"Grouping",value:"form2"},{label:"Nested grouping",value:"form3"}],children:[(0,r.jsx)(s.A,{value:"form1",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ini",metastring:'title="config.ini"',children:"# No preceding section\nsection.subsection.first = 1.0\nsection.subsection.second = 2.0\n"})})}),(0,r.jsx)(s.A,{value:"form2",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ini",metastring:'title="config.ini"',children:"[section]\nsubsection.first = 1.0\nsubsection.second = 2.0\n"})})}),(0,r.jsx)(s.A,{value:"form3",children:(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ini",metastring:'title="config.ini"',children:"[section.subsection]\nfirst = 1.0\nsecond = 2.0\n"})})})]})]})}function f(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>s});t(6540);var r=t(8215);const i={tabItem:"tabItem_Ymn6"};var a=t(4848);function s(e){let{children:n,hidden:t,className:s}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,r.A)(i.tabItem,s),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>w});var r=t(6540),i=t(8215),a=t(3104),s=t(6347),o=t(205),l=t(7485),u=t(1682),c=t(679);function d(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:i}}=e;return{value:n,label:t,attributes:r,default:i}}))}(t);return function(e){const n=(0,u.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,t])}function f(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function m(e){let{queryString:n=!1,groupId:t}=e;const i=(0,s.W6)(),a=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(a),(0,r.useCallback)((e=>{if(!a)return;const n=new URLSearchParams(i.location.search);n.set(a,e),i.replace({...i.location,search:n.toString()})}),[a,i])]}function p(e){const{defaultValue:n,queryString:t=!1,groupId:i}=e,a=h(e),[s,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!f({value:n,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:a}))),[u,d]=m({queryString:t,groupId:i}),[p,b]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,a]=(0,c.Dv)(t);return[i,(0,r.useCallback)((e=>{t&&a.set(e)}),[t,a])]}({groupId:i}),g=(()=>{const e=u??p;return f({value:e,tabValues:a})?e:null})();(0,o.A)((()=>{g&&l(g)}),[g]);return{selectedValue:s,selectValue:(0,r.useCallback)((e=>{if(!f({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),b(e)}),[d,b,a]),tabValues:a}}var b=t(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};
1var v=t(4848);function x(e){let{className:n,block:t,selectedValue:r,selectValue:s,tabValues:o}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,a.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),i=o[t].value;i!==r&&(u(n),s(i))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":t},n),children:o.map((e=>{let{value:n,label:t,attributes:a}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:r===n?0:-1,"aria-selected":r===n,ref:e=>l.push(e),onKeyDown:d,onClick:c,...a,className:(0,i.A)("tabs__item",g.tabItem,a?.className,{"tabs__item--active":r===n}),children:t??n},n)}))})}function j(e){let{lazy:n,children:t,selectedValue:a}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===a));return e?(0,r.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==a})))})}function y(e){const n=p(e);return(0,v.jsxs)("div",{className:(0,i.A)("tabs-container",g.tabList),children:[(0,v.jsx)(x,{...n,...e}),(0,v.jsx)(j,{...n,...e})]})}function w(e){const n=(0,b.A)();return(0,v.jsx)(y,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>o});var r=t(6540);const i={},a=r.createContext(i);function s(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.