Page Not Found
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/404.html b/404.html new file mode 100644 index 0000000000..b571dcd1c4 --- /dev/null +++ b/404.html @@ -0,0 +1,13 @@ + + +
+ + +We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
["'])(?.*?)\1/,de=/\{(? [\d,-]+)\}/,ue={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},me={...ue,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},he=Object.keys(ue);function pe(e,t){const n=e.map((e=>{const{start:n,end:s}=me[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function fe(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&de.test(o)){const e=o.match(de).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${o}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,s=ce()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return pe(["js","jsBlock"],t);case"jsx":case"tsx":return pe(["js","jsBlock","jsx"],t);case"html":return pe(["js","jsBlock","html"],t);case"python":case"py":case"bash":return pe(["bash"],t);case"markdown":case"md":return pe(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return pe(["tex"],t);case"lua":case"haskell":case"sql":return pe(["lua"],t);case"wasm":return pe(["wasm"],t);case"vb":case"vba":case"visual-basic":return pe(["vb","rem"],t);case"vbnet":return pe(["vbnet","rem"],t);case"batch":return pe(["rem"],t);case"basic":return pe(["rem","f90"],t);case"fsharp":return pe(["js","ml"],t);case"ocaml":case"sml":return pe(["ml"],t);case"fortran":return pe(["f90"],t);case"cobol":return pe(["cobol"],t);default:return pe(he,t)}}(s,a),l=n.split("\n"),c=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),r=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h void 0!==e));r[t]?c[r[t]].range+=`${h},`:d[t]?c[d[t]].start=h:u[t]&&(c[u[t]].range+=`${c[u[t]].start}-${h-1},`),l.splice(h,1)}n=l.join("\n");const m={};return Object.entries(c).forEach((e=>{let[t,{range:n}]=e;ce()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const xe={codeBlockContainer:"codeBlockContainer_Ckt0"};function be(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(ie());return(0,i.jsx)(t,{...n,style:s,className:(0,u.Z)(n.className,xe.codeBlockContainer,b.k.common.codeBlock)})}const ge={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function ve(e){let{children:t,className:n}=e;return(0,i.jsx)(be,{as:"pre",tabIndex:0,className:(0,u.Z)(ge.codeBlockStandalone,"thin-scrollbar",n),children:(0,i.jsx)("code",{className:ge.codeBlockLines,children:t})})}const je={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Ne(e,t){const[n,a]=(0,s.useState)(),i=(0,s.useCallback)((()=>{a(e.current?.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{i()}),[i]),function(e,t,n){void 0===n&&(n=je);const a=(0,o.zX)(t),i=(0,o.Ql)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,i),()=>t.disconnect()}),[e,a,i])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),i())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var Ce=n(2573);const ke={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function Le(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const l=a({line:t,className:(0,u.Z)(n,s&&ke.codeLine)}),c=t.map(((e,t)=>(0,i.jsx)("span",{...o({token:e,key:t})},t)));return(0,i.jsxs)("span",{...l,children:[s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:ke.codeLineNumber}),(0,i.jsx)("span",{className:ke.codeLineContent,children:c})]}):c,(0,i.jsx)("br",{})]})}function ye(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Ze(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const _e={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function Be(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),l=(0,s.useRef)(void 0),c=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}s.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a&&a.focus()}(t),o(!0),l.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(l.current)),[]),(0,i.jsx)("button",{type:"button","aria-label":a?(0,g.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,g.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,g.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.Z)("clean-btn",n,_e.copyButton,a&&_e.copyButtonCopied),onClick:c,children:(0,i.jsxs)("span",{className:_e.copyButtonIcons,"aria-hidden":"true",children:[(0,i.jsx)(ye,{className:_e.copyButtonIcon}),(0,i.jsx)(Ze,{className:_e.copyButtonSuccessIcon})]})})}function we(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const Te={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function Ee(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,g.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,i.jsx)("button",{type:"button",onClick:n,className:(0,u.Z)("clean-btn",t,s&&Te.wordWrapButtonEnabled),"aria-label":a,title:a,children:(0,i.jsx)(we,{className:Te.wordWrapButtonIcon,"aria-hidden":"true"})})}function He(e){let{children:t,className:n="",metastring:a,title:o,showLineNumbers:l,language:c}=e;const{prism:{defaultLanguage:r,magicComments:d}}=(0,I.L)(),m=function(e){return e?.toLowerCase()}(c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??r),h=ie(),p=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),l=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return Ne(o,l),(0,s.useEffect)((()=>{l()}),[e,l]),(0,s.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:i}}(),f=function(e){return e?.match(re)?.groups.title??""}(a)||o,{lineClassNames:x,code:b}=fe(t,{metastring:a,language:m,magicComments:d}),g=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return(0,i.jsxs)(be,{as:"div",className:(0,u.Z)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`),children:[f&&(0,i.jsx)("div",{className:ge.codeBlockTitle,children:f}),(0,i.jsxs)("div",{className:ge.codeBlockContent,children:[(0,i.jsx)(Ce.y$,{theme:h,code:b,language:m??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,i.jsx)("pre",{tabIndex:0,ref:p.codeBlockRef,className:(0,u.Z)(t,ge.codeBlock,"thin-scrollbar"),style:n,children:(0,i.jsx)("code",{className:(0,u.Z)(ge.codeBlockLines,g&&ge.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,i.jsx)(Le,{line:e,getLineProps:a,getTokenProps:o,classNames:x[t],showLineNumbers:g},t)))})})}}),(0,i.jsxs)("div",{className:ge.buttonGroup,children:[(p.isEnabled||p.isCodeScrollable)&&(0,i.jsx)(Ee,{className:ge.codeButton,onClick:()=>p.toggle(),isEnabled:p.isEnabled}),(0,i.jsx)(Be,{className:ge.codeButton,code:b})]})]})]})}function Ae(e){let{children:t,...n}=e;const a=(0,ae.Z)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof o?He:ve;return(0,i.jsx)(l,{...n,children:o},String(a))}function Ie(e){return(0,i.jsx)("code",{...e})}var Me=n(8138);const Se={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function Ue(e){return!!e&&("SUMMARY"===e.tagName||Ue(e.parentElement))}function ze(e,t){return!!e&&(e===t||ze(e.parentElement,t))}function Ve(e){let{summary:t,children:n,...a}=e;(0,Me.Z)().collectAnchor(a.id);const o=(0,ae.Z)(),l=(0,s.useRef)(null),{collapsed:c,setCollapsed:r}=(0,A.u)({initialState:!a.open}),[d,m]=(0,s.useState)(a.open),h=s.isValidElement(t)?t:(0,i.jsx)("summary",{children:t??"Details"});return(0,i.jsxs)("details",{...a,ref:l,open:d,"data-collapsed":c,className:(0,u.Z)(Se.details,o&&Se.isBrowser,a.className),onMouseDown:e=>{Ue(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Ue(t)&&ze(t,l.current)&&(e.preventDefault(),c?(r(!1),m(!0)):r(!0))},children:[h,(0,i.jsx)(A.z,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{r(e),m(!e)},children:(0,i.jsx)("div",{className:Se.collapsibleContent,children:n})})]})}const Re={details:"details_b_Ee"},Oe="alert alert--info";function Pe(e){let{...t}=e;return(0,i.jsx)(Ve,{...t,className:(0,u.Z)(Oe,Re.details,t.className)})}function $e(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,i.jsx)(i.Fragment,{children:t.filter((e=>e!==n))});return(0,i.jsx)(Pe,{...e,summary:n,children:a})}function De(e){return(0,i.jsx)(te.Z,{...e})}const We={containsTaskList:"containsTaskList_mC6p"};function Fe(e){if(void 0!==e)return(0,u.Z)(e,e?.includes("contains-task-list")&&We.containsTaskList)}const qe={img:"img_ev3q"};var Ge=n(9047);const Je={Head:se.Z,details:$e,Details:$e,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,i.jsx)(Ie,{...e}):(0,i.jsx)(Ae,{...e})},a:function(e){return(0,i.jsx)(C.Z,{...e})},pre:function(e){return(0,i.jsx)(i.Fragment,{children:e.children})},ul:function(e){return(0,i.jsx)("ul",{...e,className:Fe(e.className)})},li:function(e){return(0,Me.Z)().collectAnchor(e.id),(0,i.jsx)("li",{...e})},img:function(e){return(0,i.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,u.Z)(t,qe.img))});var t},h1:e=>(0,i.jsx)(De,{as:"h1",...e}),h2:e=>(0,i.jsx)(De,{as:"h2",...e}),h3:e=>(0,i.jsx)(De,{as:"h3",...e}),h4:e=>(0,i.jsx)(De,{as:"h4",...e}),h5:e=>(0,i.jsx)(De,{as:"h5",...e}),h6:e=>(0,i.jsx)(De,{as:"h6",...e}),admonition:Ge.Z,mermaid:()=>null};function Ye(e){let{children:t}=e;return(0,i.jsx)(ne.Z,{components:Je,children:t})}function Qe(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=r();return t.hide_title||void 0!==n?null:e.title}();return(0,i.jsxs)("div",{className:(0,u.Z)(b.k.docs.docMarkdown,"markdown"),children:[n&&(0,i.jsx)("header",{children:(0,i.jsx)(te.Z,{as:"h1",children:n})}),(0,i.jsx)(Ye,{children:t})]})}var Xe=n(1310),Ke=n(2212);const et={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function tt(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=r(),n=(0,m.i)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,i.jsx)(J,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,i.jsx)(ee,{})}}(),{metadata:{unlisted:s}}=r();return(0,i.jsxs)("div",{className:"row",children:[(0,i.jsxs)("div",{className:(0,u.Z)("col",!n.hidden&&et.docItemCol),children:[s&&(0,i.jsx)(Ke.Z,{}),(0,i.jsx)(f.Z,{}),(0,i.jsxs)("div",{className:et.docItemContainer,children:[(0,i.jsxs)("article",{children:[(0,i.jsx)(Xe.Z,{}),(0,i.jsx)(x.Z,{}),n.mobile,(0,i.jsx)(Qe,{children:t}),(0,i.jsx)(H,{})]}),(0,i.jsx)(p,{})]})]}),n.desktop&&(0,i.jsx)("div",{className:"col col--3",children:n.desktop})]})}function nt(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,i.jsx)(c,{content:e.content,children:(0,i.jsxs)(a.FG,{className:t,children:[(0,i.jsx)(d,{}),(0,i.jsx)(tt,{children:(0,i.jsx)(n,{})})]})})}},4966:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var s=n(5999),a=n(512),o=n(3692),i=n(5893);function l(e){const{permalink:t,title:n,subLabel:s,isNext:l}=e;return(0,i.jsxs)(o.Z,{className:(0,a.Z)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}function c(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,s.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(l,{...t,subLabel:(0,i.jsx)(s.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(l,{...n,subLabel:(0,i.jsx)(s.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}},4364:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var s=n(512),a=n(5999),o=n(5281),i=n(4477),l=n(5893);function c(e){let{className:t}=e;const n=(0,i.E)();return n.badge?(0,l.jsx)("span",{className:(0,s.Z)(t,o.k.docs.docVersionBadge,"badge badge--secondary"),children:(0,l.jsx)(a.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}},3120:(e,t,n)=>{"use strict";n.d(t,{Z:()=>x});n(7294);var s=n(512),a=n(2263),o=n(3692),i=n(5999),l=n(143),c=n(5281),r=n(373),d=n(4477),u=n(5893);const m={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(i.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,u.jsx)(i.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function h(e){const t=m[e.versionMetadata.banner];return(0,u.jsx)(t,{...e})}function p(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,u.jsx)(i.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,u.jsx)("b",{children:(0,u.jsx)(o.Z,{to:n,onClick:s,children:(0,u.jsx)(i.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function f(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,a.Z)(),{pluginId:i}=(0,l.gA)({failfast:!0}),{savePreferredVersionName:d}=(0,r.J)(i),{latestDocSuggestion:m,latestVersionSuggestion:f}=(0,l.Jo)(i),x=m??(b=f).docs.find((e=>e.id===b.mainDocId));var b;return(0,u.jsxs)("div",{className:(0,s.Z)(t,c.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,u.jsx)("div",{children:(0,u.jsx)(h,{siteTitle:o,versionMetadata:n})}),(0,u.jsx)("div",{className:"margin-top--md",children:(0,u.jsx)(p,{versionLabel:f.label,to:x.path,onClick:()=>d(f.name)})})]})}function x(e){let{className:t}=e;const n=(0,d.E)();return n.banner?(0,u.jsx)(f,{className:t,versionMetadata:n}):null}},3008:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});n(7294);var s=n(512),a=n(3692);const o={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var i=n(5893);function l(e){let{permalink:t,label:n,count:l}=e;return(0,i.jsxs)(a.Z,{href:t,className:(0,s.Z)(o.tag,l?o.tagWithCount:o.tagRegular),children:[n,l&&(0,i.jsx)("span",{children:l})]})}},2212:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});n(7294);var s=n(512),a=n(5999),o=n(5742),i=n(5893);function l(){return(0,i.jsx)(a.Z,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function c(){return(0,i.jsx)(a.Z,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function r(){return(0,i.jsx)(o.Z,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=n(5281),u=n(9047);function m(e){let{className:t}=e;return(0,i.jsx)(u.Z,{type:"caution",title:(0,i.jsx)(l,{}),className:(0,s.Z)(t,d.k.common.unlistedBanner),children:(0,i.jsx)(c,{})})}function h(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r,{}),(0,i.jsx)(m,{...e})]})}},7594:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s {"use strict";n.d(t,{Z:()=>l,a:()=>i});var s=n(7294);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17e50ecd.ebbf2f8c.js b/assets/js/17e50ecd.ebbf2f8c.js new file mode 100644 index 0000000000..8942e9d256 --- /dev/null +++ b/assets/js/17e50ecd.ebbf2f8c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[7756],{4166:(s,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>r,default:()=>d,frontMatter:()=>t,metadata:()=>l,toc:()=>c});var n=a(5893),i=a(1151);const t={},r="ADJUSTMENT",l={id:"about/references/keywords/ADJUSTMENT",title:"ADJUSTMENT",description:"eCalc Model",source:"@site/docs/about/references/keywords/ADJUSTMENT.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/ADJUSTMENT",permalink:"/ecalc/docs/about/references/keywords/ADJUSTMENT",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/ADJUSTMENT.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"YAML keywords",permalink:"/ecalc/docs/about/references/keywords/"},next:{title:"CATEGORY",permalink:"/ecalc/docs/about/references/keywords/CATEGORY"}},m={},c=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function h(s){const e={a:"a",admonition:"admonition",annotation:"annotation",code:"code",h1:"h1",h2:"h2",math:"math",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",msub:"msub",p:"p",pre:"pre",semantics:"semantics",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.a)(),...s.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"adjustment",children:"ADJUSTMENT"}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.a,{href:"/ecalc/docs/about/references/",children:"eCalc Model"}),"\n/ ",(0,n.jsx)(e.a,{href:"FACILITY_INPUTS",children:"FACILITY_INPUTS"}),"\n/ ",(0,n.jsx)(e.a,{href:"ADJUSTMENT",children:"ADJUSTMENT"})]}),"\n",(0,n.jsxs)(e.table,{children:[(0,n.jsx)(e.thead,{children:(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.th,{children:"Required"}),(0,n.jsx)(e.th,{children:"Child of"}),(0,n.jsx)(e.th,{children:"Children/Options"})]})}),(0,n.jsx)(e.tbody,{children:(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"No"}),(0,n.jsx)(e.td,{children:"FACILITY_INPUTS"}),(0,n.jsxs)(e.td,{children:["CONSTANT ",(0,n.jsx)("br",{})," FACTOR"]})]})})]}),"\n",(0,n.jsx)(e.h2,{id:"description",children:"Description"}),"\n",(0,n.jsx)(e.p,{children:"For various reasons (degenerated equipment, liquid pumps, etc.), the predicted energy usage from\nthe facility input does not always match the historic usage. To account for this, adjustments\nmay be added to the facility input. Currently, linear adjustment to the energy usage is supported."}),"\n",(0,n.jsx)(e.admonition,{type:"warning",children:(0,n.jsxs)(e.p,{children:["Even though The ",(0,n.jsx)(e.a,{href:"ADJUSTMENT",children:"ADJUSTMENT"})," factor and constant can be added to any\n",(0,n.jsx)(e.a,{href:"FACILITY_INPUTS",children:"FACILITY_INPUTS"}),", it is only\nimplemented and used for a small subset of equipment, namely: SAMPLED COMPRESSOR MODEL, TABULATED ENERGY USAGE MODEL,\n",(0,n.jsx)(e.a,{href:"/ecalc/docs/about/references/keywords/GENERATORSETS",children:"GENERATORSETS"}),"\n, PUMP MODEL (Single Speed, Variable Speed and System) and compressors in a compressor system.\nIf you are not sure, give it a test first."]})}),"\n",(0,n.jsx)(e.h2,{id:"format",children:"Format"}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-yaml",children:"ADJUSTMENT:\n : \n : \n"})}),"\n",(0,n.jsx)(e.h2,{id:"example",children:"Example"}),"\n",(0,n.jsx)(e.p,{children:"Say you have input that is off by a constant and percentage. You could fix this in the following way:"}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-yaml",children:"NAME: some_facility_input\nFILE: filename.csv\nTYPE: FACILITY_INPUT_TYPE\nADJUSTMENT:\n CONSTANT: 2\n FACTOR: 1.05\n"})}),"\n",(0,n.jsxs)(e.p,{children:["The resulting energy consumption ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{mathvariant:"normal",children:"a"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"d"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"j"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"u"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"s"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"t"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"e"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"d"})]})]})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"E_\\mathrm{adjusted}"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3361em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.0576em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"adjusted"})})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.2861em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})})]}),", i.e. fuel or power, will then be"]}),"\n",(0,n.jsx)(e.span,{className:"katex-display",children:(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{mathvariant:"normal",children:"a"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"d"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"j"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"u"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"s"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"t"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"e"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"d"})]})]}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsx)(e.mn,{children:"2"}),(0,n.jsx)(e.mo,{children:"+"}),(0,n.jsx)(e.mn,{children:"1.05"}),(0,n.jsx)(e.mo,{children:"\xd7"}),(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{mathvariant:"normal",children:"o"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"r"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"i"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"g"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"i"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"n"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"a"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"l"})]})]})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"E_\\mathrm{adjusted} = 2 + 1.05 \\times E_\\mathrm{original}"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3361em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.0576em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"adjusted"})})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.2861em"},children:(0,n.jsx)(e.span,{})})})]})})]}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.7278em",verticalAlign:"-0.0833em"}}),(0,n.jsx)(e.span,{className:"mord",children:"2"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"+"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.7278em",verticalAlign:"-0.0833em"}}),(0,n.jsx)(e.span,{className:"mord",children:"1.05"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\xd7"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3361em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.0576em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"original"})})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.2861em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})]})]})}),"\n",(0,n.jsxs)(e.p,{children:["where ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"E"}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{mathvariant:"normal",children:"o"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"r"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"i"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"g"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"i"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"n"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"a"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"l"})]})]})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"E_\\mathrm{original}"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.05764em"},children:"E"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3361em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.0576em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"original"})})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.2861em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})})]})," is the energy consumption before the adjustment."]})]})}function d(s={}){const{wrapper:e}={...(0,i.a)(),...s.components};return e?(0,n.jsx)(e,{...s,children:(0,n.jsx)(h,{...s})}):h(s)}},1151:(s,e,a)=>{a.d(e,{Z:()=>l,a:()=>r});var n=a(7294);const i={},t=n.createContext(i);function r(s){const e=n.useContext(t);return n.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function l(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(i):s.components||i:r(s.components),n.createElement(t.Provider,{value:e},s.children)}}}]); \ No newline at end of file diff --git a/assets/js/18b0ec42.fda20e54.js b/assets/js/18b0ec42.fda20e54.js new file mode 100644 index 0000000000..3ea5a9a533 --- /dev/null +++ b/assets/js/18b0ec42.fda20e54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[2962],{946:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>i});var a=n(5893),s=n(1151);const r={slug:"v8.8-release",title:"v8.8 (Latest)",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:0},l="eCalc",c={id:"changelog/v8-8",title:"v8.8 (Latest)",description:"New Features",source:"@site/docs/changelog/v8-8.md",sourceDirName:"changelog",slug:"/changelog/v8.8-release",permalink:"/ecalc/docs/changelog/v8.8-release",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/v8-8.md",tags:[{label:"release",permalink:"/ecalc/docs/tags/release"},{label:"eCalc",permalink:"/ecalc/docs/tags/e-calc"}],version:"current",sidebarPosition:0,frontMatter:{slug:"v8.8-release",title:"v8.8 (Latest)",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:0},sidebar:"changelog",next:{title:"Next",permalink:"/ecalc/docs/changelog/latest"}},o={},i=[{value:"New Features",id:"new-features",level:2},{value:"Fixes",id:"fixes",level:2},{value:"Breaking changes",id:"breaking-changes",level:2}];function d(e){const t={code:"code",h1:"h1",h2:"h2",li:"li",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"ecalc",children:"eCalc"}),"\n",(0,a.jsx)(t.h2,{id:"new-features",children:"New Features"}),"\n",(0,a.jsxs)(t.ul,{children:["\n",(0,a.jsx)(t.li,{children:"Updated NeqSim to version 2.5.9. This may lead to small numerical differences in the results when old models are re-run with the latest version of eCalc."}),"\n",(0,a.jsx)(t.li,{children:"Provide maximum rate in CompressorModelResult (if there are more than one stream, only max rate for the first one is reported)"}),"\n",(0,a.jsxs)(t.li,{children:["Support for specifying ",(0,a.jsx)(t.code,{children:"RATE_TYPE"})," (",(0,a.jsx)(t.code,{children:"STREAM_DAY"})," or ",(0,a.jsx)(t.code,{children:"CALENDAR_DAY"}),") for ",(0,a.jsx)(t.code,{children:"VENTING_EMITTERS"})]}),"\n"]}),"\n",(0,a.jsx)(t.h2,{id:"fixes",children:"Fixes"}),"\n",(0,a.jsx)(t.h2,{id:"breaking-changes",children:"Breaking changes"})]})}function u(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>l});var a=n(7294);const s={},r=a.createContext(s);function l(e){const t=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.81b3ccb7.js b/assets/js/1a4e3797.81b3ccb7.js new file mode 100644 index 0000000000..eec3b20827 --- /dev/null +++ b/assets/js/1a4e3797.81b3ccb7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[7920],{8824:(e,t,r)=>{r.d(t,{c:()=>u});var s=r(7294),a=r(2263);const n=["zero","one","two","few","many","other"];function c(e){return n.filter((t=>e.includes(t)))}const l={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,a.Z)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),l}}),[e])}function u(){const e=o();return{selectMessage:(t,r)=>function(e,t,r){const s=e.split("|");if(1===s.length)return s[0];s.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const a=r.select(t),n=r.pluralForms.indexOf(a);return s[Math.min(n,s.length-1)]}(r,t,e)}}},1473:(e,t,r)=>{r.r(t),r.d(t,{default:()=>b});var s=r(7294),a=r(2263),n=r(8862),c=r(5742),l=r(3692),o=r(5999),u=r(8824),h=r(1728),i=r(6550),m=r(2389),d=r(1029);const p=function(){const e=(0,m.Z)(),t=(0,i.k6)(),r=(0,i.TH)(),{siteConfig:{baseUrl:s}}=(0,a.Z)(),n=e?new URLSearchParams(r.search):null,c=n?.get("q")||"",l=n?.get("ctx")||"",o=n?.get("version")||"",u=e=>{const t=new URLSearchParams(r.search);return e?t.set("q",e):t.delete("q"),t};return{searchValue:c,searchContext:l&&Array.isArray(d.Kc)&&d.Kc.some((e=>"string"==typeof e?e===l:e.path===l))?l:"",searchVersion:o,updateSearchPath:e=>{const r=u(e);t.replace({search:r.toString()})},updateSearchContext:e=>{const s=new URLSearchParams(r.search);s.set("ctx",e),t.replace({search:s.toString()})},generateSearchPageLink:e=>{const t=u(e);return`${s}search?${t.toString()}`}}};var g=r(22),x=r(8202),f=r(2539),y=r(726),S=r(1073),C=r(311),j=r(3926);const I={searchContextInput:"searchContextInput_mXoe",searchQueryInput:"searchQueryInput_CFBF",searchResultItem:"searchResultItem_U687",searchResultItemPath:"searchResultItemPath_uIbk",searchResultItemSummary:"searchResultItemSummary_oZHr",searchQueryColumn:"searchQueryColumn_q7nx",searchContextColumn:"searchContextColumn_oWAF"};var v=r(51),w=r(5893);function R(){const{siteConfig:{baseUrl:e},i18n:{currentLocale:t}}=(0,a.Z)(),{selectMessage:r}=(0,u.c)(),{searchValue:n,searchContext:l,searchVersion:i,updateSearchPath:m,updateSearchContext:f}=p(),[y,S]=(0,s.useState)(n),[j,R]=(0,s.useState)(),[b,_]=(0,s.useState)(),F=`${e}${i}`,A=(0,s.useMemo)((()=>y?(0,o.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:y}):(0,o.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})),[y]);(0,s.useEffect)((()=>{m(y),j&&(y?j(y,(e=>{_(e)})):_(void 0))}),[y,j]);const $=(0,s.useCallback)((e=>{S(e.target.value)}),[]);return(0,s.useEffect)((()=>{n&&n!==y&&S(n)}),[n]),(0,s.useEffect)((()=>{!async function(){const{wrappedIndexes:e,zhDictionary:t}=!Array.isArray(d.Kc)||l||d.pQ?await(0,g.w)(F,l):{wrappedIndexes:[],zhDictionary:[]};R((()=>(0,x.v)(e,t,100)))}()}),[l,F]),(0,w.jsxs)(s.Fragment,{children:[(0,w.jsxs)(c.Z,{children:[(0,w.jsx)("meta",{property:"robots",content:"noindex, follow"}),(0,w.jsx)("title",{children:A})]}),(0,w.jsxs)("div",{className:"container margin-vert--lg",children:[(0,w.jsx)("h1",{children:A}),(0,w.jsxs)("div",{className:"row",children:[(0,w.jsx)("div",{className:(0,h.Z)("col",{[I.searchQueryColumn]:Array.isArray(d.Kc),"col--9":Array.isArray(d.Kc),"col--12":!Array.isArray(d.Kc)}),children:(0,w.jsx)("input",{type:"search",name:"q",className:I.searchQueryInput,"aria-label":"Search",onChange:$,value:y,autoComplete:"off",autoFocus:!0})}),Array.isArray(d.Kc)?(0,w.jsx)("div",{className:(0,h.Z)("col","col--3","padding-left--none",I.searchContextColumn),children:(0,w.jsxs)("select",{name:"search-context",className:I.searchContextInput,id:"context-selector",value:l,onChange:e=>f(e.target.value),children:[d.pQ&&(0,w.jsx)("option",{value:"",children:(0,o.I)({id:"theme.SearchPage.searchContext.everywhere",message:"everywhere"})}),d.Kc.map((e=>{const{label:r,path:s}=(0,v._)(e,t);return(0,w.jsx)("option",{value:s,children:r},s)}))]})}):null]}),!j&&y&&(0,w.jsx)("div",{children:(0,w.jsx)(C.Z,{})}),b&&(b.length>0?(0,w.jsx)("p",{children:r(b.length,(0,o.I)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)'},{count:b.length}))}):(0,w.jsx)("p",{children:(0,o.I)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"})})),(0,w.jsx)("section",{children:b&&b.map((e=>(0,w.jsx)(P,{searchResult:e},e.document.i)))})]})]})}function P(e){let{searchResult:{document:t,type:r,page:s,tokens:a,metadata:n}}=e;const c=0===r,o=2===r,u=(c?t.b:s.b).slice(),h=o?t.s:t.t;c||u.push(s.t);let i="";if(d.vc&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append("_highlight",t);i=`?${e.toString()}`}return(0,w.jsxs)("article",{className:I.searchResultItem,children:[(0,w.jsx)("h2",{children:(0,w.jsx)(l.Z,{to:t.u+i+(t.h||""),dangerouslySetInnerHTML:{__html:o?(0,f.C)(h,a):(0,y.o)(h,(0,S.m)(n,"t"),a,100)}})}),u.length>0&&(0,w.jsx)("p",{className:I.searchResultItemPath,children:(0,j.e)(u)}),o&&(0,w.jsx)("p",{className:I.searchResultItemSummary,dangerouslySetInnerHTML:{__html:(0,y.o)(t.t,(0,S.m)(n,"t"),a,100)}})]})}const b=function(){return(0,w.jsx)(n.Z,{children:(0,w.jsx)(R,{})})}}}]); \ No newline at end of file diff --git a/assets/js/1c663d3d.8a9a9e25.js b/assets/js/1c663d3d.8a9a9e25.js new file mode 100644 index 0000000000..da5afa7e62 --- /dev/null +++ b/assets/js/1c663d3d.8a9a9e25.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[8392],{6703:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var i=n(5893),o=n(1151);const a={title:"Getting started",sidebar_position:2,description:"Getting started with eCalc"},r="API Reference",c={id:"about/getting_started/index",title:"Getting started",description:"Getting started with eCalc",source:"@site/docs/about/getting_started/index.md",sourceDirName:"about/getting_started",slug:"/about/getting_started/",permalink:"/ecalc/docs/about/getting_started/",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/getting_started/index.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Getting started",sidebar_position:2,description:"Getting started with eCalc"},sidebar:"about",previous:{title:"Introduction",permalink:"/ecalc/docs/about/"},next:{title:"CLI",permalink:"/ecalc/docs/about/getting_started/cli/"}},s={},l=[{value:"What method should I choose?",id:"what-method-should-i-choose",level:2},{value:"eCalc CLI",id:"ecalc-cli",level:3},{value:"Python Library",id:"python-library",level:3}];function d(e){const t={a:"a",admonition:"admonition",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"api-reference",children:"API Reference"}),"\n",(0,i.jsx)(t.admonition,{type:"info",children:(0,i.jsxs)(t.p,{children:["Currently the ",(0,i.jsx)(t.em,{children:"only"})," officially supported method is the ",(0,i.jsx)(t.a,{href:"/ecalc/docs/about/getting_started/cli/",children:"eCalc CLI"})," using eCalc YAML models."]})}),"\n",(0,i.jsx)(t.p,{children:"There are three options to run eCalc models:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/ecalc/docs/about/getting_started/cli/",children:"eCalc CLI"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/ecalc/docs/about/getting_started/library/",children:"eCalc Python library"})}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"what-method-should-i-choose",children:"What method should I choose?"}),"\n",(0,i.jsx)(t.h3,{id:"ecalc-cli",children:"eCalc CLI"}),"\n",(0,i.jsxs)(t.p,{children:["Choose the ",(0,i.jsx)(t.a,{href:"/ecalc/docs/about/getting_started/cli/",children:"eCalc CLI"})," option if you:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Don't know much about programming"}),"\n",(0,i.jsx)(t.li,{children:"Have simple requirements"}),"\n",(0,i.jsx)(t.li,{children:"Can define the eCalc models statically"}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"python-library",children:"Python Library"}),"\n",(0,i.jsxs)(t.p,{children:["Choose the ",(0,i.jsx)(t.a,{href:"/ecalc/docs/about/getting_started/library/",children:"Python Library"})," option if you:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Are a developer or advanced user, and want to build eCalc models and get results programmatically"}),"\n",(0,i.jsx)(t.li,{children:"Use Python, and you need to use (parts of) eCalc as a dependency"}),"\n",(0,i.jsx)(t.li,{children:'Need access to "inner core functionality" of eCalc'}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{type:"note",children:(0,i.jsx)(t.p,{children:"Python Library is not yet officially available and not recommended to use due to upcoming breaking changes very soon"})})]})}function h(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>r});var i=n(7294);const o={},a=i.createContext(o);function r(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.8c894b14.js b/assets/js/1df93b7f.8c894b14.js new file mode 100644 index 0000000000..59b1f2f6eb --- /dev/null +++ b/assets/js/1df93b7f.8c894b14.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[3237],{9754:(t,u,e)=>{e.r(u),e.d(u,{default:()=>a});e(7294);var n=e(6550),o=e(5893);function a(){return(0,o.jsx)(n.l_,{to:"docs/about/"})}}}]); \ No newline at end of file diff --git a/assets/js/1e7de7fe.c4a8e353.js b/assets/js/1e7de7fe.c4a8e353.js new file mode 100644 index 0000000000..cbb7acd147 --- /dev/null +++ b/assets/js/1e7de7fe.c4a8e353.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[6124],{43:e=>{e.exports=JSON.parse('{"title":"Guides","description":"This section of the documentation lists reference documentations.","slug":"/category/guides","permalink":"/ecalc/docs/category/guides","navigation":{"previous":{"title":"Markdown","permalink":"/ecalc/docs/contribute/documentation-guide/markdown"},"next":{"title":"Git","permalink":"/ecalc/docs/contribute/guides/git"}}}')}}]); \ No newline at end of file diff --git a/assets/js/1f60d0d4.870364a2.js b/assets/js/1f60d0d4.870364a2.js new file mode 100644 index 0000000000..01261dffac --- /dev/null +++ b/assets/js/1f60d0d4.870364a2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[6539],{4587:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>d});var i=t(5893),o=t(1151);const s={title:"Introduction",sidebar_position:1,description:"Introduction to eCalc documentation"},a="Introduction to eCalc\u2122",r={id:"about/index",title:"Introduction",description:"Introduction to eCalc documentation",source:"@site/docs/about/index.md",sourceDirName:"about",slug:"/about/",permalink:"/ecalc/docs/about/",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Introduction",sidebar_position:1,description:"Introduction to eCalc documentation"},sidebar:"about",next:{title:"Getting started",permalink:"/ecalc/docs/about/getting_started/"}},c={},d=[{value:"What is eCalc\u2122?",id:"what-is-ecalc",level:2},{value:"Why should I use eCalc\u2122?",id:"why-should-i-use-ecalc",level:3},{value:"How to use eCalc\u2122?",id:"how-to-use-ecalc",level:3}];function l(e){const n={a:"a",h1:"h1",h2:"h2",h3:"h3",img:"img",p:"p",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"introduction-to-ecalc",children:"Introduction to eCalc\u2122"}),"\n",(0,i.jsx)(n.p,{children:"The eCalc\u2122 technology is being developed by Equinor within the Technology, Digital and Innovation (TDI) business area."}),"\n",(0,i.jsx)(n.h2,{id:"what-is-ecalc",children:"What is eCalc\u2122?"}),"\n",(0,i.jsx)(n.p,{children:"eCalc\u2122 is a software tool for calculation of energy demand and greenhouse gas emissions from oil and gas production and processing. It enables the cross-disciplinary collaboration required to achieve high-quality and transparent energy and GHG emission prognosis and decision support."}),"\n",(0,i.jsx)(n.p,{children:"eCalc\u2122 performs energy and emission calculations by integrating data, knowledge and future plans from different disciplines. This could be production and injection profiles from the reservoir engineer, characteristics of energy consuming equipment units such as gas turbines, compressors and pumps from the facility engineer, and emission factors for different fuels from the sustainability engineer. The main idea is using physical or data-driven models to relate production rates and pressures to the required processing energy and resulting emissions. Integrated bookkeeping for all emission sources is offered."}),"\n",(0,i.jsx)(n.p,{children:"eCalc\u2122 uses a bottom-up approach to give high-quality installation and portfolio level forecasts at the same time as detailed insights about the energy drivers and processing capacities for the individual installation."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{src:t(3676).Z+"",width:"4535",height:"2551"})}),"\n",(0,i.jsx)(n.h3,{id:"why-should-i-use-ecalc",children:"Why should I use eCalc\u2122?"}),"\n",(0,i.jsx)(n.p,{children:"By using eCalc\u2122 you will be able to forecast your energy consumption and emissions with consistency and transparency. You will also be enabled to study the effect on energy demand and emissions of your investment opportunities as well as studying emission reduction measures."}),"\n",(0,i.jsx)(n.h3,{id:"how-to-use-ecalc",children:"How to use eCalc\u2122?"}),"\n",(0,i.jsxs)(n.p,{children:["To use eCalc\u2122 you need to create a model setup of your asset.\nThis is described in the ",(0,i.jsx)(n.a,{href:"/ecalc/docs/about/modelling/",children:"Modelling"})," section."]}),"\n",(0,i.jsxs)(n.p,{children:["Once the model is ready, you can run the eCalc\u2122 calculator. Different user interfaces for the calculator are offered. These are described in detail in the ",(0,i.jsx)(n.a,{href:"/ecalc/docs/about/getting_started/",children:"Getting started"})," section."]})]})}function u(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},3676:(e,n,t)=>{t.d(n,{Z:()=>i});const i=t.p+"assets/images/ecalc_illustration-9c9342f8d3a926d760096a17ccb76556.svg"},1151:(e,n,t)=>{t.d(n,{Z:()=>r,a:()=>a});var i=t(7294);const o={},s=i.createContext(o);function a(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1f7805b6.03fcb1fa.js b/assets/js/1f7805b6.03fcb1fa.js new file mode 100644 index 0000000000..2c423b5cb8 --- /dev/null +++ b/assets/js/1f7805b6.03fcb1fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[2802],{1816:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>s,metadata:()=>l,toc:()=>c});var a=t(5893),r=t(1151);const s={slug:"v8.6-release",title:"v8.6",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:16},i="eCalc",l={id:"changelog/v8-6",title:"v8.6",description:"New Features",source:"@site/docs/changelog/v8-6.md",sourceDirName:"changelog",slug:"/changelog/v8.6-release",permalink:"/ecalc/docs/changelog/v8.6-release",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/v8-6.md",tags:[{label:"release",permalink:"/ecalc/docs/tags/release"},{label:"eCalc",permalink:"/ecalc/docs/tags/e-calc"}],version:"current",sidebarPosition:16,frontMatter:{slug:"v8.6-release",title:"v8.6",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:16},sidebar:"changelog",previous:{title:"v8.5",permalink:"/ecalc/docs/changelog/v8.5-release"},next:{title:"v8.7 (Latest)",permalink:"/ecalc/docs/changelog/v8.7-release"}},o={},c=[{value:"New Features",id:"new-features",level:2},{value:"Fixes",id:"fixes",level:2},{value:"Breaking changes",id:"breaking-changes",level:2}];function d(e){const n={code:"code",h1:"h1",h2:"h2",li:"li",ul:"ul",...(0,r.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"ecalc",children:"eCalc"}),"\n",(0,a.jsx)(n.h2,{id:"new-features",children:"New Features"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Added a ModelInputFailureStatus. If there are errors in the rate or pressure input to a compressor a failure code will be returned in the compressors failure_status (INVALID_RATE_INPUT or INVALID_SUCTION/INTERMEDIATE/DISCHARGE_PRESSURE_INPUT."}),"\n",(0,a.jsxs)(n.li,{children:["Rate type is included in header for csv export. E.g. ",(0,a.jsx)(n.code,{children:"Sm3/sd"})," for streaming day and ",(0,a.jsx)(n.code,{children:"Sm3/cd"})," for calendar day."]}),"\n",(0,a.jsx)(n.li,{children:"Generating generic variable speed compressor charts from input rates/heads has a new and improved algorithm. The new algorithm tends to favour increase in head compared to the previous one. Running old models with this new algorithm may lead to slight changes in the results."}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"fixes",children:"Fixes"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Fixed bug giving small numerical difficulties when calculating maximum standard rate for a simplified compressor train"}),"\n",(0,a.jsx)(n.li,{children:"Ensure that start date and end date in the global time vector is consistent with the requested output frequency. This makes sure that resampling (typically for monthly or yearly reporting) can be done even when the start or end date is outside of the requested reporting frequency (e.g. starting in August when the reporting frquency is yearly), and that the resampling is done without dropping volumes."}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"breaking-changes",children:"Breaking changes"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["Economic details have been deprecated from eCalc. Input data such as ",(0,a.jsx)(n.code,{children:"tax"}),", ",(0,a.jsx)(n.code,{children:"quota"})," and ",(0,a.jsx)(n.code,{children:"price"})," for fuel and emissions will now be ignored, and will hence also no longer be reported. If you have used those in your model, they will be ignored. It will be treated as an error in a future version of eCalc."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>i});var a=t(7294);const r={},s=a.createContext(r);function i(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),a.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/22f0e129.aaea21cc.js b/assets/js/22f0e129.aaea21cc.js new file mode 100644 index 0000000000..45d18bcb4e --- /dev/null +++ b/assets/js/22f0e129.aaea21cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[6893],{3243:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>i,default:()=>E,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var r=n(5893),t=n(1151);const o={},i="MAXIMUM_DISCHARGE_PRESSURE",c={id:"about/references/keywords/MAXIMUM_DISCHARGE_PRESSURE",title:"MAXIMUM_DISCHARGE_PRESSURE",description:"MODELS /",source:"@site/docs/about/references/keywords/MAXIMUM_DISCHARGE_PRESSURE.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/MAXIMUM_DISCHARGE_PRESSURE",permalink:"/ecalc/docs/about/references/keywords/MAXIMUM_DISCHARGE_PRESSURE",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/MAXIMUM_DISCHARGE_PRESSURE.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"LOWER_HEATING_VALUE",permalink:"/ecalc/docs/about/references/keywords/LOWER_HEATING_VALUE"},next:{title:"MAXIMUM_PRESSURE_RATIO_PER_STAGE",permalink:"/ecalc/docs/about/references/keywords/MAXIMUM_PRESSURE_RATIO_PER_STAGE"}},a={},d=[{value:"Description",id:"description",level:2},{value:"Functionality",id:"functionality",level:2},{value:"Format",id:"format",level:2}];function l(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.h1,{id:"maximum_discharge_pressure",children:"MAXIMUM_DISCHARGE_PRESSURE"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"})," /\n",(0,r.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/MAXIMUM_DISCHARGE_PRESSURE",children:"MAXIMUM_DISCHARGE_PRESSURE"})]}),"\n",(0,r.jsx)(s.h2,{id:"description",children:"Description"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.code,{children:"MAXIMUM_DISCHARGE_PRESSURE"})," sets the highest possible discharge pressure that a compressor can deliver.\nIn reality, setting the maximum discharge pressure can be to avoid excessively high pressures which can be a safety concern on an installation."]}),"\n",(0,r.jsx)(s.h2,{id:"functionality",children:"Functionality"}),"\n",(0,r.jsxs)(s.p,{children:["This is an optional setting and is ",(0,r.jsx)(s.strong,{children:"only"})," supported for ",(0,r.jsx)(s.a,{href:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/single_speed_compressor_train_model",children:"SINGLE SPEED COMPRESSORS"}),", and ",(0,r.jsx)(s.strong,{children:"only"})," if the ",(0,r.jsx)(s.code,{children:"PRESSURE_CONTROL"})," is ",(0,r.jsx)(s.code,{children:"DOWNSTREAM_CHOKE"}),"."]}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["If ",(0,r.jsx)(s.code,{children:"MAXIMUM_DISCHARGE_PRESSURE"})," has been defined and if any of the inputted discharge pressures exceeds the maximum value, a ValueError message will be raised."]}),"\n",(0,r.jsxs)(s.li,{children:["If any of the input rates and suction pressures result in a discharge pressure which is above the ",(0,r.jsx)(s.code,{children:"MAXIMUM_DISCHARGE_PRESSURE"}),", the suction pressure will be reduced until the calculations provide a discharge pressure below the maximum value (assuming an upstream choke can handle this)."]}),"\n",(0,r.jsxs)(s.li,{children:["The outlet stream will then be further choked from the ",(0,r.jsx)(s.code,{children:"MAXIMUM_DISCHARGE_PRESSURE"})," to the target discharge pressure using the ",(0,r.jsx)(s.code,{children:"DOWNSTREAM_CHOKE"})," pressure control."]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"format",children:"Format"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: SINGLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: \n PRESSURE_CONTROL: \n MAXIMUM_DISCHARGE_PRESSURE: \n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n ...\n"})})]})}function E(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1151:(e,s,n)=>{n.d(s,{Z:()=>c,a:()=>i});var r=n(7294);const t={},o=r.createContext(t);function i(e){const s=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2781f0ad.52ab570d.js b/assets/js/2781f0ad.52ab570d.js new file mode 100644 index 0000000000..3e86d78577 --- /dev/null +++ b/assets/js/2781f0ad.52ab570d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[3787],{9483:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>t,toc:()=>d});var r=s(5893),a=s(1151);const i={sidebar_position:2,title:"Advanced model",description:"An advanced model using consumer systems and two installations"},l="Advanced model example",t={id:"about/modelling/examples/advanced",title:"Advanced model",description:"An advanced model using consumer systems and two installations",source:"@site/docs/about/modelling/examples/advanced.md",sourceDirName:"about/modelling/examples",slug:"/about/modelling/examples/advanced",permalink:"/ecalc/docs/about/modelling/examples/advanced",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/examples/advanced.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,title:"Advanced model",description:"An advanced model using consumer systems and two installations"},sidebar:"about",previous:{title:"Simple model",permalink:"/ecalc/docs/about/modelling/examples/simple"},next:{title:"Drogon model",permalink:"/ecalc/docs/about/modelling/examples/drogon"}},o={},d=[{value:"YAML model overview",id:"yaml-model-overview",level:2},{value:"TIME_SERIES",id:"time_series",level:2},{value:"FACILITY_INPUTS",id:"facility_inputs",level:2},{value:"FUEL_TYPES",id:"fuel_types",level:2},{value:"MODELS",id:"models",level:2},{value:"VARIABLES",id:"variables",level:2},{value:"INSTALLATIONS",id:"installations",level:2},{value:"Installation A",id:"installation-a",level:3},{value:"Installation B",id:"installation-b",level:3},{value:"ENERGY_USAGE_MODEL",id:"energy_usage_model",level:2},{value:"Full eCalc YAML model",id:"full-ecalc-yaml-model",level:2},{value:"Input files",id:"input-files",level:3}];function E(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",mermaid:"mermaid",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"advanced-model-example",children:"Advanced model example"}),"\n",(0,r.jsxs)(n.p,{children:["This is a model very similar to ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/modelling/examples/simple",children:"Simple example"}),". The main difference is the use of more advanced\nenergy usage models and consumer systems, and the addition of a second installation."]}),"\n",(0,r.jsxs)(n.p,{children:["Both installations exports oil (",(0,r.jsx)(n.code,{children:"OIL_PROD"}),") and gas (",(0,r.jsx)(n.code,{children:"GAS_PROD"}),").\nThe installations emits CO",(0,r.jsx)("sub",{children:"2"})," and CH",(0,r.jsx)("sub",{children:"4"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The following is an example with one installation called ",(0,r.jsx)(n.code,{children:"Installation A"})," and ",(0,r.jsx)(n.code,{children:"Installation B"}),"."]}),"\n",(0,r.jsx)(n.mermaid,{chart:"graph TD;\n Asset(Asset) --\x3e A(Installation A);\n A(Installation A) --\x3e AA(Flare A);\n A --\x3e AD(Generator set A);\n AD --\x3e AE(Base production load A);\n AD --\x3e AF(Gas export compressor A);\n AD --\x3e AG(Produced water reinjection pump A);\n AD --\x3e AH(Sea water injection pump A);\n \n Asset --\x3e B(Installation B);\n B --\x3e BA(Generator set B);\n B --\x3e BD(Gas export compressor B);\n BA --\x3e BC(Base production load B);\n B --\x3e BB(Flare B);\n style A stroke:red;\n style B stroke:red;\n style BC stroke:blue;\n style AE stroke:blue;\n style AF stroke:blue;\n style AG stroke:blue;\n style AH stroke:blue;"}),"\n",(0,r.jsx)(n.p,{children:"The results of a performed characterization of the equipment are listed below:"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Consumer"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Generator set A"}),(0,r.jsx)(n.td,{children:"Generator set"}),(0,r.jsx)(n.td,{children:"Variable fuel consumer with electricity to fuel function"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Base production load A"}),(0,r.jsx)(n.td,{children:"Power consumer"}),(0,r.jsx)(n.td,{children:"Production base load varying depending on a binary condition"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Gas export compressor A"}),(0,r.jsx)(n.td,{children:"Power consumer"}),(0,r.jsx)(n.td,{children:"Variable consumption depending on gas sales rate"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Produced water reinjection pump A"}),(0,r.jsx)(n.td,{children:"Power consumer"}),(0,r.jsx)(n.td,{children:"Variable consumption depending on water production rate and water injection rate. The pump suction pressure is 10 bar and discharge pressure is 200 bar."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Sea water injection pump A"}),(0,r.jsx)(n.td,{children:"Power consumer"}),(0,r.jsx)(n.td,{children:"Variable consumption depending on a complex combination on water injection rate and water production rate"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Flare A"}),(0,r.jsx)(n.td,{children:"Direct fuel consumer"}),(0,r.jsx)(n.td,{children:"Flare A"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Generator set B"}),(0,r.jsx)(n.td,{children:"Generator set"}),(0,r.jsx)(n.td,{children:"Variable fuel consumption with electricity to fuel function"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Base production load B"}),(0,r.jsx)(n.td,{children:"Power consumer"}),(0,r.jsx)(n.td,{children:"Production base load at 7.6 MW"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Gas export compressor B"}),(0,r.jsx)(n.td,{children:"Direct fuel consumer"}),(0,r.jsx)(n.td,{children:"Variable fuel consumption depending on gas sales rate"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Flare B"}),(0,r.jsx)(n.td,{children:"Direct fuel consumer"}),(0,r.jsx)(n.td,{children:"Flare B"})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"yaml-model-overview",children:"YAML model overview"}),"\n",(0,r.jsx)(n.p,{children:"The YAML model consist of these main components:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Time series inputs - ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"})]}),"\n",(0,r.jsxs)(n.li,{children:["Facility characterization input - ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FACILITY_INPUTS",children:"FACILITY_INPUTS"})]}),"\n",(0,r.jsxs)(n.li,{children:["Fuel input - ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FUEL_TYPES",children:"FUEL_TYPES"})]}),"\n",(0,r.jsxs)(n.li,{children:["Model specifications - ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"})]}),"\n",(0,r.jsxs)(n.li,{children:["Model variables - ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/VARIABLES",children:"VARIABLES"})]}),"\n",(0,r.jsxs)(n.li,{children:["Installation topology - ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The YAML setup file looks like this:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="model.yaml"',children:"TIME_SERIES:\n \nFACILITY_INPUTS:\n \nFUEL_TYPES:\n \nVARIABLES:\n \nINSTALLATIONS:\n \n"})}),"\n",(0,r.jsx)(n.p,{children:"We will now replace the placeholders for each of the main keywords above."}),"\n",(0,r.jsx)(n.h2,{id:"time_series",children:"TIME_SERIES"}),"\n",(0,r.jsxs)(n.p,{children:["The reservoir variables, in this case, are found in a CSV (Comma separated file) ",(0,r.jsx)(n.code,{children:"production_data.csv"}),".\nWe give the time-series data a name that can be referenced as variables elsewhere in the form ",(0,r.jsx)(n.code,{children:" : "}),".\nSee ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"})," for further details."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="model.yaml"',children:"TIME_SERIES:\n - NAME: SIM\n TYPE: DEFAULT\n FILE: base_profile.csv\n"})}),"\n",(0,r.jsx)(n.h2,{id:"facility_inputs",children:"FACILITY_INPUTS"}),"\n",(0,r.jsxs)(n.p,{children:["We specify CSV input data for processing equipment using FACILITY_INPUTS. This is used for generatorsets,\ntabulated/sampled models and pump charts. See ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FACILITY_INPUTS",children:"FACILITY_INPUTS"})," for further details."]}),"\n",(0,r.jsxs)(n.p,{children:["Here we define a tabulated genset, a sampled compressor, and a single speed pump chart.\nNote that more complicated energy models are defined under the ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"}),"-keyword."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="model.yaml"',children:"FACILITY_INPUTS:\n - NAME: genset\n FILE: genset.csv\n TYPE: ELECTRICITY2FUEL\n - NAME: gasexp\n FILE: compressor_sampled.csv\n TYPE: COMPRESSOR_TABULAR\n - NAME: pump_chart\n FILE: pump_chart.csv\n TYPE: PUMP_CHART_SINGLE_SPEED\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: M\n EFFICIENCY: PERCENTAGE\n"})}),"\n",(0,r.jsx)(n.h2,{id:"fuel_types",children:"FUEL_TYPES"}),"\n",(0,r.jsxs)(n.p,{children:["In this example there are two ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FUEL_TYPES",children:"FUEL_TYPES"})," - ",(0,r.jsx)(n.code,{children:"fuel_gas"})," and ",(0,r.jsx)(n.code,{children:"bad_fuel_gas"}),".\nThese are used for Installation A and Installation B respectively.\nHere we also define emissions in CO",(0,r.jsx)("sub",{children:"2"})," and CH",(0,r.jsx)("sub",{children:"4"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="model.yaml"',children:"FUEL_TYPES:\n - NAME: fuel_gas\n CATEGORY: FUEL-GAS\n EMISSIONS:\n - NAME: CO2\n FACTOR: 2.20 #kg/Sm3\n - NAME: CH4\n FACTOR: 0.01 #kg/Sm3\n - NAME: bad_fuel_gas\n CATEGORY: FUEL-GAS\n EMISSIONS:\n - NAME: CO2\n FACTOR: 5.0 #kg/Sm3\n - NAME: CH4\n FACTOR: 0.01 #kg/Sm3\n"})}),"\n",(0,r.jsx)(n.h2,{id:"models",children:"MODELS"}),"\n",(0,r.jsxs)(n.p,{children:["This advanced example requires some energy usage models to be defined under the model section. See ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"})," for details."]}),"\n",(0,r.jsx)(n.p,{children:"Here we specify:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Compressor chart based on design points"}),"\n",(0,r.jsx)(n.li,{children:"Compressor chart based on chart data"}),"\n",(0,r.jsx)(n.li,{children:"Medium density fluid"}),"\n",(0,r.jsx)(n.li,{children:"Gas turbine"}),"\n",(0,r.jsx)(n.li,{children:"Simplified compressor train model"}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="model.yaml"',children:"MODELS:\n - NAME: generic_from_design_point_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: GENERIC_FROM_DESIGN_POINT\n POLYTROPIC_EFFICIENCY: 0.75\n DESIGN_RATE: 10000\n DESIGN_HEAD: 80\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: KJ_PER_KG\n EFFICIENCY: FRACTION\n - NAME: predefined_variable_speed_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: M # M or KJ_PER_KG\n EFFICIENCY: FRACTION\n CURVES:\n FILE: compressor_chart.csv\n - NAME: medium_fluid\n TYPE: FLUID\n FLUID_MODEL_TYPE: PREDEFINED\n EOS_MODEL: SRK\n GAS_TYPE: MEDIUM\n - NAME: turbine\n TYPE: TURBINE\n LOWER_HEATING_VALUE: 38 # [MJ/Sm3]\n TURBINE_LOADS: [0, 2.352, 4.589, 6.853, 9.125, 11.399, 13.673, 15.947, 18.223, 20.496, 22.767] # MW\n TURBINE_EFFICIENCIES: [0, 0.138, 0.210, 0.255, 0.286, 0.310, 0.328, 0.342, 0.353, 0.360, 0.362]\n - NAME: simplified_compressor_train_model\n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: medium_fluid\n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: generic_from_design_point_compressor_chart\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: generic_from_design_point_compressor_chart\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: predefined_variable_speed_compressor_chart\n"})}),"\n",(0,r.jsxs)(n.p,{children:["See ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"})," for further details."]}),"\n",(0,r.jsx)(n.h2,{id:"variables",children:"VARIABLES"}),"\n",(0,r.jsxs)(n.p,{children:["To run the model it is recommended to specify ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/VARIABLES",children:"VARIABLES"}),",\ninstead of hard coding values in difference places. This makes it easier to develop, maintain and understand the model\nby allowing descriptive variable names and avoid duplications."]}),"\n",(0,r.jsx)(n.p,{children:"For our model, we specify the following variables:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="model.yaml"',children:"VARIABLES:\n hydrocarbon_export_sm3_per_day:\n VALUE: SIM;OIL_PROD {+} SIM;GAS_PROD {/} 1000\n gas_export_rate_sm3_per_day:\n VALUE: SIM;GAS_PROD\n water_injection_rate:\n VALUE: SIM;WATER_INJ\n gas_export_condition:\n VALUE: SIM;GAS_PROD > 0\n base_production_load_mw:\n VALUE: 7.6 {+} 4.1 {*} (SIM;GAS_LIFT > 0)\n water_injection_condition:\n VALUE: SIM;WATER_PROD >0\n flare_a_fuel_rate_sm3_day:\n 2020-06-01:\n VALUE: 5000\n 2030-01-01:\n VALUE: 2000\n flare_b_fuel_rate_sm3_day:\n 2020-06-01:\n VALUE: 10000\n 2030-01-01:\n VALUE: 7000\n"})}),"\n",(0,r.jsxs)(n.p,{children:["We reference the ",(0,r.jsx)(n.a,{href:"#time_series",children:"TIME_SERIES"})," ",(0,r.jsx)(n.code,{children:"SIM"})," using the column names from the CSV file."]}),"\n",(0,r.jsxs)(n.admonition,{type:"tip",children:[(0,r.jsx)(n.p,{children:"You can use boolean condition such as shown in base_production_load_mw and time varying variables such as shown in\nflare_a_fuel_rate_sm3_day and flare_b_fuel_rate_sm3_day to write simpler models with less duplicated code."}),(0,r.jsx)(n.p,{children:"The base_production_load_mw adds another 4.1 MW when the gas lift injection rate is positive."}),(0,r.jsx)(n.p,{children:"The flare rate changes in year 2030."})]}),"\n",(0,r.jsx)(n.h2,{id:"installations",children:"INSTALLATIONS"}),"\n",(0,r.jsx)(n.p,{children:"An installation is composed of hydrocarbon export, a default fuel for that installation and consumers in the form\nof generatorsets (with electric sub-consumers), and direct fuel consumers."}),"\n",(0,r.jsx)(n.p,{children:"We specify:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"NAME"}),": the installation name"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"HCEXPORT"}),": Hydrocarbon export in Sm",(0,r.jsx)("sup",{children:"3"}),"/day by referring to the variable $var.hydrocarbon_export_sm3_per_day specified under ",(0,r.jsx)(n.a,{href:"#variables",children:"VARIABLES"})," above."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"FUEl"}),": Default fuel specified in ",(0,r.jsx)(n.a,{href:"#fuel_types",children:"FUEL_TYPES"})," above. Note the different fuels used by the two installations."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"CATEGORY"}),": FIXED (installation) category is used to group result data for reporting. See ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/CATEGORY",children:"CATEGORY"})," for details."]}),"\n"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"INSTALLATIONS:\n - NAME: Installation A\n HCEXPORT: $var.hydrocarbon_export_sm3_per_day\n FUEL: fuel_gas\n CATEGORY: FIXED\n GENERATORSETS:\n \n FUELCONSUMERS:\n \n - NAME: Installation B\n HCEXPORT: $var.hydrocarbon_export_sm3_per_day\n FUEL: bad_fuel_gas\n CATEGORY: FIXED\n GENERATORSETS:\n \n FUELCONSUMERS:\n \n"})}),"\n",(0,r.jsx)(n.h3,{id:"installation-a",children:"Installation A"}),"\n",(0,r.jsxs)(n.p,{children:["There is one generator set, ",(0,r.jsx)(n.code,{children:"Generator set A"}),". This has a power to fuel function defined in\n",(0,r.jsx)(n.a,{href:"#facility_inputs",children:"FACILITY_INPUTS"})," with the name ",(0,r.jsx)(n.code,{children:"genset"}),". Further, the consumers getting\npower from the generator set are ",(0,r.jsx)(n.em,{children:"Base production load"}),", ",(0,r.jsx)(n.em,{children:"Gas injection compressor"}),", ",(0,r.jsx)(n.em,{children:"Produced water reinjection pump"}),"\nand ",(0,r.jsx)(n.em,{children:"Sea-water injection pump"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The direct fuel consumers are ",(0,r.jsx)(n.strong,{children:"Flare"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The setup for ",(0,r.jsx)(n.code,{children:"Installation A"})," thus becomes:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Installation A\n HCEXPORT: $var.hydrocarbon_export_sm3_per_day\n FUEL: fuel_gas\n CATEGORY: FIXED\n GENERATORSETS:\n - NAME: Generator set A\n CATEGORY: TURBINE-GENERATOR\n ELECTRICITY2FUEL: genset\n CONSUMERS:\n - NAME: Fixed production loads A\n CATEGORY: FIXED-PRODUCTION-LOAD\n ENERGY_USAGE_MODEL: \n - NAME: Gas export compressors system A\n CATEGORY: COMPRESSOR\n ENERGY_USAGE_MODEL: \n - NAME: Water injection pump system A\n CATEGORY: PUMP\n ENERGY_USAGE_MODEL: \n - NAME: Single pump A\n CATEGORY: PUMP\n ENERGY_USAGE_MODEL: \n FUELCONSUMERS:\n - NAME: Flare A\n CATEGORY: FLARE\n ENERGY_USAGE_MODEL: \n"})}),"\n",(0,r.jsx)(n.h3,{id:"installation-b",children:"Installation B"}),"\n",(0,r.jsxs)(n.p,{children:["There is one generator set, ",(0,r.jsx)(n.code,{children:"Generator set B"}),". This has a power to fuel function defined in\n",(0,r.jsx)(n.a,{href:"#facility_inputs",children:"FACILITY_INPUTS"})," with the name ",(0,r.jsx)(n.code,{children:"genset"}),". Further, the consumer getting\npower from the generator set is ",(0,r.jsx)(n.em,{children:"Base production load"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The direct fuel consumers are ",(0,r.jsx)(n.strong,{children:"Flare"})," and ",(0,r.jsx)(n.strong,{children:"Gas export compressor"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["The setup for ",(0,r.jsx)(n.code,{children:"Installation B"})," thus becomes:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Installation B\n HCEXPORT: $var.hydrocarbon_export_sm3_per_day\n FUEL: bad_fuel_gas\n CATEGORY: FIXED\n GENERATORSETS:\n - NAME: Generator set B\n CATEGORY: TURBINE-GENERATOR\n ELECTRICITY2FUEL: genset\n CONSUMERS:\n - NAME: Fixed production loads B\n CATEGORY: FIXED-PRODUCTION-LOAD\n ENERGY_USAGE_MODEL: \n FUELCONSUMERS:\n - NAME: Flare B\n CATEGORY: FLARE\n ENERGY_USAGE_MODEL: \n - NAME: Gas export compressors B\n CATEGORY: COMPRESSOR\n ENERGY_USAGE_MODEL: \n"})}),"\n",(0,r.jsx)(n.h2,{id:"energy_usage_model",children:"ENERGY_USAGE_MODEL"}),"\n",(0,r.jsxs)(n.p,{children:["We will now fill in the final placeholders with detailed ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY_USAGE_MODEL"}),"s."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Base production loads A"})," has a load of 7.6 MW with additional 4.1 MW when the field gas injection rate is positive:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Fixed production loads A\n CATEGORY: FIXED-PRODUCTION-LOAD\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n LOAD: $var.base_production_load_mw\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Gas export compressor system A"})," is represented by a consumer system of two simplified compressor train models.\nThe system has defined the variable ",(0,r.jsx)(n.a,{href:"#variables",children:"gas_export_rate_sm3_per_day"})," and will run two different\nrate distributions between these two compressor trains. It will first send all rate to the first compressor train\nand nothing to the second ",(0,r.jsx)(n.code,{children:"RATE_FRACTIONS: [1.0, 0.0]"})," and then it will run the same input while distributing equal\nrates to the two compressor trains ",(0,r.jsx)(n.code,{children:"RATE_FRACTIONS: [0.5, 0.5]"}),". The final result will be composed of the first\nsetting that returns a valid result for the compressors.\nSee ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/installations/compressor_models_in_calculations/compressor_system",children:"COMPRESSOR_SYSTEM"})," for further details."]}),"\n",(0,r.jsx)(n.p,{children:"The model compressor model is defined:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Gas export compressors system A\n CATEGORY: COMPRESSOR\n ENERGY_USAGE_MODEL:\n TYPE: COMPRESSOR_SYSTEM\n COMPRESSORS:\n - NAME: train1_A\n COMPRESSOR_MODEL: simplified_compressor_train_model\n - NAME: train2_A\n COMPRESSOR_MODEL: simplified_compressor_train_model\n TOTAL_SYSTEM_RATE: $var.gas_export_rate_sm3_per_day\n OPERATIONAL_SETTINGS:\n - RATE_FRACTIONS: [1.0, 0.0]\n SUCTION_PRESSURE: 20\n DISCHARGE_PRESSURE: 120\n - RATE_FRACTIONS: [0.5, 0.5]\n SUCTION_PRESSURE: 20\n DISCHARGE_PRESSURE: 120\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Water injection pump system A"})," is variable and its energy function is dependent on the field's water\ninjection rate (",(0,r.jsx)(n.code,{children:"WATER_INJ"}),") that is set in the variable ",(0,r.jsx)(n.a,{href:"#variables",children:"water_injection_rate"})," as ",(0,r.jsx)(n.code,{children:"SIM;WATER_INJ"}),".\nThe pump only runs when the variables ",(0,r.jsx)(n.a,{href:"#variables",children:"water_injection_condition"})," evaluates to true as ",(0,r.jsx)(n.code,{children:"SIM;WATER_PROD > 0"}),".\nThis is when the water injection rate is positive. Fluid density, suction pressure and discharge pressure\nis also defined."]}),"\n",(0,r.jsxs)(n.p,{children:["This PUMP_SYSTEM behaves much the same as the COMPRESSOR_SYSTEM above.\nSee ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/installations/pump_models_in_calculations#pump_system-energy-usage-model",children:"PUMP_SYSTEM"})," for further details."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Water injection pump system A\n CATEGORY: PUMP\n ENERGY_USAGE_MODEL:\n TYPE: PUMP_SYSTEM\n PUMPS:\n - NAME: pump1\n CHART: pump_chart\n - NAME: pump2\n CHART: pump_chart\n - NAME: pump3\n CHART: pump_chart\n - NAME: pump4\n CHART: pump_chart\n FLUID_DENSITY: 1026\n TOTAL_SYSTEM_RATE: $var.water_injection_rate\n CONDITION: $var.water_injection_condition\n OPERATIONAL_SETTINGS:\n - RATE_FRACTIONS: [1, 0, 0, 0]\n SUCTION_PRESSURES: [3, 3, 3, 3]\n DISCHARGE_PRESSURES: [200, 200, 200, 200]\n CROSSOVER: [2, 0, 0, 0]\n - RATE_FRACTIONS: [0.5, 0.5, 0, 0]\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n - RATE_FRACTIONS: [0.33, 0.33, 0.34, 0]\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n - RATE_FRACTIONS: [0.25, 0.25, 0.25, 0.25]\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Single pump A"})," has an energy function that is dependent on the seawater injection rate, same as the system above.\nIt uses the pump_chart defined in ",(0,r.jsx)(n.a,{href:"#facility_inputs",children:"FACILITY_INPUTS"})," above."]}),"\n",(0,r.jsx)(n.p,{children:"The pump model is then defined:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Single pump A\n CATEGORY: PUMP\n ENERGY_USAGE_MODEL:\n TYPE: PUMP\n CONDITION: $var.water_injection_condition\n ENERGYFUNCTION: pump_chart\n RATE: 5000\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n FLUID_DENSITY: 1026\n"})}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Flare A"})," is changing on the 1st of July 2020 and 1st of January 2030. Therefore, we need to use a different constant\nfuel consumption value before and after this date. This is done using the variable ",(0,r.jsx)(n.a,{href:"#variables",children:"flare_a_fuel_rate_sm3_day"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The model becomes:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Flare A\n CATEGORY: FLARE\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n FUELRATE: $var.flare_a_fuel_rate_sm3_day\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"Base production loads B"})," has a load of 7.6 :"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Fixed production loads B\n CATEGORY: FIXED-PRODUCTION-LOAD\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n LOAD: 7.6\n"})}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Flare B"})," is changing on the 1st of July 2020 and 1st of January 2030. Therefore, we need to use a different constant\nfuel consumption value before and after this date. This is done using the variable ",(0,r.jsx)(n.a,{href:"#variables",children:"flare_a_fuel_rate_sm3_day"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The model becomes:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Flare B\n CATEGORY: FLARE\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n FUELRATE: $var.flare_b_fuel_rate_sm3_day\n"})}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.code,{children:"Gas export compressors B"})," is a variable fuel consumer whose energy function depends on the field gas production rate (",(0,r.jsx)(n.code,{children:"GAS_PROD"}),") defined\nin the variable ",(0,r.jsx)(n.a,{href:"#variables",children:"gas_export_rate_sm3_per_day"})," as ",(0,r.jsx)(n.code,{children:"SIM;GAS_PROD"}),", and put to the condition ",(0,r.jsx)(n.a,{href:"#variables",children:"gas_export_condition"})," as ",(0,r.jsx)(n.code,{children:"SIM;GAS_PROD > 0"})]}),"\n",(0,r.jsx)(n.p,{children:"The model is specified:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" - NAME: Gas export compressors B\n CATEGORY: COMPRESSOR\n ENERGY_USAGE_MODEL:\n TYPE: COMPRESSOR\n ENERGYFUNCTION: gasexp\n CONDITION: $var.gas_export_condition\n RATE: $var.gas_export_rate_sm3_per_day\n SUCTION_PRESSURE: 20\n DISCHARGE_PRESSURE: 200\n"})}),"\n",(0,r.jsx)(n.h2,{id:"full-ecalc-yaml-model",children:"Full eCalc YAML model"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",metastring:'title="model.yaml"',children:"TIME_SERIES:\n - NAME: SIM\n TYPE: DEFAULT\n FILE: base_profile.csv\n\nFACILITY_INPUTS:\n - NAME: genset\n FILE: genset.csv\n TYPE: ELECTRICITY2FUEL\n - NAME: gasexp\n FILE: compressor_sampled.csv\n TYPE: COMPRESSOR_TABULAR\n - NAME: pump_chart\n FILE: pump_chart.csv\n TYPE: PUMP_CHART_SINGLE_SPEED\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: M\n EFFICIENCY: PERCENTAGE\n\nFUEL_TYPES:\n - NAME: fuel_gas\n CATEGORY: FUEL-GAS\n EMISSIONS:\n - NAME: CO2\n FACTOR: 2.20 #kg/Sm3\n - NAME: CH4\n FACTOR: 0.01 #kg/Sm3\n - NAME: bad_fuel_gas\n CATEGORY: FUEL-GAS\n EMISSIONS:\n - NAME: CO2\n FACTOR: 5.0 #kg/Sm3\n - NAME: CH4\n FACTOR: 0.01 #kg/Sm3\n\nMODELS:\n - NAME: generic_from_design_point_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: GENERIC_FROM_DESIGN_POINT\n POLYTROPIC_EFFICIENCY: 0.75\n DESIGN_RATE: 10000\n DESIGN_HEAD: 80\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: KJ_PER_KG\n EFFICIENCY: FRACTION\n - NAME: predefined_variable_speed_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: M # M or KJ_PER_KG\n EFFICIENCY: FRACTION\n CURVES:\n FILE: compressor_chart.csv\n - NAME: medium_fluid\n TYPE: FLUID\n FLUID_MODEL_TYPE: PREDEFINED\n EOS_MODEL: SRK\n GAS_TYPE: MEDIUM\n - NAME: turbine\n TYPE: TURBINE\n LOWER_HEATING_VALUE: 38 # MJ/Sm3\n TURBINE_LOADS: [0, 2.352, 4.589, 6.853, 9.125, 11.399, 13.673, 15.947, 18.223, 20.496, 22.767] # MW\n TURBINE_EFFICIENCIES: [0, 0.138, 0.210, 0.255, 0.286, 0.310, 0.328, 0.342, 0.353, 0.360, 0.362]\n - NAME: simplified_compressor_train_model\n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: medium_fluid\n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: generic_from_design_point_compressor_chart\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: generic_from_design_point_compressor_chart\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: predefined_variable_speed_compressor_chart\n\nVARIABLES:\n hydrocarbon_export_sm3_per_day:\n VALUE: SIM;OIL_PROD {+} SIM;GAS_PROD {/} 1000\n gas_export_rate_sm3_per_day:\n VALUE: SIM;GAS_PROD\n water_injection_rate:\n VALUE: SIM;WATER_INJ\n gas_export_condition:\n VALUE: SIM;GAS_PROD > 0\n base_production_load_mw:\n VALUE: 7.6 {+} 4.1 {*} (SIM;GAS_LIFT > 0)\n water_injection_condition:\n VALUE: SIM;WATER_PROD >0\n flare_a_fuel_rate_sm3_day:\n 2020-06-01:\n VALUE: 5000\n 2030-01-01:\n VALUE: 2000\n flare_b_fuel_rate_sm3_day:\n 2020-06-01:\n VALUE: 10000\n 2030-01-01:\n VALUE: 7000\n\nINSTALLATIONS:\n - NAME: Installation A\n HCEXPORT: $var.hydrocarbon_export_sm3_per_day\n FUEL: fuel_gas\n CATEGORY: FIXED\n GENERATORSETS:\n - NAME: Generator set A\n CATEGORY: TURBINE-GENERATOR\n ELECTRICITY2FUEL: genset\n CONSUMERS:\n - NAME: Fixed production loads A\n CATEGORY: FIXED-PRODUCTION-LOAD\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n LOAD: $var.base_production_load_mw\n - NAME: Gas export compressors system A\n CATEGORY: COMPRESSOR\n ENERGY_USAGE_MODEL:\n TYPE: COMPRESSOR_SYSTEM\n COMPRESSORS:\n - NAME: train1_A\n COMPRESSOR_MODEL: simplified_compressor_train_model\n - NAME: train2_A\n COMPRESSOR_MODEL: simplified_compressor_train_model\n TOTAL_SYSTEM_RATE: $var.gas_export_rate_sm3_per_day\n OPERATIONAL_SETTINGS:\n - RATE_FRACTIONS: [1.0, 0.0]\n SUCTION_PRESSURE: 20\n DISCHARGE_PRESSURE: 120\n - RATE_FRACTIONS: [0.5, 0.5]\n SUCTION_PRESSURE: 20\n DISCHARGE_PRESSURE: 120\n - NAME: Water injection pump system A\n CATEGORY: PUMP\n ENERGY_USAGE_MODEL:\n TYPE: PUMP_SYSTEM\n PUMPS:\n - NAME: pump1\n CHART: pump_chart\n - NAME: pump2\n CHART: pump_chart\n - NAME: pump3\n CHART: pump_chart\n - NAME: pump4\n CHART: pump_chart\n FLUID_DENSITY: 1026\n TOTAL_SYSTEM_RATE: $var.water_injection_rate\n CONDITION: $var.water_injection_condition\n OPERATIONAL_SETTINGS:\n - RATE_FRACTIONS: [1, 0, 0, 0]\n SUCTION_PRESSURES: [3, 3, 3, 3]\n DISCHARGE_PRESSURES: [200, 200, 200, 200]\n CROSSOVER: [2, 0, 0, 0]\n - RATE_FRACTIONS: [0.5, 0.5, 0, 0]\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n - RATE_FRACTIONS: [0.33, 0.33, 0.34, 0]\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n - RATE_FRACTIONS: [0.25, 0.25, 0.25, 0.25]\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n - NAME: Single pump A\n CATEGORY: PUMP\n ENERGY_USAGE_MODEL:\n TYPE: PUMP\n CONDITION: $var.water_injection_condition\n ENERGYFUNCTION: pump_chart\n RATE: 5000\n SUCTION_PRESSURE: 3\n DISCHARGE_PRESSURE: 200\n FLUID_DENSITY: 1026\n FUELCONSUMERS:\n - NAME: Flare A\n CATEGORY: FLARE\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n FUELRATE: $var.flare_a_fuel_rate_sm3_day\n\n - NAME: Installation B\n HCEXPORT: $var.hydrocarbon_export_sm3_per_day\n FUEL: bad_fuel_gas\n CATEGORY: FIXED\n GENERATORSETS:\n - NAME: Generator set B\n CATEGORY: TURBINE-GENERATOR\n ELECTRICITY2FUEL: genset\n CONSUMERS:\n - NAME: Fixed production loads B\n CATEGORY: FIXED-PRODUCTION-LOAD\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n LOAD: 7.6\n FUELCONSUMERS:\n - NAME: Flare B\n CATEGORY: FLARE\n ENERGY_USAGE_MODEL:\n TYPE: DIRECT\n FUELRATE: $var.flare_b_fuel_rate_sm3_day\n - NAME: Gas export compressors B\n CATEGORY: COMPRESSOR\n ENERGY_USAGE_MODEL:\n TYPE: COMPRESSOR\n ENERGYFUNCTION: gasexp\n CONDITION: $var.gas_export_condition\n RATE: $var.gas_export_rate_sm3_per_day\n SUCTION_PRESSURE: 20\n DISCHARGE_PRESSURE: 200\n"})}),"\n",(0,r.jsx)(n.h3,{id:"input-files",children:"Input files"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",metastring:'title="compressor_chart.csv"',children:"RATE, HEAD, EFFICIENCY, SPEED\n# [m3/h], [m], [frac], [rpm]\n3000, 8500, 0.72, 7500\n3500, 8000, 0.75, 7500\n4000, 7500, 0.74, 7500\n4500, 6500, 0.70, 7500\n4100, 16500, 0.72, 10500\n4600, 16000, 0.73, 10500\n5000, 15500, 0.74, 10500\n5500, 14500, 0.74, 10500\n6000, 13500, 0.72, 10500\n6500, 12000, 0.70, 10500\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",metastring:'title="compressor_sampled.csv"',children:"RATE, FUEL\n0, 0\n0.01, 100\n10, 500\n20, 1200\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",metastring:'title="genset.csv"',children:"POWER, FUEL\n# [MW], [Sm3/d]\n0, 0\n0.1, 75000\n10, 80000\n20, 100000\n50, 500000\n100, 1000000\n\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",metastring:'title="pump_chart.csv"',children:"RATE, HEAD, EFFICIENCY, SPEED\n# [m3/h], [m], [%], [rpm] \n250, 2350, 50, 10000\n300, 2300, 55, 10000\n350, 2250, 60, 10000\n400, 2200, 70, 10000\n450, 2150, 75, 10000\n500, 2100, 80, 10000\n550, 2050, 75, 10000\n600, 2000, 70, 10000\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",metastring:'title="base_profile.csv"',children:"DATE, OIL_PROD, WATER_PROD, GAS_PROD, WATER_INJ, GAS_LIFT\n01.01.2020, 1000, 20000, 4000000, 30000, 1200000\n01.01.2021, 1000, 20000, 4000000, 30000, 1200000\n01.01.2022, 1000, 20000, 4000000, 30000, 1200000\n01.01.2023, 2500, 21000, 4000000, 30000, 1200000\n01.01.2024, 3000, 22000, 4500000, 28000, 1300000\n01.01.2025, 3500, 23000, 5000000, 26000, 1350000\n01.01.2026, 4000, 24000, 5500000, 25000, 1400000\n01.01.2027, 4000, 25000, 6000000, 24000, 1400000\n01.01.2028, 4000, 20000, 6000000, 23000, 1400000\n01.01.2029, 5000, 20000, 5500000, 22000, 1350000\n01.01.2030, 9000, 20000, 5000000, 21000, 1300000\n01.01.2031, 5000, 20000, 3000000, 22000, 1300000\n01.01.2032, 4000, 22100, 3000000, 23000, 2000000\n01.01.2033, 4000, 22100, 3000000, 23000, 2000000\n01.01.2034, 1200, 25000, 1000000, 21000, 2000000\n01.01.2035, 1100, 25000, 1000000, 20000, 1500000\n01.01.2036, 1000, 22000, 500000, 18000, 1400000\n01.01.2037, 900, 20000, 500000, 17000, 1400000\n01.01.2038, 800, 18000, 500000, 17000, 1400000\n01.01.2039, 700, 18000, 200000, 17000, 1400000\n01.01.2040, 600, 10000, 200000, 15000, 1400000\n01.01.2041, 0, 0, 0, 0, 0\n"})})]})}function c(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(E,{...e})}):E(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>t,a:()=>l});var r=s(7294);const a={},i=r.createContext(a);function l(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/29367e59.11dc59ec.js b/assets/js/29367e59.11dc59ec.js new file mode 100644 index 0000000000..3d0c636f95 --- /dev/null +++ b/assets/js/29367e59.11dc59ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[3173],{3918:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>s,metadata:()=>i,toc:()=>E});var r=n(5893),o=n(1151);const s={},c="INFLUENCE_TIME_VECTOR",i={id:"about/references/keywords/INFLUENCE_TIME_VECTOR",title:"INFLUENCE_TIME_VECTOR",description:"TIMESERIES /",source:"@site/docs/about/references/keywords/INFLUENCE_TIME_VECTOR.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/INFLUENCE_TIME_VECTOR",permalink:"/ecalc/docs/about/references/keywords/INFLUENCE_TIME_VECTOR",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/INFLUENCE_TIME_VECTOR.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"HEAD_MARGIN",permalink:"/ecalc/docs/about/references/keywords/HEAD_MARGIN"},next:{title:"INLET_TEMPERATURE",permalink:"/ecalc/docs/about/references/keywords/INLET_TEMPERATURE"}},a={},E=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function d(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"influence_time_vector",children:"INFLUENCE_TIME_VECTOR"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"})," /\n",(0,r.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/INFLUENCE_TIME_VECTOR",children:"INFLUENCE_TIME_VECTOR"})]}),"\n",(0,r.jsx)(t.h2,{id:"description",children:"Description"}),"\n",(0,r.jsx)(t.p,{children:"Determines if the time steps in this input source will contribute to the global time vector."}),"\n",(0,r.jsxs)(t.p,{children:["If not specified, this will be defaulted to ",(0,r.jsx)(t.code,{children:"TRUE"}),".\nIt is a requirement that at least one time vector has an ",(0,r.jsx)(t.code,{children:"INFLUENCE_TIME_VECTOR"})," of ",(0,r.jsx)(t.code,{children:"TRUE"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"format",children:"Format"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-yaml",children:"\nINFLUENCE_TIME_VECTOR: \n"})}),"\n",(0,r.jsx)(t.h2,{id:"example",children:"Example"}),"\n",(0,r.jsxs)(t.p,{children:["See the ",(0,r.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"})," ",(0,r.jsx)(t.code,{children:"time_series_format"}),"."]})]})}function l(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>i,a:()=>c});var r=n(7294);const o={},s=r.createContext(o);function c(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/295f424e.6a44f23f.js b/assets/js/295f424e.6a44f23f.js new file mode 100644 index 0000000000..5f3b7558e4 --- /dev/null +++ b/assets/js/295f424e.6a44f23f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[5133],{9579:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>s,metadata:()=>d,toc:()=>i});var t=n(5893),c=n(1151);const s={},o="DIRECT_EMITTERS",d={id:"about/references/keywords/DIRECT_EMITTERS",title:"DIRECT_EMITTERS",description:"Deprecated from eCalc v8.7 (changed name to VENTING_EMITTERS).",source:"@site/docs/about/references/keywords/DIRECT_EMITTERS.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/DIRECT_EMITTERS",permalink:"/ecalc/docs/about/references/keywords/DIRECT_EMITTERS",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/DIRECT_EMITTERS.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"CURVES",permalink:"/ecalc/docs/about/references/keywords/CURVES"},next:{title:"DISCHARGE_PRESSURE",permalink:"/ecalc/docs/about/references/keywords/DISCHARGE_PRESSURE"}},a={},i=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function E(e){const r={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,c.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.h1,{id:"direct_emitters",children:"DIRECT_EMITTERS"}),"\n",(0,t.jsx)("span",{className:"major-change-deprecation",children:(0,t.jsxs)(r.p,{children:["Deprecated from eCalc v8.7 (changed name to ",(0,t.jsx)("strong",{children:"VENTING_EMITTERS"}),")."]})}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})," /\n",(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/DIRECT_EMITTERS",children:"DIRECT_EMITTERS"})]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Required"}),(0,t.jsx)(r.th,{children:"Child of"}),(0,t.jsx)(r.th,{children:"Children/Options"})]})}),(0,t.jsx)(r.tbody,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Yes"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"INSTALLATIONS"})}),(0,t.jsxs)(r.td,{children:[(0,t.jsx)(r.code,{children:"NAME"})," ",(0,t.jsx)("br",{})," ",(0,t.jsx)(r.code,{children:"EMISSION_NAME"})," ",(0,t.jsx)("br",{})," ",(0,t.jsx)(r.code,{children:"CATEGORY"})," ",(0,t.jsx)("br",{})," ",(0,t.jsx)(r.code,{children:"EMITTER_MODEL"})]})]})})]}),"\n",(0,t.jsx)(r.admonition,{type:"important",children:(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["eCalc version 8.7: DIRECT_EMITTERS are renamed to ",(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/VENTING_EMITTERS",children:"VENTING_EMITTERS"}),"."]}),"\n",(0,t.jsx)(r.li,{children:"eCalc version 8.6 and earlier: Use DIRECT_EMITTERS as before."}),"\n"]})}),"\n",(0,t.jsx)(r.h2,{id:"description",children:"Description"}),"\n",(0,t.jsxs)(r.p,{children:["The ",(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/DIRECT_EMITTERS",children:"DIRECT_EMITTERS"})," keyword covers the direct emissions on the installation\nthat are not consuming energy. The attributes ",(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/NAME",children:"NAME"}),",\n",(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/EMISSION_NAME",children:"EMISSION_NAME"}),", ",(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/CATEGORY",children:"CATEGORY"})," and\n",(0,t.jsx)(r.a,{href:"/ecalc/docs/about/references/keywords/EMITTER_MODEL",children:"EMITTER_MODEL"})," are required."]}),"\n",(0,t.jsx)(r.h2,{id:"format",children:"Format"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-yaml",children:"DIRECT_EMITTERS:\n - NAME: \n EMISSION_NAME: \n CATEGORY: \n EMITTER_MODEL: \n"})}),"\n",(0,t.jsx)(r.h2,{id:"example",children:"Example"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-yaml",children:"DIRECT_EMITTERS:\n - NAME: SomeDirectEmitter\n EMISSION_NAME: CH4\n CATEGORY: COLD-VENTING-FUGITIVE\n EMITTER_MODEL:\n \n ...\n - NAME: SomeOtherDirectEmitter\n EMISSION_NAME: C2H6\n CATEGORY: COLD-VENTING-FUGITIVE\n EMITTER_MODEL:\n \n"})})]})}function l(e={}){const{wrapper:r}={...(0,c.a)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(E,{...e})}):E(e)}},1151:(e,r,n)=>{n.d(r,{Z:()=>d,a:()=>o});var t=n(7294);const c={},s=t.createContext(c);function o(e){const r=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:o(e.components),t.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/29d00dd8.3e3bc7f1.js b/assets/js/29d00dd8.3e3bc7f1.js new file mode 100644 index 0000000000..313150e9e7 --- /dev/null +++ b/assets/js/29d00dd8.3e3bc7f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[8084],{4890:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>a,frontMatter:()=>o,metadata:()=>l,toc:()=>i});var s=r(5893),c=r(1151);const o={},t="ENERGYFUNCTION",l={id:"about/references/keywords/ENERGYFUNCTION",title:"ENERGYFUNCTION",description:"INSTALLATIONS /",source:"@site/docs/about/references/keywords/ENERGYFUNCTION.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/ENERGYFUNCTION",permalink:"/ecalc/docs/about/references/keywords/ENERGYFUNCTION",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/ENERGYFUNCTION.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"END",permalink:"/ecalc/docs/about/references/keywords/END"},next:{title:"ENERGY_USAGE_MODEL",permalink:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL"}},d={},i=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function E(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,c.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"energyfunction",children:"ENERGYFUNCTION"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})," /\n[...] /\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY_USAGE_MODEL"})," /\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/ENERGYFUNCTION",children:"ENERGYFUNCTION"})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Required"}),(0,s.jsx)(n.th,{children:"Child of"}),(0,s.jsx)(n.th,{children:"Children/Options"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"No"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"ENERGY_USAGE_MODEL"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"None"})})]})})]}),"\n",(0,s.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,s.jsxs)(n.p,{children:["This refers to an energy function model defined in either ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FACILITY_INPUTS",children:"FACILITY INPUTS"})," or in ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"})," used for ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY USAGE MODEL"}),".\nThe following attributes can be utilised:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/installations/compressor_models_in_calculations/",children:"COMPRESSOR MODEL"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/installations/pump_models_in_calculations",children:"PUMP ENERGY USAGE MODEL"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"TABULATED ENERGY USAGE MODEL"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"ENERGY_USAGE_MODEL:\n TYPE: \n ENERGYFUNCTION: \n"})}),"\n",(0,s.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"\nFACILITY_INPUTS:\n - NAME: compressor_model_reference\n TYPE: COMPRESSOR_TABULAR\n FILE: \n\n...\n\nINSTALLATIONS:\n - NAME: InstallationA\n CATEGORY: FIXED\n FUEL: fuel_gas\n GENERATORSETS:\n - NAME: gensetA\n CATEGORY: TURBINE-GENERATOR\n ELECTRICITY2FUEL: genset\n CONSUMERS:\n - NAME: compressor\n CATEGORY: COMPRESSOR\n ENERGY_USAGE_MODEL:\n TYPE: COMPRESSOR\n ENERGYFUNCTION: compressor_model_reference\n ...\n\n FUELCONSUMERS:\n - NAME: compressor\n CATEGORY: GAS-DRIVEN-COMPRESSOR \n ENERGY_USAGE_MODEL:\n TYPE: COMPRESSOR\n ENERGYFUNCTION: compressor_model_reference\n ...\n\n"})})]})}function a(e={}){const{wrapper:n}={...(0,c.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(E,{...e})}):E(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>l,a:()=>t});var s=r(7294);const c={},o=s.createContext(c);function t(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:t(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2b15d891.3bb3344d.js b/assets/js/2b15d891.3bb3344d.js new file mode 100644 index 0000000000..90ece57c16 --- /dev/null +++ b/assets/js/2b15d891.3bb3344d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[2225],{1015:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>t,metadata:()=>a,toc:()=>i});var s=r(5893),c=r(1151);const t={},o="NAME",a={id:"about/references/keywords/NAME",title:"NAME",description:"[...] /",source:"@site/docs/about/references/keywords/NAME.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/NAME",permalink:"/ecalc/docs/about/references/keywords/NAME",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/NAME.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"MODELS",permalink:"/ecalc/docs/about/references/keywords/MODELS"},next:{title:"OPERATIONAL_SETTINGS",permalink:"/ecalc/docs/about/references/keywords/OPERATIONAL_SETTINGS"}},d={},i=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,c.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"name",children:"NAME"}),"\n",(0,s.jsxs)(n.p,{children:["[...] /\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/NAME",children:"NAME"})]}),"\n",(0,s.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,s.jsxs)(n.p,{children:["Name of an entity.\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/CATEGORY",children:"CATEGORY"})," names must be written with uppercase letters - see example below:"]}),"\n",(0,s.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"NAME: \n"})}),"\n",(0,s.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,s.jsxs)(n.p,{children:["Usage in ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/EMISSIONS",children:"EMISSIONS"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"EMISSIONS:\n - NAME: CO2\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Usage in ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FUEL_TYPES",children:"FUEL_TYPES"})," and ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/CATEGORY",children:"CATEGORIES"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"FUEL_TYPES:\n - NAME: diesel_turbine\n CATEGORY: DIESEL\n"})})]})}function u(e={}){const{wrapper:n}={...(0,c.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>a,a:()=>o});var s=r(7294);const c={},t=s.createContext(c);function o(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:o(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2b2be347.20f2acd0.js b/assets/js/2b2be347.20f2acd0.js new file mode 100644 index 0000000000..6ca52d34aa --- /dev/null +++ b/assets/js/2b2be347.20f2acd0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[1404],{7387:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=s(5893),l=s(1151);const r={slug:"v7-0-release",title:"v7.0",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:3},o="eCalc v7.0",a={id:"changelog/v7-0",title:"v7.0",description:"Features",source:"@site/docs/changelog/v7-0.md",sourceDirName:"changelog",slug:"/changelog/v7-0-release",permalink:"/ecalc/docs/changelog/v7-0-release",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/v7-0.md",tags:[{label:"release",permalink:"/ecalc/docs/tags/release"},{label:"eCalc",permalink:"/ecalc/docs/tags/e-calc"}],version:"current",sidebarPosition:3,frontMatter:{slug:"v7-0-release",title:"v7.0",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:3},sidebar:"changelog",previous:{title:"---",permalink:"/ecalc/docs/changelog/separator"},next:{title:"v7.1",permalink:"/ecalc/docs/changelog/v7-1-release"}},t={},d=[{value:"Features",id:"features",level:2},{value:"Fixes",id:"fixes",level:2},{value:"CLI",id:"cli",level:2}];function c(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,l.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"ecalc-v70",children:"eCalc v7.0"}),"\n",(0,i.jsx)(n.h2,{id:"features",children:(0,i.jsx)(n.em,{children:"Features"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Add VARIABLE_SPEED_COMPRESSOR_TRAIN_MULTIPLE_STREAMS_AND_PRESSURES compressor model. See ",(0,i.jsx)(n.code,{children:"Variable speed compressor train model with multiple streams and pressures"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Add GERG model to FLUID model as EOS_MODEL. Now available GERG_PR and GERG_SRK."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Add UNITS: EFFICIENCY to compressor charts and pump charts. Plus additional input unit support."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Add support for both water and H2O in fluid composition."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Add POWER_ADJUSTMENT_CONSTANT for all applicable models to adjust power/energy usage with a constant factor."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Add water as allowed ",(0,i.jsx)(n.code,{children:"FLUID model"})," component."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Improve models documentation"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Deprecation: ",(0,i.jsx)(n.a,{href:"../about/references/keywords/CONDITION",children:"CONDITION"})," is now a single expression instead of list."]}),"\n",(0,i.jsxs)(n.p,{children:["If you previously had a list it is recommended to use the ",(0,i.jsx)(n.a,{href:"../about/references/keywords/CONDITIONS",children:"CONDITIONS"})," keyword instead. This will become a requirement in a future release."]}),"\n",(0,i.jsxs)(n.p,{children:["Alternatively you could merge the conditions to a single expression. This is what is done automatically when using the ",(0,i.jsx)(n.a,{href:"../about/references/keywords/CONDITIONS",children:"CONDITIONS"})," keyword."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:" # This is new\n CONDITION: expression1 {*} expression2 \n # This is old\n CONDITION: \n # This is old\n - expression1 \n # This is old\n - expression2 \n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"fixes",children:(0,i.jsx)(n.em,{children:"Fixes"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Handle date columns year as year and not timestamps"}),"\n",(0,i.jsx)(n.li,{children:"Handle suppressed ecalc errors and division by zero"}),"\n",(0,i.jsx)(n.li,{children:"Handle timeseries with one entry"}),"\n",(0,i.jsx)(n.li,{children:"Handle poorly formatted csv data with tabs, multiple spaces and mixed float/integers."}),"\n",(0,i.jsx)(n.li,{children:"Handle 0 regularity"}),"\n",(0,i.jsx)(n.li,{children:"Handle emission intensity when only one timestep"}),"\n",(0,i.jsx)(n.li,{children:"Changed emission intensity to NaN when hydrocarbon export is zero"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"cli",children:"CLI"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"Feature"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Major revision of CLI for future development."}),"\n",(0,i.jsx)(n.li,{children:"Add Flow diagram support"}),"\n",(0,i.jsx)(n.li,{children:"Improve logging, warnings and error messages. DEBUG should now give a lot of information."}),"\n",(0,i.jsx)(n.li,{children:"Add support for list in 'CONDITION' keyword"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"Fix"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Fix issue when using dates in ELECTRICITY2FUEL"}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,l.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>o});var i=s(7294);const l={},r=i.createContext(l);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2c19a041.c111a5f0.js b/assets/js/2c19a041.c111a5f0.js new file mode 100644 index 0000000000..86fb14f972 --- /dev/null +++ b/assets/js/2c19a041.c111a5f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[4507],{7509:(e,s,a)=>{a.r(s),a.d(s,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>d});var n=a(5893),r=a(1151);const t={},l="REGULARITY",i={id:"about/references/keywords/REGULARITY",title:"REGULARITY",description:"INSTALLATIONS /",source:"@site/docs/about/references/keywords/REGULARITY.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/REGULARITY",permalink:"/ecalc/docs/about/references/keywords/REGULARITY",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/REGULARITY.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"RATE_PER_STREAM",permalink:"/ecalc/docs/about/references/keywords/RATE_PER_STREAM"},next:{title:"STAGES",permalink:"/ecalc/docs/about/references/keywords/STAGES"}},c={},d=[{value:"Description",id:"description",level:2},{value:"Use in a DIRECT ENERGY USAGE MODEL
",id:"use-in-a-direct-energy-usage-model",level:3},{value:"Reporting",id:"reporting",level:3},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2},{value:"Constant regularity",id:"constant-regularity",level:3},{value:"Regularity from time series data",id:"regularity-from-time-series-data",level:3},{value:"Special: Combining calendar and stream day rates",id:"special-combining-calendar-and-stream-day-rates",level:3}];function m(e){const s={a:"a",admonition:"admonition",annotation:"annotation",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",math:"math",mfrac:"mfrac",mi:"mi",mo:"mo",mrow:"mrow",mtext:"mtext",p:"p",pre:"pre",semantics:"semantics",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h1,{id:"regularity",children:"REGULARITY"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})," /\n",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/REGULARITY",children:"REGULARITY"})]}),"\n",(0,n.jsx)(s.h2,{id:"description",children:"Description"}),"\n",(0,n.jsxs)(s.p,{children:["In eCalc\u2122, consumers in an ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY USAGE MODEL"})," are evaluated with the actual rate passing through them whilst\nthey are in operation. This actual rate is referred to as ",(0,n.jsx)(s.em,{children:"stream day (sd) rates"}),".\nDespite the consumers being evaluated with stream day rates, input files are often given in ",(0,n.jsx)(s.em,{children:"calender day (cd) rates"}),". As expected from this definition, ",(0,n.jsx)(s.code,{children:"REGULARITY"})," is closely related to the production efficiency (PE) of a facility."]}),"\n",(0,n.jsx)(s.p,{children:"Stream day rates can be expressed as:"}),"\n",(0,n.jsx)(s.span,{className:"katex-display",children:(0,n.jsxs)(s.span,{className:"katex",children:[(0,n.jsx)(s.span,{className:"katex-mathml",children:(0,n.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block",children:(0,n.jsxs)(s.semantics,{children:[(0,n.jsxs)(s.mrow,{children:[(0,n.jsx)(s.mi,{children:"s"}),(0,n.jsx)(s.mi,{children:"t"}),(0,n.jsx)(s.mi,{children:"r"}),(0,n.jsx)(s.mi,{children:"e"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"m"}),(0,n.jsx)(s.mtext,{children:"\xa0"}),(0,n.jsx)(s.mi,{children:"d"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"y"}),(0,n.jsx)(s.mtext,{children:"\xa0"}),(0,n.jsx)(s.mi,{children:"r"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"t"}),(0,n.jsx)(s.mi,{children:"e"}),(0,n.jsx)(s.mo,{children:"="}),(0,n.jsxs)(s.mfrac,{children:[(0,n.jsxs)(s.mrow,{children:[(0,n.jsx)(s.mi,{children:"c"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"l"}),(0,n.jsx)(s.mi,{children:"e"}),(0,n.jsx)(s.mi,{children:"n"}),(0,n.jsx)(s.mi,{children:"d"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"r"}),(0,n.jsx)(s.mtext,{children:"\xa0"}),(0,n.jsx)(s.mi,{children:"d"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"y"}),(0,n.jsx)(s.mtext,{children:"\xa0"}),(0,n.jsx)(s.mi,{children:"r"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"t"}),(0,n.jsx)(s.mi,{children:"e"})]}),(0,n.jsxs)(s.mrow,{children:[(0,n.jsx)(s.mi,{children:"r"}),(0,n.jsx)(s.mi,{children:"e"}),(0,n.jsx)(s.mi,{children:"g"}),(0,n.jsx)(s.mi,{children:"u"}),(0,n.jsx)(s.mi,{children:"l"}),(0,n.jsx)(s.mi,{children:"a"}),(0,n.jsx)(s.mi,{children:"r"}),(0,n.jsx)(s.mi,{children:"i"}),(0,n.jsx)(s.mi,{children:"t"}),(0,n.jsx)(s.mi,{children:"y"})]})]})]}),(0,n.jsx)(s.annotation,{encoding:"application/x-tex",children:"stream\\ day\\ rate = \\frac{calendar\\ day\\ rate}{regularity}"})]})})}),(0,n.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(s.span,{className:"base",children:[(0,n.jsx)(s.span,{className:"strut",style:{height:"0.8889em",verticalAlign:"-0.1944em"}}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"s"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"re"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"am"}),(0,n.jsx)(s.span,{className:"mspace",children:"\xa0"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"y"}),(0,n.jsx)(s.span,{className:"mspace",children:"\xa0"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"r"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(s.span,{className:"mrel",children:"="}),(0,n.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(s.span,{className:"base",children:[(0,n.jsx)(s.span,{className:"strut",style:{height:"2.2519em",verticalAlign:"-0.8804em"}}),(0,n.jsxs)(s.span,{className:"mord",children:[(0,n.jsx)(s.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(s.span,{className:"mfrac",children:(0,n.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(s.span,{className:"vlist-r",children:[(0,n.jsxs)(s.span,{className:"vlist",style:{height:"1.3714em"},children:[(0,n.jsxs)(s.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(s.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(s.span,{className:"mord",children:[(0,n.jsx)(s.span,{className:"mord mathnormal",children:"re"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"gu"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.01968em"},children:"l"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"r"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"y"})]})]}),(0,n.jsxs)(s.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(s.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(s.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(s.span,{style:{top:"-3.677em"},children:[(0,n.jsx)(s.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(s.span,{className:"mord",children:[(0,n.jsx)(s.span,{className:"mord mathnormal",children:"c"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.01968em"},children:"l"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"n"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"r"}),(0,n.jsx)(s.span,{className:"mspace",children:"\xa0"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"y"}),(0,n.jsx)(s.span,{className:"mspace",children:"\xa0"}),(0,n.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"r"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(s.span,{className:"mord mathnormal",children:"e"})]})]})]}),(0,n.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(s.span,{className:"vlist-r",children:(0,n.jsx)(s.span,{className:"vlist",style:{height:"0.8804em"},children:(0,n.jsx)(s.span,{})})})]})}),(0,n.jsx)(s.span,{className:"mclose nulldelimiter"})]})]})]})]})}),"\n",(0,n.jsxs)(s.p,{children:["To give an example of this, an input file may have a gas export rate for a whole year. However, this rate will take into account any downtime for the facility. So in reality, this ",(0,n.jsx)(s.em,{children:"calender day rate"})," is not the rate the compressor will process whilst in operation that year. This will rather be the higher ",(0,n.jsx)(s.em,{children:"stream day rate"}),"."]}),"\n",(0,n.jsx)(s.p,{children:"An example of this can be seen in the figure below:"}),"\n",(0,n.jsx)(s.p,{children:(0,n.jsx)(s.img,{alt:"Regularity work flow example",src:a(3173).Z+"",width:"1013",height:"110"})}),"\n",(0,n.jsxs)(s.p,{children:["For detailed modeling, it might be a better option to increase the resolution in the ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"}),"\ninputs to capture down periods and variations in conditions rather than using regularity."]}),"\n",(0,n.jsx)(s.admonition,{type:"note",children:(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"Rates from reservoir simulations may be both stream day and calendar day."}),"\n",(0,n.jsxs)(s.li,{children:["If eCalc\u2122 is used\nwithout specifying ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/REGULARITY",children:"REGULARITY"}),", then regularity will default to 1."]}),"\n",(0,n.jsxs)(s.li,{children:["All user defined input rates used in ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY_USAGE_MODEL"})," are ",(0,n.jsx)(s.strong,{children:"assumed to be calendar day rates"}),"."]}),"\n"]})}),"\n",(0,n.jsxs)(s.h3,{id:"use-in-a-direct-energy-usage-model",children:["Use in a ",(0,n.jsx)(s.code,{children:"DIRECT ENERGY USAGE MODEL"})]}),"\n",(0,n.jsxs)(s.p,{children:["It should be noted that not all ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY USAGE MODELS"})," are evaluated with ",(0,n.jsx)(s.em,{children:"stream day rates"}),".\n",(0,n.jsx)(s.code,{children:"DIRECT ENERGY USAGE MODELS"})," can be specified with the keyword ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/CONSUMPTION_RATE_TYPE",children:"CONSUMPTION_RATE_TYPE"})," - where either ",(0,n.jsx)(s.code,{children:"CALENDAR_DAY"})," or ",(0,n.jsx)(s.code,{children:"STREAM_DAY"})," can be specified.\nNote that the default input rate is ",(0,n.jsx)(s.code,{children:"STREAM_DAY"})," rate - the opposite of the other models."]}),"\n",(0,n.jsxs)(s.p,{children:["For further details on stream day rate vs. calendar day rate, see ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/CONSUMPTION_RATE_TYPE",children:"CONSUMPTION_RATE_TYPE"}),"."]}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{style:{textAlign:"center"},children:"ENERGY_USAGE_MODEL Type"}),(0,n.jsx)(s.th,{style:{textAlign:"center"},children:"Can use CONSUMPTION_RATE_TYPE?"}),(0,n.jsx)(s.th,{style:{textAlign:"center"},children:"Evaluated rate type"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"DIRECT"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"\u2611"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"Stream/calendar day"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"COMPRESSOR"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"\u2610"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"Stream day"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"PUMP"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"\u2610"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"Stream day"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"COMPRESSOR_SYSTEM"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"\u2610"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"Stream day"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"PUMP_SYSTEM"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"\u2610"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"Stream day"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"TABULATED"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"\u2610"}),(0,n.jsx)(s.td,{style:{textAlign:"center"},children:"Stream day"})]})]})]}),"\n",(0,n.jsx)(s.h3,{id:"reporting",children:"Reporting"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsx)(s.li,{children:"All fuel rates are reported in calendar days."}),"\n",(0,n.jsx)(s.li,{children:"All power and volume rates results are reported in stream day rates. Note that the volume rates are only present in the .json file."}),"\n"]}),"\n",(0,n.jsx)(s.p,{children:"The reason for reporting calendar day rate is to account for potential downtime for process units, i.e. some units may not run all the time throughout a year due to different reasons. Typically all process units have some downtime, and regularity is\non average something closer to 0.99 over a longer period such as a year."}),"\n",(0,n.jsx)(s.h2,{id:"format",children:"Format"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"REGULARITY"})," can be specified by a single number or as an expression."]}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"INSTALLATIONS:\n - NAME:\n CATEGORY: \n REGULARITY: \n"})}),"\n",(0,n.jsx)(s.h2,{id:"example",children:"Example"}),"\n",(0,n.jsx)(s.h3,{id:"constant-regularity",children:"Constant regularity"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"REGULARITY: 0.95\n"})}),"\n",(0,n.jsx)(s.h3,{id:"regularity-from-time-series-data",children:"Regularity from time series data"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"REGULARITY: SIM1;REGULARITY\n"})}),"\n",(0,n.jsx)(s.h3,{id:"special-combining-calendar-and-stream-day-rates",children:"Special: Combining calendar and stream day rates"}),"\n",(0,n.jsxs)(s.p,{children:["If there is a need to combine stream day and calendar day rates in an expression,\n(or to use a stream day rate from a ",(0,n.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"})," source), one can manually do\nwhat is necessary to obtain calendar day rates by dividing by regularity."]}),"\n",(0,n.jsxs)(s.p,{children:["For example, combining a calendar day rate (",(0,n.jsx)(s.code,{children:"SIM2;GAS_PROD_A"}),") with stream day rate\n(",(0,n.jsx)(s.code,{children:"SIM1;GAS_PROD_B"}),") on an installation with a fixed regularity of 0.95 can be done like:"]}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-yaml",children:"RATE: SIM2:GAS_PROD_A {+} SIM1;GAS_PROD_B {*} 0.95\n"})})]})}function h(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},3173:(e,s,a)=>{a.d(s,{Z:()=>n});const n=a.p+"assets/images/regularity-3e43516a1e0246a2e125d4980006b137.png"},1151:(e,s,a)=>{a.d(s,{Z:()=>i,a:()=>l});var n=a(7294);const r={},t=n.createContext(r);function l(e){const s=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),n.createElement(t.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2c73e373.897a2d57.js b/assets/js/2c73e373.897a2d57.js new file mode 100644 index 0000000000..3462f9ba4a --- /dev/null +++ b/assets/js/2c73e373.897a2d57.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[2655],{2498:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>m,frontMatter:()=>i,metadata:()=>c,toc:()=>a});var o=t(5893),s=t(1151);const i={},r="Conventional Commits",c={id:"contribute/guides/conventional-commits",title:"Conventional Commits",description:"Git commits are required to follow conventional commits.",source:"@site/docs/contribute/guides/02-conventional-commits.md",sourceDirName:"contribute/guides",slug:"/contribute/guides/conventional-commits",permalink:"/ecalc/docs/contribute/guides/conventional-commits",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/contribute/guides/02-conventional-commits.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"contribute",previous:{title:"Git",permalink:"/ecalc/docs/contribute/guides/git"}},d={},a=[];function l(e){const n={a:"a",code:"code",h1:"h1",p:"p",pre:"pre",strong:"strong",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"conventional-commits",children:"Conventional Commits"}),"\n",(0,o.jsxs)(n.p,{children:["Git commits are required to follow ",(0,o.jsx)(n.a,{href:"https://www.conventionalcommits.org/en/v1.0.0/",children:"conventional commits"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"The message should be structured like this:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:" [optional scope]: \n\n[optional body]\n\n[optional footer(s)]\n"})}),"\n",(0,o.jsxs)(n.p,{children:["The type can be one of these types: ",(0,o.jsx)(n.strong,{children:"feat"}),", ",(0,o.jsx)(n.strong,{children:"fix"}),", ",(0,o.jsx)(n.strong,{children:"build"}),", ",(0,o.jsx)(n.strong,{children:"ci"}),", ",(0,o.jsx)(n.strong,{children:"docs"}),", ",(0,o.jsx)(n.strong,{children:"style"}),", ",(0,o.jsx)(n.strong,{children:"refactor"}),", ",(0,o.jsx)(n.strong,{children:"test"}),", and ",(0,o.jsx)(n.strong,{children:"chore"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["The description should be lower-case for the first letter. For description of optional parts, please refer to the\n",(0,o.jsx)(n.a,{href:"https://www.conventionalcommits.org/en/v1.0.0/",children:"conventional Commits Docs"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"Here are some simple example conventional commits:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"feat: implement new awesome feature\n"})}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"docs: add developer guidelines\n"})}),"\n",(0,o.jsx)(n.p,{children:"A more advanced example:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"fix: prevent racing of requests\n\nIntroduce a request id and a reference to latest request. Dismiss\nincoming responses other than from latest request.\n\nRemove timeouts which were used to mitigate the racing issue but are\nobsolete now.\n\nReviewed-by: Z\nRefs: #123\n"})})]})}function m(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>r});var o=t(7294);const s={},i=o.createContext(s);function r(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2ce3b5da.7103e5f5.js b/assets/js/2ce3b5da.7103e5f5.js new file mode 100644 index 0000000000..2fb0c18ed7 --- /dev/null +++ b/assets/js/2ce3b5da.7103e5f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[9050],{806:(e,s,o)=>{o.r(s),o.d(s,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>n,metadata:()=>a,toc:()=>d});var r=o(5893),t=o(1151);const n={title:"Variable speed compressor train",sidebar_position:3},i=void 0,a={id:"about/modelling/setup/models/compressor_modelling/compressor_models_types/variable_speed_compressor_train_model",title:"Variable speed compressor train",description:"In this model all compressors in the train have the same speed, and the model is build on a forward model of",source:"@site/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/variable_speed_compressor_train_model.md",sourceDirName:"about/modelling/setup/models/compressor_modelling/compressor_models_types",slug:"/about/modelling/setup/models/compressor_modelling/compressor_models_types/variable_speed_compressor_train_model",permalink:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/variable_speed_compressor_train_model",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/variable_speed_compressor_train_model.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Variable speed compressor train",sidebar_position:3},sidebar:"about",previous:{title:"Simplified variable speed compressor train",permalink:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/simplified_variable_speed_compressor_train_model"},next:{title:"Variable speed compressor train model with multiple streams and pressures",permalink:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/variable_speed_compressor_train_model_with_multiple_streams_and_pressures"}},l={},d=[];function c(e){const s={a:"a",code:"code",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.p,{children:"In this model all compressors in the train have the same speed, and the model is build on a forward model of\nthe fluid properties/state where speed is a parameter. Then the speed is iterated until the discharge pressure of the\noutlet is equal to the requested discharge pressure."}),"\n",(0,r.jsxs)(s.p,{children:["This model only supports ",(0,r.jsx)(s.code,{children:"User defined variable speed compressor chart"}),"."]}),"\n",(0,r.jsxs)(s.p,{children:["In addition, a ",(0,r.jsx)(s.a,{href:"/ecalc/docs/about/modelling/setup/models/fluid_model",children:"FLUID MODEL"})," must be specified."]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"Control mechanisms"})}),"\n",(0,r.jsx)(s.p,{children:"The variable speed comporessor train model has the following automatic control mechanisms:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Antisurge control:"})," When the flowrate is too low, given the suction and discharge pressures, eCalc will use automatic anti-surge control. The use of the anti-surge valve (ASV) is mimicked by increasing the total flow through the compressor, until the head is at the surge line (minimum flow curve) of the compressor chart."]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Speed increase below minimum speed:"})," If a rate/head point is below the compressor chart (below minimum speed), the speed is automatically increased to the minimum speed curve."]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Stonewall speed increase:"})," When the flowrate is too high, given the suction and discharge pressures, eCalc will automatically increase the speed to meet the stonewall (maximum flow line) of the compressor chart. To achieve the requested discharge pressure, the outlet stream is choked. This control mechanism can be turned off, for cases where a downstream choke valve does not exist."]}),"\n"]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.img,{src:o(4117).Z+"",width:"730",height:"457"}),"\n",(0,r.jsx)(s.strong,{children:"Format"})]}),"\n",(0,r.jsxs)(s.p,{children:["The model is defined under the main keyword ",(0,r.jsx)(s.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"})," in the format"]}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: \n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n CONTROL_MARGIN: \n PRESSURE_DROP_AHEAD_OF_STAGE: \n CONTROL_MARGIN_UNIT: \n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n CONTROL_MARGIN: \n PRESSURE_DROP_AHEAD_OF_STAGE: \n CONTROL_MARGIN_UNIT: \n - ... and so forth for each stage in the train\n POWER_ADJUSTMENT_CONSTANT: \n MAXIMUM_POWER: \n CALCULATE_MAX_RATE: \n PRESSURE_CONTROL: \n"})})]})}function m(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},4117:(e,s,o)=>{o.d(s,{Z:()=>r});const r=o.p+"assets/images/control_mech_variable_speed-91a2c845dc627195fee373c1c63d952d.PNG"},1151:(e,s,o)=>{o.d(s,{Z:()=>a,a:()=>i});var r=o(7294);const t={},n=r.createContext(t);function i(e){const s=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(n.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2cedaf2f.77a54e69.js b/assets/js/2cedaf2f.77a54e69.js new file mode 100644 index 0000000000..b5c72d88f0 --- /dev/null +++ b/assets/js/2cedaf2f.77a54e69.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[5408],{4877:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>l});var o=n(5893),r=n(1151);const t={title:"Generic Workflow",sidebar_position:1,description:"Generic workflow"},a=void 0,s={id:"about/modelling/workflow/generic_workflow",title:"Generic Workflow",description:"Generic workflow",source:"@site/docs/about/modelling/workflow/generic_workflow.md",sourceDirName:"about/modelling/workflow",slug:"/about/modelling/workflow/generic_workflow",permalink:"/ecalc/docs/about/modelling/workflow/generic_workflow",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/workflow/generic_workflow.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Generic Workflow",sidebar_position:1,description:"Generic workflow"},sidebar:"about",previous:{title:"eCalc\u2122 Workflow",permalink:"/ecalc/docs/about/modelling/workflow/"},next:{title:"Examples",permalink:"/ecalc/docs/about/modelling/examples/"}},d={},l=[{value:"Simplified Process Flow Diagram",id:"simplified-process-flow-diagram",level:2},{value:"Workflow",id:"workflow",level:2},{value:"Workflow Explanation",id:"workflow-explanation",level:2},{value:"Required Subsurface Profiles",id:"required-subsurface-profiles",level:3},{value:"Facility Information",id:"facility-information",level:3},{value:"Constant Power Loads",id:"constant-power-loads",level:4},{value:"Additional Information",id:"additional-information",level:4},{value:"Consumer Information",id:"consumer-information",level:3},{value:"Generator Set",id:"generator-set",level:4},{value:"Compressor Curves",id:"compressor-curves",level:4},{value:"Validation",id:"validation",level:3},{value:"Calibration",id:"calibration",level:3}];function c(e){const i={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",mermaid:"mermaid",p:"p",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.h2,{id:"simplified-process-flow-diagram",children:"Simplified Process Flow Diagram"}),"\n",(0,o.jsxs)(i.p,{children:["The image below illustrates a simplified process flow diagram for a generic offshore oil and gas facility. Each unit included in this diagram can be modelled with the use of eCalc.\nThe ",(0,o.jsx)(i.a,{href:"#workflow",children:"workflow"})," below will outline what is necessary to obtain for each step. In addition, there are some accompanied ",(0,o.jsx)(i.a,{href:"#workflow-explanation",children:"explanations"})," to the workflow."]}),"\n",(0,o.jsx)(i.p,{children:(0,o.jsx)(i.img,{src:n(15).Z+"",width:"5863",height:"4444"})}),"\n",(0,o.jsx)(i.h2,{id:"workflow",children:"Workflow"}),"\n",(0,o.jsx)(i.mermaid,{chart:' flowchart TD;\n subgraph ide1 ["`**Required Subsurface Profiles [All in Sm3/d]**`"]\n ide1_A[Oil Produced];\n ide1_B[Gas Produced];\n ide1_C[Water Produced];\n ide1_D[Gas Injected];\n ide1_E[Water Injected];\n end\n subgraph ide2 ["`**Facility Information Needed**`"]\n\n ide2_A[[Power Generation System]] --\x3e ide2_A_1([Gas Turbines]);\n ide2_A_1 --\x3e ide2_A_2(["`Number of Gas Turbines `"]);\n ide2_A_2 --\x3e ide2_A_3(["`Maximum capacity per generator and spinning reserve`"]);\n \n ide2_B[["Water Injection System"]] --\x3e ide2_B_1(["`Suction Pressure`"]);\n ide2_B_1 --\x3e ide2_B_2(["`Discharge Pressure`"]);\n ide2_B_2 --\x3e ide2_B_3(["`Injected Water Density`"]);\n ide2_B_3 --\x3e ide2_B_4(["`Maximum capacity per pump`"]);\n \n ide2_D[[Gas Compression System]] --\x3e ide2_D_1(["`Export Compressor`"]);\n ide2_D --\x3e ide2_D_1_1(["`Re-Injection Compressor`"]);\n ide2_D_1 --\x3e ide2_D_2(["`Suction Pressure per compressor`"]);\n ide2_D_1_1 --\x3eide2_D_2\n ide2_D_2 --\x3e ide2_D_3(["`Discharge Pressure per compressor`"]);\n ide2_D_3 --\x3e ide2_D_4(["`Suction Temperature per compressor`"]);\n ide2_C[["Constant Power Loads"]] --\x3e ide2_C_1(["`Base Load`"]);\n ide2_C_1 --\x3e ide2_C_2(["`Oil Export Pumps`"]);\n ide2_C_2 --\x3e ide2_C_3(["`Gas Recompressor`"])\n \n ide2_E[[Additional Emissions]] --\x3e ide2_E_1([Flaring]);\n ide2_E_1 --\x3e ide2_E_2(["`Electrical Submersible Pumps (ESP)`"])\n ide2_E_2 --\x3e ide2_E_3(["`Drilling rigs`"])\n \n end\n\n subgraph ide3 ["`**Consumer Data Needed**`"]\n\n ide3_A[[Generator Set]]--\x3e ide3_A_1(["`Fuel vs Power relationship. Linear lines relating fuel and power`"]);\n ide3_A_1 --\x3e ide3_A_2(["`Generating switching. At max capacity of the generator, impose another generate on the existing`"]);\n \n ide3_B[[Compressors]] --\x3e ide3_B_1(["`Variable/single speed drive`"]);\n ide3_B_1 --\x3e ide3_B_2{Available charts?};\n ide3_B_2 -. yes .-> ide3_B_4(["`Use suppliers compressor chart (head vs flow, efficiency vs flow)`"]);\n ide3_B_2 -. no .-> ide3_B_3(["`Use generic chart functionality`"]);\n \n ide3_C[[Water Injectors]] --\x3e ide3_C_1(["`Variable/single speed drive`"]);\n ide3_C_1 --\x3e ide3_C_2{Available charts?};\n ide3_C_2 -. yes .-> ide3_C_4(["`Use suppliers pump chart (head vs flow, efficiency vs flow)`"]);\n ide3_C_2 -. no .-> ide3_C_3(["`Generate synthetic charts using expected head and flow ranges`"]);\n\n end\n\n subgraph ide4 ["`**Validation**`"]\n\n ide4_A{"Invalid data?"} \n\n ide4_A -. yes .-> ide4_A_1{"`Invalid Compressors?`"};\n ide4_A_1 -. yes .-> ide4_A_1_1(["`Either head or rate is too high`"]);\n ide4_A_1_1 --\x3e ide4_A_1_2(["`Plot operational points and adjust charts to fit historical data`"]);\n \n ide4_A -. yes .-> ide4_A_3{"`Invalid Pumps?`"};\n ide4_A_3 -. yes .-> ide4_A_3_1(["`Either head or rate is too high`"]);\n ide4_A_3_1 --\x3e ide4_A_3_2(["`Plot operational points and adjust charts to fit historical data`"]);\n \n ide4_A -. yes .-> ide4_A_4{"`Invalid Generator Set?`"};\n ide4_A_4 -. yes .-> ide4_A_4_1(["`Check maximum and minimum facility power consumption values are within the range of the specified generator set`"]);\n ide4_A_4_1 --\x3e ide4_A_4_2(["`Adjust generator set`"]);\n\n end\n\n subgraph ide5 ["`Calibration`"]\n\n ide5_A["`Calibration`"] --\x3e ide5_A_1(["`Compare measured power against eCalc power`"]) ;\n ide5_A_1 --\x3e ide5_A_2{"`Do they correlate`"}\n ide5_A_2 -. yes .-> ide5_A_3_1{"`Are all points valid?`"};\n ide5_A_3_1 -. yes .-> ide5_A_3_2(["`No further calibration needed`"])\n ide5_A_2 -. no .-> ide5_A_2_1(["`Consider using POWERLOSSFACTOR to adjust modelled to measured power`"])\n ide5_A_2_1 --\x3e ide5_A_3_1\n ide5_A_4_1(["`Plot operational points on the same figure as the performance chart`"]) --\x3e ide5_A_4_2(["`Alter the head vs flow curves (using fan law theory)`"])\n ide5_A_4_2 --\x3e ide5_A_1\n ide5_A_3_1 -. no .-> ide5_A_4_1\n end\n \n ide1 ~~~ ide2\n ide2 ~~~ ide3\n ide3 ~~~ ide4\n ide4 ~~~ ide5'}),"\n",(0,o.jsx)(i.h2,{id:"workflow-explanation",children:"Workflow Explanation"}),"\n",(0,o.jsx)(i.h3,{id:"required-subsurface-profiles",children:"Required Subsurface Profiles"}),"\n",(0,o.jsxs)(i.p,{children:["All subsurface profiles must be in Sm",(0,o.jsx)("sup",{children:"3"}),"/day. This data must be inputted as a ",(0,o.jsx)(i.code,{children:"TIME-SERIES"})," and references to how it is used in the facility or by a relevant consumer."]}),"\n",(0,o.jsx)(i.h3,{id:"facility-information",children:"Facility Information"}),"\n",(0,o.jsx)(i.h4,{id:"constant-power-loads",children:"Constant Power Loads"}),"\n",(0,o.jsx)(i.p,{children:"To simplify certain models, there are some common assumptions made. Here are some examples:"}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.strong,{children:"Base Load"}),': As eCalc\u2122 is not simulating the whole facility there are often energy consumers that are not modelled.\nTypically these energy consumers relate to things such as the energy consumption of living quarters and are often constant loads.\nThese smaller constant loads are then grouped into a larger term, called the "baseload". This is assumed to be constant and independent of the production rate of the facility.']}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.strong,{children:"Recompressor"}),": The main function of a recompressor is to compressor gas from separator pressures back up to the inlet separator pressure.\nThese compressors are often smaller and have little fluctuation in their load.\nThus, to simplify modelling, these recompressors are often modelled as constant loads. And at times, are included within the facility's base load"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.strong,{children:"Oil Export Pumps"}),": As eCalc\u2122 does not model oil pumps, these are often modelled as constant loads or modelled with a table (that relates oil rate to power consumption). The method in which they are modelled depends from facility to facility"]}),"\n"]}),"\n",(0,o.jsx)(i.h4,{id:"additional-information",children:"Additional Information"}),"\n",(0,o.jsx)(i.p,{children:"Any emissions that do not fall within the defined categories can still be considered for a given platform. For example, if there are drilling activities, an additional fuel type can be specified and related to the fuel consumption of a drilling rig."}),"\n",(0,o.jsx)(i.h3,{id:"consumer-information",children:"Consumer Information"}),"\n",(0,o.jsx)(i.h4,{id:"generator-set",children:"Generator Set"}),"\n",(0,o.jsx)(i.p,{children:'As eCalc\u2122 does not indepthly model gas turbine generators, alternative methods are used.\nHere, fuel consumed and power generated is related in tabular form. These are typically linear relationships, and if more than one generator is used, "generator switching" is modelled by adding another generator curve on top of the existing.'}),"\n",(0,o.jsx)(i.p,{children:"This means that the facility will operate in the most efficient manner, i.e. meaning that if one generator will satisfy the power demand, only one generator will always be used."}),"\n",(0,o.jsx)(i.h4,{id:"compressor-curves",children:"Compressor Curves"}),"\n",(0,o.jsx)(i.p,{children:"eCalc\u2122 has generic compressor curve functionality which can be used when compressor curves are not available.\nHowever, if a manufactor compressor chart is available, it is always recommended to use this over a generic chart.\nThe generic compressor curves, use the assumption of constant polytropic efficiency, which is only a good assumption if the compressor is running near the design points."}),"\n",(0,o.jsx)(i.h3,{id:"validation",children:"Validation"}),"\n",(0,o.jsx)(i.p,{children:"Checking whether an eCalc\u2122 model is valid or not, is an essential task. If a model is not valid, this means that input requirements set by the user are not being fulfilled, or that some consumers are giving unrealistic solutions."}),"\n",(0,o.jsx)(i.p,{children:"Validity can be checked by consumer, and there are often specific reasons why certain consumers are invalid. For example:"}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.strong,{children:"Compressors and Pumps"}),": It is common that either too high a head or rate value is specified. This means that the invalid point is outside the limits of the performance chart. To determine the issue, it is recommended that the operational points (Head, and actual flowrate) are plotted together with the chart."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.strong,{children:"Generator Set"}),": The most common issue here is that the amount of power required is higher than the maximum value in the utilised genset."]}),"\n"]}),"\n",(0,o.jsx)(i.h3,{id:"calibration",children:"Calibration"}),"\n",(0,o.jsx)(i.p,{children:"The term calibration in eCalc\u2122 often refers to the history matching of the facility. Essentially, real operational data is compared against the eCalc\u2122 model results. If they do not correlate various changes are made to the model."}),"\n",(0,o.jsxs)(i.p,{children:["The main workflow with this would be to match every individual consumer, e.g. each pump and compressor. After that, it is the recommended to compare on the facility level (e.g. total power consumed or total fuel used), then various adjustments can be made.\nThese adjustments can mean changes to the base load, shifting the compressor curves, or simply by using a ",(0,o.jsx)(i.a,{href:"/ecalc/docs/about/references/keywords/POWERLOSSFACTOR",children:"POWERLOSSFACTOR"}),"."]})]})}function h(e={}){const{wrapper:i}={...(0,r.a)(),...e.components};return i?(0,o.jsx)(i,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},15:(e,i,n)=>{n.d(i,{Z:()=>o});const o=n.p+"assets/images/simple_facility_pfd-ad59578d69ea3d3267f646b9d8141822.jpg"},1151:(e,i,n)=>{n.d(i,{Z:()=>s,a:()=>a});var o=n(7294);const r={},t=o.createContext(r);function a(e){const i=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function s(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(t.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2df92a48.5f0f22e6.js b/assets/js/2df92a48.5f0f22e6.js new file mode 100644 index 0000000000..535b6764ca --- /dev/null +++ b/assets/js/2df92a48.5f0f22e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[3596],{9134:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var n=s(5893),r=s(1151);const o={},c="FUEL_TYPES",a={id:"about/references/keywords/FUEL_TYPES",title:"FUEL_TYPES",description:"FUELTYPES",source:"@site/docs/about/references/keywords/FUEL_TYPES.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/FUEL_TYPES",permalink:"/ecalc/docs/about/references/keywords/FUEL_TYPES",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/FUEL_TYPES.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"FUELRATE",permalink:"/ecalc/docs/about/references/keywords/FUELRATE"},next:{title:"GENERATORSETS",permalink:"/ecalc/docs/about/references/keywords/GENERATORSETS"}},i={},d=[{value:"Description",id:"description",level:2}];function u(e){const t={a:"a",h1:"h1",h2:"h2",p:"p",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"fuel_types",children:"FUEL_TYPES"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/FUEL_TYPES",children:"FUEL_TYPES"})}),"\n",(0,n.jsx)(t.h2,{id:"description",children:"Description"}),"\n",(0,n.jsxs)(t.p,{children:["This part of the setup specifies the various fuel types and associated emissions\nused in the model. Each fuel type is specified in a list and the defined fuels can later be referred to the\n",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})," part of the setup by its name."]}),"\n",(0,n.jsxs)(t.p,{children:["The use of fuel can lead to one or more emission types, specified in ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/EMISSIONS",children:"EMISSIONS"}),".\nYou can optionally specify a ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/CATEGORY",children:"CATEGORY"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["See ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/modelling/setup/fuel_types",children:"FUEL TYPES"})," for more details about usage."]})]})}function l(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1151:(e,t,s)=>{s.d(t,{Z:()=>a,a:()=>c});var n=s(7294);const r={},o=n.createContext(r);function c(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2f04f592.bf49cec0.js b/assets/js/2f04f592.bf49cec0.js new file mode 100644 index 0000000000..8c991cf5ed --- /dev/null +++ b/assets/js/2f04f592.bf49cec0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[7495],{2787:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>c,metadata:()=>s,toc:()=>i});var n=a(5893),o=a(1151);const c={slug:"separator",title:"---",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:2},r=void 0,s={id:"changelog/separator",title:"---",description:"",source:"@site/docs/changelog/separator.md",sourceDirName:"changelog",slug:"/changelog/separator",permalink:"/ecalc/docs/changelog/separator",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/separator.md",tags:[{label:"release",permalink:"/ecalc/docs/tags/release"},{label:"eCalc",permalink:"/ecalc/docs/tags/e-calc"}],version:"current",sidebarPosition:2,frontMatter:{slug:"separator",title:"---",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:2},sidebar:"changelog",previous:{title:"Next",permalink:"/ecalc/docs/changelog/latest"},next:{title:"v7.0",permalink:"/ecalc/docs/changelog/v7-0-release"}},l={},i=[];function u(e){return(0,n.jsx)(n.Fragment,{})}function d(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u()}},1151:(e,t,a)=>{a.d(t,{Z:()=>s,a:()=>r});var n=a(7294);const o={},c=n.createContext(o);function r(e){const t=n.useContext(c);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3261da49.279e9591.js b/assets/js/3261da49.279e9591.js new file mode 100644 index 0000000000..8586ae1409 --- /dev/null +++ b/assets/js/3261da49.279e9591.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[3091],{9333:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=t(5893),r=t(1151);const i={},o="INTERPOLATION_TYPE",c={id:"about/references/keywords/INTERPOLATION_TYPE",title:"INTERPOLATION_TYPE",description:"TIMESERIES /",source:"@site/docs/about/references/keywords/INTERPOLATION_TYPE.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/INTERPOLATION_TYPE",permalink:"/ecalc/docs/about/references/keywords/INTERPOLATION_TYPE",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/INTERPOLATION_TYPE.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"INSTALLATIONS",permalink:"/ecalc/docs/about/references/keywords/INSTALLATIONS"},next:{title:"INTERSTAGE_CONTROL_PRESSURE",permalink:"/ecalc/docs/about/references/keywords/INTERSTAGE_CONTROL_PRESSURE"}},a={},d=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Example",id:"example",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"interpolation_type",children:"INTERPOLATION_TYPE"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"})," /\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INTERPOLATION_TYPE",children:"INTERPOLATION_TYPE"})]}),"\n",(0,s.jsxs)(n.p,{children:["New in ",(0,s.jsx)(n.strong,{children:"v8.1"}),", previously known as ",(0,s.jsx)(n.code,{children:"RATE_INTERPOLATION_TYPE"})," that was renamed to ",(0,s.jsx)(n.code,{children:"INTERPOLATION_TYPE"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,s.jsxs)(n.admonition,{title:"Caution",type:"caution",children:[(0,s.jsxs)(n.p,{children:["Only valid for CSV data of source ",(0,s.jsx)(n.code,{children:"MISCELLANEOUS"}),". For ",(0,s.jsx)(n.code,{children:"TIME_SERIES"})," of ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/TYPE",children:"TYPE"}),"\n",(0,s.jsx)(n.code,{children:"DEFAULT"})," the keyword is not allowed as input. The following applies:"]}),(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"MISCELLANEOUS: Interpolation type is mandatory."}),"\n",(0,s.jsxs)(n.li,{children:["DEFAULT: Interpolation type not allowed. Default ",(0,s.jsx)(n.code,{children:"RIGHT"})," is used."]}),"\n"]})]}),"\n",(0,s.jsx)(n.admonition,{title:"Caution",type:"caution",children:(0,s.jsxs)(n.p,{children:["Different data types may require different types of interpolation. While reservoir rates are\ntypically interpolated ",(0,s.jsx)(n.code,{children:"RIGHT"})," or ",(0,s.jsx)(n.code,{children:"LEFT"}),", other data such as pressure is often interpolated\nlinearly (",(0,s.jsx)(n.code,{children:"LINEAR"}),"). Data that should be interpolated differently must be specified in\ndifferent input files, as it is not possible to have multiple interpolation types for vectors\nwithin the same file."]})}),"\n",(0,s.jsxs)(n.p,{children:["Rates are given at defined time steps in the data source but are in essence valid for a time\ninterval. The ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INTERPOLATION_TYPE",children:"INTERPOLATION_TYPE"}),"\nwill determine how rates are interpolated between the given time steps."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"LEFT"}),": The rate given at the current time step is defining the rate in the time interval between the current and\nprevious time step. This is in data science also known as backwards filling of missing values."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"RIGHT"}),": The rate given at the current time step is defining the rate in the time interval between the current and\nnext time step. This is in data science also known as forward filling of missing values."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"LINEAR"}),": The rate will be linearly interpolated between the time steps."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The plot below shows how the different choices for ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INTERPOLATION_TYPE",children:"INTERPOLATION_TYPE"})," works in practice."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:t(1856).Z+"",width:"512",height:"384"})}),"\n",(0,s.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"INTERPOLATION_TYPE: \n"})}),"\n",(0,s.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INTERPOLATION_TYPE",children:"INTERPOLATION_TYPE"})," has to be specified if\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/TYPE",children:"TYPE"})," is set to ",(0,s.jsx)(n.code,{children:"MISCELLANEOUS"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INTERPOLATION_TYPE",children:"INTERPOLATION_TYPE"})," can not be specified if ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/TYPE",children:"TYPE"})," is set to ",(0,s.jsx)(n.code,{children:"DEFAULT"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,s.jsxs)(n.p,{children:["See the ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/TIME_SERIES",children:"TIME_SERIES"})," ",(0,s.jsx)(n.code,{children:"time_series_format"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1856:(e,n,t)=>{t.d(n,{Z:()=>s});const s=t.p+"assets/images/interpolation_plot-d4eee4126032e046bf374ef66ceb9946.png"},1151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>o});var s=t(7294);const r={},i=s.createContext(r);function o(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/33498b04.0fa0d93a.js b/assets/js/33498b04.0fa0d93a.js new file mode 100644 index 0000000000..fd3eb1e22f --- /dev/null +++ b/assets/js/33498b04.0fa0d93a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[381],{4180:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>c,frontMatter:()=>i,metadata:()=>a,toc:()=>m});var r=s(5893),o=s(1151);const i={title:"Simplified variable speed compressor train",sidebar_position:2},t=void 0,a={id:"about/modelling/setup/models/compressor_modelling/compressor_models_types/simplified_variable_speed_compressor_train_model",title:"Simplified variable speed compressor train",description:"The simplified variable speed compressor train model is a model of a compressor train where the inter stage pressures",source:"@site/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/simplified_variable_speed_compressor_train_model.md",sourceDirName:"about/modelling/setup/models/compressor_modelling/compressor_models_types",slug:"/about/modelling/setup/models/compressor_modelling/compressor_models_types/simplified_variable_speed_compressor_train_model",permalink:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/simplified_variable_speed_compressor_train_model",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/simplified_variable_speed_compressor_train_model.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Simplified variable speed compressor train",sidebar_position:2},sidebar:"about",previous:{title:"Single speed compressor train",permalink:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/single_speed_compressor_train_model"},next:{title:"Variable speed compressor train",permalink:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_models_types/variable_speed_compressor_train_model"}},d={},m=[{value:"Format",id:"format",level:2},{value:"Simplified compressor train model with known compressor stages",id:"simplified-compressor-train-model-with-known-compressor-stages",level:3},{value:"Simplified compressor train model with unknown number of compressor stages",id:"simplified-compressor-train-model-with-unknown-number-of-compressor-stages",level:3},{value:"Examples",id:"examples",level:2},{value:"A (single) compressor with a user-defined variable speed compressor chart and fluid composition",id:"a-single-compressor-with-a-user-defined-variable-speed-compressor-chart-and-fluid-composition",level:3},{value:"A (single) turbine driven compressor with a generic compressor chart with design point and predefined composition",id:"a-single-turbine-driven-compressor-with-a-generic-compressor-chart-with-design-point-and-predefined-composition",level:3},{value:"A compressor train with two stages where the first stage has unknown spec while the second has a predefined chart",id:"a-compressor-train-with-two-stages-where-the-first-stage-has-unknown-spec-while-the-second-has-a-predefined-chart",level:3},{value:"A compressor train where the number of stages are unknown",id:"a-compressor-train-where-the-number-of-stages-are-unknown",level:3}];function l(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"The simplified variable speed compressor train model is a model of a compressor train where the inter stage pressures\nare assumed based on an assumption of equal pressure fractions for each stage. Based on this, the compressor work is\ncalculated independently for each compressor as if it was a standalone compressor, neglecting that they are in fact on\nthe same shaft and thus have a common speed."}),"\n",(0,r.jsxs)(n.p,{children:["This model supports both ",(0,r.jsx)(n.code,{children:"user defined compressor charts"})," and\n",(0,r.jsx)(n.code,{children:"generic compressor charts"}),". See ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_charts/",children:"compressor charts"})," for more information."]}),"\n",(0,r.jsxs)(n.p,{children:["In addition, a ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/models/fluid_model",children:"FLUID MODEL"})," must be specified."]}),"\n",(0,r.jsx)(n.p,{children:"The model comes in two versions, one where the compressor stages are known (pre defined), and one where the compressor\nstages are calculated at run-time based on input data."}),"\n",(0,r.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: \n POWER_ADJUSTMENT_CONSTANT: \n MAXIMUM_POWER: \n CALCULATE_MAX_RATE: \n"})}),"\n",(0,r.jsx)(n.h3,{id:"simplified-compressor-train-model-with-known-compressor-stages",children:"Simplified compressor train model with known compressor stages"}),"\n",(0,r.jsx)(n.p,{children:"When the compressor stages are known, each stage is defined with a compressor chart and an inlet temperature:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: \n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n - ... and so forth for each stage in the train\n POWER_ADJUSTMENT_CONSTANT: \n MAXIMUM_POWER: \n"})}),"\n",(0,r.jsx)(n.h3,{id:"simplified-compressor-train-model-with-unknown-number-of-compressor-stages",children:"Simplified compressor train model with unknown number of compressor stages"}),"\n",(0,r.jsx)(n.p,{children:"When the number of compressor stages are not known, one may specify the maximum pressure ratio per stage.\nWhen the maximum pressure ratio is set, the number of compressors will be determined at run time (based on input data)\nsuch that the number of compressors is large enough to ensure no pressure ratios are above a given maximum pressure\nratio per stage, but not larger."}),"\n",(0,r.jsx)(n.p,{children:"This model is intended for (but not limited to) the use of a generic compressor chart. Especially one can test with the\ngeneric compressor chart which are adjusted at run time (based on input data), for example to explore future\nrebuilds/designs where no specifications/data is yet available from vendors et.c."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: \n COMPRESSOR_TRAIN:\n MAXIMUM_PRESSURE_RATIO_PER_STAGE: \n COMPRESSOR_CHART: \n INLET_TEMPERATURE: \n POWER_ADJUSTMENT_CONSTANT: \n"})}),"\n",(0,r.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,r.jsx)(n.h3,{id:"a-single-compressor-with-a-user-defined-variable-speed-compressor-chart-and-fluid-composition",children:"A (single) compressor with a user-defined variable speed compressor chart and fluid composition"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: predefined_variable_speed_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: M\n EFFICIENCY: FRACTION\n CURVES:\n - SPEED: 7500\n RATE: [2900, 3503, 4002, 4595.0]\n HEAD: [8412.9, 7996, 7363, 6127]\n EFFICIENCY: [0.72, 0.75, 0.74, 0.70]\n - SPEED: 10767\n RATE: [4052, 4500, 4999, 5492, 6000, 6439,]\n HEAD: [16447, 16081, 15546, 14640, 13454, 11973,]\n EFFICIENCY: [0.72, 0.73, 0.74, 0.74, 0.72, 0.70]\n\n - NAME: fluid_model_1\n TYPE: FLUID\n FLUID_MODEL_TYPE: COMPOSITION\n EOS_MODEL: SRK\n COMPOSITION:\n nitrogen: 0.74373\n CO2: 2.415619\n methane: 85.60145\n ethane: 6.707826\n propane: 2.611471\n i_butane: 0.45077\n n_butane: 0.691702\n i_pentane: 0.210714\n n_pentane: 0.197937\n n_hexane: 0.368786\n\n - NAME: simplified_compressor_model\n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: fluid_model_1\n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: predefined_variable_speed_compressor_chart\n"})}),"\n",(0,r.jsx)(n.h3,{id:"a-single-turbine-driven-compressor-with-a-generic-compressor-chart-with-design-point-and-predefined-composition",children:"A (single) turbine driven compressor with a generic compressor chart with design point and predefined composition"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: generic_from_design_point_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: GENERIC_FROM_DESIGN_POINT\n POLYTROPIC_EFFICIENCY: 0.75\n DESIGN_RATE: 7000\n DESIGN_HEAD: 50\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: KJ_PER_KG\n EFFICIENCY: FRACTION\n\n - NAME: medium_fluid\n TYPE: FLUID\n FLUID_MODEL_TYPE: PREDEFINED\n EOS_MODEL: SRK\n GAS_TYPE: MEDIUM\n - NAME: simplified_compressor_model\n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: medium_fluid\n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: generic_from_design_point_compressor_chart\n\n - NAME: compressor_train_turbine\n TYPE: TURBINE\n LOWER_HEATING_VALUE: 38 # MJ/Sm3\n TURBINE_LOADS: [0, 2.352, 4.589, 6.853, 9.125, 11.399, 13.673, 15.947, 18.223, 20.496, 22.767] # MW\n TURBINE_EFFICIENCIES: [0, 0.138, 0.210, 0.255, 0.286, 0.310, 0.328, 0.342, 0.353, 0.360, 0.362] # fractions between 0 and 1\n\n - NAME: simplified_compressor_model_with_turbine\n TYPE: COMPRESSOR_WITH_TURBINE\n COMPRESSOR_MODEL: simplified_compressor_model\n TURBINE_MODEL: compressor_train_turbine\n"})}),"\n",(0,r.jsx)(n.h3,{id:"a-compressor-train-with-two-stages-where-the-first-stage-has-unknown-spec-while-the-second-has-a-predefined-chart",children:"A compressor train with two stages where the first stage has unknown spec while the second has a predefined chart"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" MODELS:\n - NAME: generic_from_input_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: GENERIC_FROM_INPUT\n\n - NAME: predefined_variable_speed_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n UNITS:\n RATE: AM3_PER_HOUR\n HEAD: M\n EFFICIENCY: FRACTION\n CURVES:\n - SPEED: 7500\n RATE: [2900, 3503, 4002, 4595.0]\n HEAD: [8412.9, 7996, 7363, 6127]\n EFFICIENCY: [0.72, 0.75, 0.74, 0.70]\n - SPEED: 10767\n RATE: [4052, 4500, 4999, 5492, 6000, 6439,]\n HEAD: [16447, 16081, 15546, 14640, 13454, 11973,]\n EFFICIENCY: [0.72, 0.73, 0.74, 0.74, 0.72, 0.70]\n\n - NAME: dry_fluid\n TYPE: FLUID\n FLUID_MODEL_TYPE: PREDEFINED\n EOS_MODEL: SRK\n GAS_TYPE: DRY\n\n - NAME: simplified_compressor_train_model\n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: dry_fluid\n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: generic_from_input_compressor_chart\n - INLET_TEMPERATURE: 30\n COMPRESSOR_CHART: predefined_variable_speed_compressor_chart\n"})}),"\n",(0,r.jsx)(n.h3,{id:"a-compressor-train-where-the-number-of-stages-are-unknown",children:"A compressor train where the number of stages are unknown"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:" MODELS:\n - NAME: generic_from_input_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: GENERIC_FROM_INPUT\n - NAME: dry_fluid\n TYPE: FLUID\n FLUID_MODEL_TYPE: PREDEFINED\n EOS_MODEL: SRK\n GAS_TYPE: DRY\n - NAME: simplified_compressor_train_model\n TYPE: SIMPLIFIED_VARIABLE_SPEED_COMPRESSOR_TRAIN\n FLUID_MODEL: dry_fluid\n COMPRESSOR_TRAIN:\n MAXIMUM_PRESSURE_RATIO_PER_STAGE: 3.5\n COMPRESSOR_CHART: generic_from_input_compressor_chart\n INLET_TEMPERATURE: 30\n"})})]})}function c(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>t});var r=s(7294);const o={},i=r.createContext(o);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3409ab5c.1a5df7d3.js b/assets/js/3409ab5c.1a5df7d3.js new file mode 100644 index 0000000000..cfd9d5e529 --- /dev/null +++ b/assets/js/3409ab5c.1a5df7d3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[2017],{9384:(s,e,a)=>{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>m,metadata:()=>r,toc:()=>t});var n=a(5893),l=a(1151);const m={title:"Pump modelling",sidebar_position:1,description:"Pump modelling theory"},i=void 0,r={id:"about/modelling/theory/pump_modelling",title:"Pump modelling",description:"Pump modelling theory",source:"@site/docs/about/modelling/theory/pump_modelling.md",sourceDirName:"about/modelling/theory",slug:"/about/modelling/theory/pump_modelling",permalink:"/ecalc/docs/about/modelling/theory/pump_modelling",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/theory/pump_modelling.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Pump modelling",sidebar_position:1,description:"Pump modelling theory"},sidebar:"about",previous:{title:"Theory",permalink:"/ecalc/docs/about/modelling/theory/"},next:{title:"Compressor modelling",permalink:"/ecalc/docs/about/modelling/theory/compressor_modelling"}},c={},t=[];function h(s){const e={annotation:"annotation",img:"img",math:"math",mfrac:"mfrac",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",msub:"msub",p:"p",semantics:"semantics",span:"span",...(0,l.a)(),...s.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"As liquid can be assumed incompressible, pump calculations are simpler compared to compressor calculations. The pumped fluid can be characterized with its density, and no fluid calculations are necessary."}),"\n",(0,n.jsx)(e.p,{children:"The power demand of a pump is calculated as"}),"\n",(0,n.jsx)(e.span,{className:"katex-display",children:(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"w"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"r"}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsxs)(e.mfrac,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"h"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mo,{children:"\u2217"}),(0,n.jsx)(e.mi,{children:"m"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"s"}),(0,n.jsx)(e.mi,{children:"s"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"_"}),(0,n.jsx)(e.mi,{children:"r"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"t"}),(0,n.jsx)(e.mi,{children:"e"})]}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"f"}),(0,n.jsx)(e.mi,{children:"f"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"n"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{children:"y"})]})]}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"."})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"power = \\frac{head * mass\\_rate}{efficiency}."})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.625em",verticalAlign:"-0.1944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"o"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.02691em"},children:"w"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"er"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"2.2749em",verticalAlign:"-0.8804em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"1.3944em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.10764em"},children:"ff"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"c"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"cy"})]})]}),(0,n.jsxs)(e.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.7em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",children:"h"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2217"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"ma"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"ss"}),(0,n.jsx)(e.span,{className:"mord",style:{marginRight:"0.02778em"},children:"_"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"r"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"})]})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.8804em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter"})]}),(0,n.jsx)(e.span,{className:"mord",children:"."})]})]})]})}),"\n",(0,n.jsx)(e.p,{children:"Here, the relationship between head and pressures is given by"}),"\n",(0,n.jsx)(e.span,{className:"katex-display",children:(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"h"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsxs)(e.mfrac,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mo,{stretchy:"false",children:"("}),(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"2"})]}),(0,n.jsx)(e.mo,{children:"\u2212"}),(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"1"})]}),(0,n.jsx)(e.mo,{stretchy:"false",children:")"})]}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"l"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"q"}),(0,n.jsx)(e.mi,{children:"u"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"_"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"n"}),(0,n.jsx)(e.mi,{children:"s"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"t"}),(0,n.jsx)(e.mi,{children:"y"}),(0,n.jsx)(e.mo,{children:"\u2217"}),(0,n.jsx)(e.mi,{children:"g"})]})]})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"head = \\frac{(P_2-P_1)}{liquid\\_density * g}"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"h"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"2.423em",verticalAlign:"-0.996em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"1.427em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.01968em"},children:"l"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"q"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"u"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mord",style:{marginRight:"0.02778em"},children:"_"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"s"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"y"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2217"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"g"})]})]}),(0,n.jsxs)(e.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.677em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen",children:"("}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"2"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2212"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"1"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]}),(0,n.jsx)(e.span,{className:"mclose",children:")"})]})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.996em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter"})]})]})]})]})}),"\n",(0,n.jsxs)(e.p,{children:["where ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"1"})]})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"P_1"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"1"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})})]})," and ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"2"})]})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"P_2"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"2"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})})]})," are the pump suction and discharge pressures, respectively, and ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"g"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"g"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.625em",verticalAlign:"-0.1944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"g"})]})})]})," is the gravitational constant."]}),"\n",(0,n.jsx)(e.p,{children:"eCalc uses the pump chart to relate liquid flow, head and efficiency for the pump, as well as defining the operational envelope for the pump."}),"\n",(0,n.jsx)(e.p,{children:"For single speed pumps, eCalc does extrapolations corresponding to minflow (liquid recirculation) and choking to keep the pump operation within the operational envelope."}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{src:a(4854).Z+"",width:"502",height:"449"})," ",(0,n.jsx)(e.img,{src:a(9258).Z+"",width:"484",height:"443"})]})]})}function d(s={}){const{wrapper:e}={...(0,l.a)(),...s.components};return e?(0,n.jsx)(e,{...s,children:(0,n.jsx)(h,{...s})}):h(s)}},4854:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/pumpchart_eff-136e9a9dd1af0700084ddf17be0d4453.PNG"},9258:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/pumpchart_head-ec0fc7f624752c8c95bd7c3f828090a3.PNG"},1151:(s,e,a)=>{a.d(e,{Z:()=>r,a:()=>i});var n=a(7294);const l={},m=n.createContext(l);function i(s){const e=n.useContext(m);return n.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function r(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(l):s.components||l:i(s.components),n.createElement(m.Provider,{value:e},s.children)}}}]); \ No newline at end of file diff --git a/assets/js/3720c009.462e617c.js b/assets/js/3720c009.462e617c.js new file mode 100644 index 0000000000..ca4cd71b6a --- /dev/null +++ b/assets/js/3720c009.462e617c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[3751],{9861:(t,e,a)=>{a.r(e),a.d(e,{default:()=>p});a(7294);var s=a(512),n=a(1944),r=a(5281),l=a(5999);const c=()=>(0,l.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var i=a(3008),o=a(2503);const g={tag:"tag_Nnez"};var u=a(5893);function h(t){let{letterEntry:e}=t;return(0,u.jsxs)("article",{children:[(0,u.jsx)(o.Z,{as:"h2",id:e.letter,children:e.letter}),(0,u.jsx)("ul",{className:"padding--none",children:e.tags.map((t=>(0,u.jsx)("li",{className:g.tag,children:(0,u.jsx)(i.Z,{...t})},t.permalink)))}),(0,u.jsx)("hr",{})]})}function d(t){let{tags:e}=t;const a=function(t){const e={};return Object.values(t).forEach((t=>{const a=function(t){return t[0].toUpperCase()}(t.label);e[a]??=[],e[a].push(t)})),Object.entries(e).sort(((t,e)=>{let[a]=t,[s]=e;return a.localeCompare(s)})).map((t=>{let[e,a]=t;return{letter:e,tags:a.sort(((t,e)=>t.label.localeCompare(e.label)))}}))}(e);return(0,u.jsx)("section",{className:"margin-vert--lg",children:a.map((t=>(0,u.jsx)(h,{letterEntry:t},t.letter)))})}var j=a(197);function m(t){let{title:e}=t;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(n.d,{title:e}),(0,u.jsx)(j.Z,{tag:"doc_tags_list"})]})}function x(t){let{tags:e,title:a}=t;return(0,u.jsx)(n.FG,{className:(0,s.Z)(r.k.page.docsTagsListPage),children:(0,u.jsx)("div",{className:"container margin-vert--lg",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("main",{className:"col col--8 col--offset-2",children:[(0,u.jsx)(o.Z,{as:"h1",children:a}),(0,u.jsx)(d,{tags:e})]})})})})}function p(t){const e=c();return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(m,{...t,title:e}),(0,u.jsx)(x,{...t,title:e})]})}},3008:(t,e,a)=>{a.d(e,{Z:()=>c});a(7294);var s=a(512),n=a(3692);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=a(5893);function c(t){let{permalink:e,label:a,count:c}=t;return(0,l.jsxs)(n.Z,{href:e,className:(0,s.Z)(r.tag,c?r.tagWithCount:r.tagRegular),children:[a,c&&(0,l.jsx)("span",{children:c})]})}}}]); \ No newline at end of file diff --git a/assets/js/3810e8e5.450a30d2.js b/assets/js/3810e8e5.450a30d2.js new file mode 100644 index 0000000000..70dc100dcf --- /dev/null +++ b/assets/js/3810e8e5.450a30d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[6887],{2177:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var r=s(5893),t=s(1151);const o={},a="HCEXPORT",i={id:"about/references/keywords/HCEXPORT",title:"HCEXPORT",description:"INSTALLATIONS /",source:"@site/docs/about/references/keywords/HCEXPORT.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/HCEXPORT",permalink:"/ecalc/docs/about/references/keywords/HCEXPORT",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/HCEXPORT.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"GENERATORSETS",permalink:"/ecalc/docs/about/references/keywords/GENERATORSETS"},next:{title:"HEAD",permalink:"/ecalc/docs/about/references/keywords/HEAD"}},c={},l=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2},{value:"Basic usage",id:"basic-usage",level:3},{value:"With time dependency",id:"with-time-dependency",level:3},{value:"Full example",id:"full-example",level:3}];function d(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,t.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"hcexport",children:"HCEXPORT"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})," /\n",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/HCEXPORT",children:"HCEXPORT"})]}),"\n",(0,r.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/HCEXPORT",children:"HCEXPORT"})," defines the export of hydrocarbons as a number of oil equivalents in Sm",(0,r.jsx)("sup",{children:"3"}),".\nThis keyword is required for the output of emission intensity (i.e., kg CO",(0,r.jsx)("sub",{children:"2"}),"/boe).\nThis could be a single time series variable or an ",(0,r.jsx)(n.code,{children:"expression "})," containing multiple time series variables.\nTypically it would be the sum of exported oil and gas in units of oil equivalents."]}),"\n",(0,r.jsx)(n.admonition,{title:"What is hydrocarbon export?",type:"info",children:(0,r.jsxs)(n.p,{children:["Hydrocarbon export is the oil equivalents of what is exported for sale and only these volumes should\nbe included here. I.e., it is important to distinguish between ",(0,r.jsx)(n.em,{children:"produced gas"})," and ",(0,r.jsx)(n.em,{children:"sales gas"}),".\nSee ",(0,r.jsx)(n.a,{href:"https://docmap.equinor.com/Docmap/page/doc/dmDocIndex.html?DOCVIEW=FALSE?DOCID=1042144",children:"GL0093"})," in Docmap."]})}),"\n",(0,r.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"HCEXPORT: # [Sm3/day]\n"})}),"\n",(0,r.jsx)(n.p,{children:"or"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"HCEXPORT:\n : # [Sm3/day]\n : # [Sm3/day]\n"})}),"\n",(0,r.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,r.jsx)(n.h3,{id:"basic-usage",children:"Basic usage"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"HCEXPORT: SIM;OIL_PROD {+} SIM;GAS_SALES {/} 1000\n"})}),"\n",(0,r.jsx)(n.h3,{id:"with-time-dependency",children:"With time dependency"}),"\n",(0,r.jsx)(n.p,{children:"In this example the gas export starts later than production start up:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"HCEXPORT:\n 2001-01-01: SIM1;OIL_PROD\n 2005-01-01: SIM2:OIL_PROD {+} SIM1;GAS_SALES {/} 1000\n"})}),"\n",(0,r.jsx)(n.h3,{id:"full-example",children:"Full example"}),"\n",(0,r.jsxs)(n.p,{children:["Example showing ",(0,r.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/HCEXPORT",children:"HCEXPORT"})," the modelling hierarchy:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"INSTALLATIONS:\n - NAME: installation_A\n FUEL: fuel_gas\n HCEXPORT: SIM;OIL_PROD:FIELD_A {+} SIM;GAS_SALES:FIELD_A {/} 1000\n GENERATORSETS:\n \n FUELCONSUMERS:\n \n - NAME: installation_B\n HCEXPORT: SIM;OIL_PROD:FIELD_B {+} SIM;GAS_SALES:FIELD_B{/} 1000\n GENERATORSETS:\n \n FUELCONSUMERS:\n \n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>i,a:()=>a});var r=s(7294);const t={},o=r.createContext(t);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/382d59b5.177e6432.js b/assets/js/382d59b5.177e6432.js new file mode 100644 index 0000000000..5817bcd6dd --- /dev/null +++ b/assets/js/382d59b5.177e6432.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[9306],{4706:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>o,default:()=>E,frontMatter:()=>c,metadata:()=>i,toc:()=>d});var s=n(5893),t=n(1151);const c={},o="CURVES",i={id:"about/references/keywords/CURVES",title:"CURVES",description:"Description",source:"@site/docs/about/references/keywords/CURVES.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/CURVES",permalink:"/ecalc/docs/about/references/keywords/CURVES",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/CURVES.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"CURVE",permalink:"/ecalc/docs/about/references/keywords/CURVE"},next:{title:"DIRECT_EMITTERS",permalink:"/ecalc/docs/about/references/keywords/DIRECT_EMITTERS"}},a={},d=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function l(e){const r={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.h1,{id:"curves",children:"CURVES"}),"\n",(0,s.jsx)(r.h2,{id:"description",children:"Description"}),"\n",(0,s.jsxs)(r.p,{children:["When using a detailed variable speed compressor model, it is necessary to specify the variable speed ",(0,s.jsx)(r.a,{href:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_charts/#user-defined-variable-speed-compressor-chart",children:"COMPRESSOR CHART"}),". This can be defined from a .csv file, or it can be defined directly in the YAML file.\nIn either case, the keyword ",(0,s.jsx)(r.code,{children:"CURVES"})," needs to be used, and curves for at least two different speeds must be defined. If a .csv file is being used, under the ",(0,s.jsx)(r.code,{children:"CURVES"})," keyword, ",(0,s.jsx)(r.code,{children:"FILE"})," must be used. If specified directly in the YAML file, ",(0,s.jsx)(r.code,{children:"SPEED"}),", ",(0,s.jsx)(r.code,{children:"RATE"}),", ",(0,s.jsx)(r.code,{children:"HEAD"})," and ",(0,s.jsx)(r.code,{children:"EFFICIENCY"})," must be defined for each speed."]}),"\n",(0,s.jsx)(r.h2,{id:"format",children:"Format"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n ...\n CURVES:\n - SPEED: \n RATE: \n HEAD:
\n EFFICIENCY:
\n - SPEED:
\n RATE: \n HEAD:
\n EFFICIENCY:
\n\n - NAME:
\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n ... \n CURVES:\n - FILE: \n"})}),"\n",(0,s.jsx)(r.h2,{id:"example",children:"Example"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-yaml",children:"MODELS:\n - NAME: predefined_variable_speed_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n ...\n CURVES:\n - SPEED: 7500\n RATE: [2900, 3503, 4002, 4595.0]\n HEAD: [8412.9, 7996, 7363, 6127]\n EFFICIENCY: [0.72, 0.75, 0.74, 0.70]\n - SPEED: 9886\n RATE: [3708, 4502, 4993.6, 5507, 5924]\n HEAD: [13845, 13182, 12425, 11276, 10054]\n EFFICIENCY: [ 0.72, 0.75, 0.748, 0.73, 0.70]\n\n - NAME: compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: VARIABLE_SPEED\n ... \n CURVES:\n - FILE: compressor_chart.csv\n"})})]})}function E(e={}){const{wrapper:r}={...(0,t.a)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1151:(e,r,n)=>{n.d(r,{Z:()=>i,a:()=>o});var s=n(7294);const t={},c=s.createContext(t);function o(e){const r=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(c.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/38d592cf.b53c36f3.js b/assets/js/38d592cf.b53c36f3.js new file mode 100644 index 0000000000..8492a1a2fa --- /dev/null +++ b/assets/js/38d592cf.b53c36f3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[1398],{8874:(s,e,a)=>{a.r(e),a.d(e,{assets:()=>t,contentTitle:()=>m,default:()=>d,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var n=a(5893),l=a(1151);const i={title:"Compressor modelling",sidebar_position:2,description:"Compressor modelling theory"},m=void 0,r={id:"about/modelling/theory/compressor_modelling",title:"Compressor modelling",description:"Compressor modelling theory",source:"@site/docs/about/modelling/theory/compressor_modelling.md",sourceDirName:"about/modelling/theory",slug:"/about/modelling/theory/compressor_modelling",permalink:"/ecalc/docs/about/modelling/theory/compressor_modelling",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/theory/compressor_modelling.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Compressor modelling",sidebar_position:2,description:"Compressor modelling theory"},sidebar:"about",previous:{title:"Pump modelling",permalink:"/ecalc/docs/about/modelling/theory/pump_modelling"},next:{title:"Setup an eCalc\u2122 Model",permalink:"/ecalc/docs/about/modelling/setup/"}},t={},c=[];function h(s){const e={a:"a",annotation:"annotation",code:"code",img:"img",math:"math",mfrac:"mfrac",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",msub:"msub",msubsup:"msubsup",msup:"msup",p:"p",semantics:"semantics",span:"span",...(0,l.a)(),...s.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"A compressor model describes what happens to a fluid going through a compressor and calculates how much power is\nrequired in the process."}),"\n",(0,n.jsxs)(e.p,{children:["At the suction side, one need information about the fluid (natural gas) which has a (static) specification of the\ncomposition, a specified rate, a temperature and a pressure. As the fluid is going through the compressor in a fluid\ndynamic process, the enthalpy changes, resulting in a new state and both the pressure and the\ntemperature of the fluid is increased, while the volume is decreased. This change is calculated using an\nequation-of-state (EOS) model. See ",(0,n.jsx)(e.a,{href:"/ecalc/docs/about/modelling/setup/models/fluid_model",children:(0,n.jsx)(e.code,{children:"Fluid model"})})]}),"\n",(0,n.jsx)(e.p,{children:(0,n.jsx)(e.img,{src:a(3026).Z+"",width:"1626",height:"738"})}),"\n",(0,n.jsx)(e.p,{children:"eCalc does not perform fluid dynamic modeling. Instead, the behaviour of the compressor is described by a polytropic\ncompressor chart which specifies both the operational domain of the compressor, but also relates volume rate, head and\nefficiency for the compressor."}),"\n",(0,n.jsxs)(e.p,{children:["An isentropic (adiabatic) compression is the process where no heat is added or removed from a system. In a polytropic\nprocess, changes in the gas characteristics is considered. Dynamic natural gas compressors typically follow a polytropic\nprocess defined by the formula ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"1"})]}),(0,n.jsxs)(e.msubsup,{children:[(0,n.jsx)(e.mi,{children:"V"}),(0,n.jsx)(e.mn,{children:"1"}),(0,n.jsx)(e.mi,{children:"n"})]}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"2"})]}),(0,n.jsxs)(e.msubsup,{children:[(0,n.jsx)(e.mi,{children:"V"}),(0,n.jsx)(e.mn,{children:"2"}),(0,n.jsx)(e.mi,{children:"n"})]})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"P_\\mathrm{1} V_\\mathrm{1}^n = P_\\mathrm{2} V_\\mathrm{2}^n"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.9314em",verticalAlign:"-0.2481em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"1"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.22222em"},children:"V"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"0.6644em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.4519em",marginLeft:"-0.2222em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"1"})})]}),(0,n.jsxs)(e.span,{style:{top:"-3.063em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mathnormal mtight",children:"n"})})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.2481em"},children:(0,n.jsx)(e.span,{})})})]})})]}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.9314em",verticalAlign:"-0.2481em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"2"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.22222em"},children:"V"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"0.6644em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.4519em",marginLeft:"-0.2222em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mathrm mtight",children:"2"})})]}),(0,n.jsxs)(e.span,{style:{top:"-3.063em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mathnormal mtight",children:"n"})})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.2481em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})]})]}),", where ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"n"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"n"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.4306em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"})]})})]})," is the\npolytropic exponent which is experimentally determined for a given compressor."]}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{src:a(8778).Z+"",width:"901",height:"762"}),"\nThe power need for compression is given by"]}),"\n",(0,n.jsx)(e.span,{className:"katex-display",children:(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"w"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"r"}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsxs)(e.mfrac,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"l"}),(0,n.jsx)(e.mi,{children:"y"}),(0,n.jsx)(e.mi,{children:"t"}),(0,n.jsx)(e.mi,{children:"r"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"_"}),(0,n.jsx)(e.mi,{children:"h"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mo,{children:"\u2217"}),(0,n.jsx)(e.mi,{children:"m"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"s"}),(0,n.jsx)(e.mi,{children:"s"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"_"}),(0,n.jsx)(e.mi,{children:"r"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"t"}),(0,n.jsx)(e.mi,{children:"e"})]}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"f"}),(0,n.jsx)(e.mi,{children:"f"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"n"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{children:"y"})]})]})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"power = \\frac{polytropic\\_head * mass\\_rate}{efficiency}"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.625em",verticalAlign:"-0.1944em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"o"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.02691em"},children:"w"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"er"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"2.2749em",verticalAlign:"-0.8804em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"1.3944em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.10764em"},children:"ff"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"c"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"cy"})]})]}),(0,n.jsxs)(e.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.7em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"o"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.01968em"},children:"l"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"y"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"ro"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"c"}),(0,n.jsx)(e.span,{className:"mord",style:{marginRight:"0.02778em"},children:"_"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"h"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2217"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"ma"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"ss"}),(0,n.jsx)(e.span,{className:"mord",style:{marginRight:"0.02778em"},children:"_"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"r"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"})]})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.8804em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter"})]})]})]})]})}),"\n",(0,n.jsx)(e.p,{children:"and the relationship between polytropic head and the pressures are"}),"\n",(0,n.jsx)(e.span,{className:"katex-display",children:(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"l"}),(0,n.jsx)(e.mi,{children:"y"}),(0,n.jsx)(e.mi,{children:"t"}),(0,n.jsx)(e.mi,{children:"r"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"_"}),(0,n.jsx)(e.mi,{children:"h"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"a"}),(0,n.jsx)(e.mi,{children:"d"}),(0,n.jsx)(e.mo,{children:"="}),(0,n.jsxs)(e.mfrac,{children:[(0,n.jsx)(e.mi,{children:"n"}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"n"}),(0,n.jsx)(e.mo,{children:"\u2212"}),(0,n.jsx)(e.mn,{children:"1"})]})]}),(0,n.jsxs)(e.mfrac,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"Z"}),(0,n.jsx)(e.mi,{children:"R"}),(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"T"}),(0,n.jsx)(e.mn,{children:"1"})]})]}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"M"}),(0,n.jsx)(e.mi,{children:"W"})]})]}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mo,{fence:"true",children:"("}),(0,n.jsxs)(e.msup,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mo,{fence:"true",children:"("}),(0,n.jsxs)(e.mfrac,{children:[(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"1"})]}),(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"P"}),(0,n.jsx)(e.mn,{children:"2"})]})]}),(0,n.jsx)(e.mo,{fence:"true",children:")"})]}),(0,n.jsxs)(e.mfrac,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"n"}),(0,n.jsx)(e.mo,{children:"\u2212"}),(0,n.jsx)(e.mn,{children:"1"})]}),(0,n.jsx)(e.mi,{children:"n"})]})]}),(0,n.jsx)(e.mo,{children:"\u2212"}),(0,n.jsx)(e.mn,{children:"1"}),(0,n.jsx)(e.mo,{fence:"true",children:")"})]})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"polytropic\\_head = \\frac{n}{n-1} \\frac{Z R T_1}{MW} \\left( \\left(\\frac{P_1}{P_2} \\right)^{\\frac{n-1}{n}} -1 \\right)"})]})})}),(0,n.jsxs)(e.span,{className:"katex-html","aria-hidden":"true",children:[(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"1.0044em",verticalAlign:"-0.31em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"o"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.01968em"},children:"l"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"y"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"ro"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"c"}),(0,n.jsx)(e.span,{className:"mord",style:{marginRight:"0.02778em"},children:"_"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"h"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"a"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"d"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,n.jsx)(e.span,{className:"mrel",children:"="}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"3.044em",verticalAlign:"-1.25em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"1.1076em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2212"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mord",children:"1"})]})]}),(0,n.jsxs)(e.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.677em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"mord",children:(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"})})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.7693em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter"})]}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"1.3603em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"M"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"W"})]})]}),(0,n.jsxs)(e.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.677em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.00773em"},children:"ZR"}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"T"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"1"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.686em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter"})]}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.1667em"}}),(0,n.jsxs)(e.span,{className:"minner",children:[(0,n.jsx)(e.span,{className:"mopen delimcenter",style:{top:"0em"},children:(0,n.jsx)(e.span,{className:"delimsizing size4",children:"("})}),(0,n.jsxs)(e.span,{className:"minner",children:[(0,n.jsxs)(e.span,{className:"minner",children:[(0,n.jsx)(e.span,{className:"mopen delimcenter",style:{top:"0em"},children:(0,n.jsx)(e.span,{className:"delimsizing size3",children:"("})}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"1.3603em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"mord",children:(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"2"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]})})]}),(0,n.jsxs)(e.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.677em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"mord",children:(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"P"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"1"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]})})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.836em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter"})]}),(0,n.jsx)(e.span,{className:"mclose delimcenter",style:{top:"0em"},children:(0,n.jsx)(e.span,{className:"delimsizing size3",children:")"})})]}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsx)(e.span,{className:"vlist-t",children:(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"1.7939em"},children:(0,n.jsxs)(e.span,{style:{top:"-4.2029em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:(0,n.jsxs)(e.span,{className:"mord mtight",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter sizing reset-size3 size6"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"0.8443em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.656em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size3 size1 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:(0,n.jsx)(e.span,{className:"mord mathnormal mtight",children:"n"})})})]}),(0,n.jsxs)(e.span,{style:{top:"-3.2255em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line mtight",style:{borderBottomWidth:"0.049em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.384em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size3 size1 mtight",children:(0,n.jsxs)(e.span,{className:"mord mtight",children:[(0,n.jsx)(e.span,{className:"mord mathnormal mtight",children:"n"}),(0,n.jsx)(e.span,{className:"mbin mtight",children:"\u2212"}),(0,n.jsx)(e.span,{className:"mord mtight",children:"1"})]})})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.344em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter sizing reset-size3 size6"})]})})})]})})})})})]}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2212"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mord",children:"1"}),(0,n.jsx)(e.span,{className:"mclose delimcenter",style:{top:"0em"},children:(0,n.jsx)(e.span,{className:"delimsizing size4",children:")"})})]})]})]})]})}),"\n",(0,n.jsxs)(e.p,{children:["where ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"n"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"n"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.4306em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"})]})})]})," is the polytropic exponent, ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"Z"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"Z"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"Z"})]})})]})," the compressibility, ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"R"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"R"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.00773em"},children:"R"})]})})]})," is the gas constant, ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsxs)(e.msub,{children:[(0,n.jsx)(e.mi,{children:"T"}),(0,n.jsx)(e.mn,{children:"1"})]})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"T_1"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"T"}),(0,n.jsx)(e.span,{className:"msupsub",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.3011em"},children:(0,n.jsxs)(e.span,{style:{top:"-2.55em",marginLeft:"-0.1389em",marginRight:"0.05em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"2.7em"}}),(0,n.jsx)(e.span,{className:"sizing reset-size6 size3 mtight",children:(0,n.jsx)(e.span,{className:"mord mtight",children:"1"})})]})}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.15em"},children:(0,n.jsx)(e.span,{})})})]})})]})]})})]})," is the inlet temperature and ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"M"}),(0,n.jsx)(e.mi,{children:"W"})]}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"MW"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"M"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.13889em"},children:"W"})]})})]})," the molecular weight."]}),"\n",(0,n.jsx)(e.p,{children:"Further, the polytropic exponent is approximated as"}),"\n",(0,n.jsx)(e.span,{className:"katex-display",children:(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsxs)(e.mfrac,{children:[(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"\u03ba"}),(0,n.jsx)(e.mo,{children:"\u2217"}),(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"l"}),(0,n.jsx)(e.mi,{children:"y"}),(0,n.jsx)(e.mi,{children:"t"}),(0,n.jsx)(e.mi,{children:"r"}),(0,n.jsx)(e.mi,{children:"o"}),(0,n.jsx)(e.mi,{children:"p"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{mathvariant:"normal",children:"_"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"f"}),(0,n.jsx)(e.mi,{children:"f"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{children:"i"}),(0,n.jsx)(e.mi,{children:"e"}),(0,n.jsx)(e.mi,{children:"n"}),(0,n.jsx)(e.mi,{children:"c"}),(0,n.jsx)(e.mi,{children:"y"})]}),(0,n.jsxs)(e.mrow,{children:[(0,n.jsx)(e.mi,{children:"\u03ba"}),(0,n.jsx)(e.mo,{children:"\u2212"}),(0,n.jsx)(e.mn,{children:"1"})]})]})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\frac{\\kappa * polytropic\\_efficiency}{\\kappa -1}"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"2.1638em",verticalAlign:"-0.7693em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mopen nulldelimiter"}),(0,n.jsx)(e.span,{className:"mfrac",children:(0,n.jsxs)(e.span,{className:"vlist-t vlist-t2",children:[(0,n.jsxs)(e.span,{className:"vlist-r",children:[(0,n.jsxs)(e.span,{className:"vlist",style:{height:"1.3944em"},children:[(0,n.jsxs)(e.span,{style:{top:"-2.314em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",children:"\u03ba"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2212"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mord",children:"1"})]})]}),(0,n.jsxs)(e.span,{style:{top:"-3.23em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsx)(e.span,{className:"frac-line",style:{borderBottomWidth:"0.04em"}})]}),(0,n.jsxs)(e.span,{style:{top:"-3.7em"},children:[(0,n.jsx)(e.span,{className:"pstrut",style:{height:"3em"}}),(0,n.jsxs)(e.span,{className:"mord",children:[(0,n.jsx)(e.span,{className:"mord mathnormal",children:"\u03ba"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mbin",children:"\u2217"}),(0,n.jsx)(e.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"o"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.01968em"},children:"l"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"y"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"t"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"ro"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"p"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"c"}),(0,n.jsx)(e.span,{className:"mord",style:{marginRight:"0.02778em"},children:"_"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.10764em"},children:"ff"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"c"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"i"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"e"}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"n"}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.03588em"},children:"cy"})]})]})]}),(0,n.jsx)(e.span,{className:"vlist-s",children:"\u200b"})]}),(0,n.jsx)(e.span,{className:"vlist-r",children:(0,n.jsx)(e.span,{className:"vlist",style:{height:"0.7693em"},children:(0,n.jsx)(e.span,{})})})]})}),(0,n.jsx)(e.span,{className:"mclose nulldelimiter"})]})]})})]})}),"\n",(0,n.jsxs)(e.p,{children:["where ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"\u03ba"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\kappa"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.4306em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"\u03ba"})]})})]})," is the heat capacity ratio of the fluid."]}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"\u03ba"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"\\kappa"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.4306em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",children:"\u03ba"})]})})]})," and ",(0,n.jsxs)(e.span,{className:"katex",children:[(0,n.jsx)(e.span,{className:"katex-mathml",children:(0,n.jsx)(e.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,n.jsxs)(e.semantics,{children:[(0,n.jsx)(e.mrow,{children:(0,n.jsx)(e.mi,{children:"Z"})}),(0,n.jsx)(e.annotation,{encoding:"application/x-tex",children:"Z"})]})})}),(0,n.jsx)(e.span,{className:"katex-html","aria-hidden":"true",children:(0,n.jsxs)(e.span,{className:"base",children:[(0,n.jsx)(e.span,{className:"strut",style:{height:"0.6833em"}}),(0,n.jsx)(e.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"Z"})]})})]})," are not for inlet conditions, but average values for the fluid throughout the process, and\nthe polytropic process and the calculations are iterated until these converge."]}),"\n",(0,n.jsx)(e.p,{children:"If there is only one compressor, the outlet pressure for each compressor is known, and the polytropic head and\nefficiency may be calculated from directly from the above polytropic head and efficiency formulas."}),"\n",(0,n.jsx)(e.p,{children:"However, for compressor trains, the intermediate pressures are not known ahead, instead one may use the fact that all\ncompressors run with the same speed as they are mounted on the same shaft."}),"\n",(0,n.jsxs)(e.p,{children:["To calculate the energy usage for the compressor train using the common speed, eCalc uses a forward model to\ncalculate the outlet stream given the inlet stream and a given speed. Then, this model is iterated until the discharge pressure is equal to the requested discharge pressure for evaluation. To use this model, see\n",(0,n.jsx)(e.code,{children:"Variable speed compressor train model"})," An alternative is to neglect the common speed property of the train, an instead assume (incorrectly but maybe good\nenough for some purposes) that the pressure fraction is equal for all stages. With this assumption, the intermediate pressures can be calculated and each stage may be calculated independently without the speed iteration. To use this model, see\n",(0,n.jsx)(e.code,{children:"Simplified variable speed compressor train model"}),"."]}),"\n",(0,n.jsxs)(e.p,{children:["In some cases, the shaft of the compressor train can only run on a single fixed speed. In these cases eCalc needs\ninformation about how the pressure should be controlled to meet the required discharge pressure. Available pressure\ncontrol options are choking and recirculating using anti-surge valves. To use this model, see ",(0,n.jsx)(e.code,{children:"Single speed compressor train model"}),"."]}),"\n",(0,n.jsxs)(e.p,{children:["In other cases, the compressor trains have more complex setup and process control which needs a more flexible model. The\nfigure below shows an example where one may have two inlet streams with different pressures and potentially different\ngas compositions and one outlet stream for export gas with a pressure control. To use a model suitable for such cases,\nsee ",(0,n.jsx)(e.code,{children:"Variable speed compressor train model with multiple streams and pressures"}),"."]}),"\n",(0,n.jsx)(e.p,{children:(0,n.jsx)(e.img,{src:a(5113).Z+"",width:"1475",height:"659"})})]})}function d(s={}){const{wrapper:e}={...(0,l.a)(),...s.components};return e?(0,n.jsx)(e,{...s,children:(0,n.jsx)(h,{...s})}):h(s)}},3026:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/process_compressor-3493b127c832898d93b5231594efa8d3.png"},8778:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/process_compressor_chart-28c5f110972461aba840e82b0962c3d2.png"},5113:(s,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/process_compressor_train_multiple_streams-415751902a6078520845f70740eaa1af.png"},1151:(s,e,a)=>{a.d(e,{Z:()=>r,a:()=>m});var n=a(7294);const l={},i=n.createContext(l);function m(s){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function r(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(l):s.components||l:m(s.components),n.createElement(i.Provider,{value:e},s.children)}}}]); \ No newline at end of file diff --git a/assets/js/3aeef25a.c9e431e8.js b/assets/js/3aeef25a.c9e431e8.js new file mode 100644 index 0000000000..4aca1b6ba0 --- /dev/null +++ b/assets/js/3aeef25a.c9e431e8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[7396],{1984:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var t=a(5893),r=a(1151);const i={},o="HEAD_MARGIN",s={id:"about/references/keywords/HEAD_MARGIN",title:"HEAD_MARGIN",description:"FACILITYINPUTS /",source:"@site/docs/about/references/keywords/HEAD_MARGIN.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/HEAD_MARGIN",permalink:"/ecalc/docs/about/references/keywords/HEAD_MARGIN",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/HEAD_MARGIN.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"HEAD",permalink:"/ecalc/docs/about/references/keywords/HEAD"},next:{title:"INFLUENCE_TIME_VECTOR",permalink:"/ecalc/docs/about/references/keywords/INFLUENCE_TIME_VECTOR"}},c={},l=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"head_margin",children:"HEAD_MARGIN"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FACILITY_INPUTS",children:"FACILITY_INPUTS"})," /\n",(0,t.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/HEAD_MARGIN",children:"HEAD_MARGIN"})]}),"\n",(0,t.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,t.jsx)(n.p,{children:"When calibrating pump charts to historical data, the head values at maximum speed\ncould be put in the cloud of data to be unbiased. However, eCalc will treat all\nhead values above the maximum defined area in the chart infeasible (i.e.,\noutside pump capacity). To mitigate this when running through historical data for\npower calibration, one can adjust the head margin with this keyword."}),"\n",(0,t.jsxs)(n.p,{children:["Calculated head values above maximum head values from the chart will be set equal to\nmaximum head values before power calculations ",(0,t.jsx)(n.strong,{children:"if"})," they are within the margin given.\nCalculated head values larger than maximum + margin will still be infeasible."]}),"\n",(0,t.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,t.jsxs)(n.p,{children:["The head margin can be specified in ",(0,t.jsx)(n.code,{children:"mlc"})," (meter liquid column):"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"HEAD_MARGIN: \n"})}),"\n",(0,t.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:" NAME: pump_name\n TYPE: PUMP_CHART_SINGLE_SPEED\n UNITS:\n HEAD: M\n RATE: AM3_PER_HOUR\n EFFICIENCY: PERCENTAGE\n FILE: .csv\n HEAD_MARGIN: 10.0\n"})})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,a)=>{a.d(n,{Z:()=>s,a:()=>o});var t=a(7294);const r={},i=t.createContext(r);function o(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b0e82f8.c1b09a81.js b/assets/js/3b0e82f8.c1b09a81.js new file mode 100644 index 0000000000..a5f512c0fe --- /dev/null +++ b/assets/js/3b0e82f8.c1b09a81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[925],{1850:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>E,frontMatter:()=>t,metadata:()=>i,toc:()=>a});var s=r(5893),c=r(1151);const t={},o="CURVE",i={id:"about/references/keywords/CURVE",title:"CURVE",description:"Description",source:"@site/docs/about/references/keywords/CURVE.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/CURVE",permalink:"/ecalc/docs/about/references/keywords/CURVE",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/CURVE.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"CROSSOVER",permalink:"/ecalc/docs/about/references/keywords/CROSSOVER"},next:{title:"CURVES",permalink:"/ecalc/docs/about/references/keywords/CURVES"}},d={},a=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,c.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"curve",children:"CURVE"}),"\n",(0,s.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,s.jsxs)(n.p,{children:["When using a detailed single speed compressor model, it is necessary to specify the single speed ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/models/compressor_modelling/compressor_charts/#user-defined-single-speed-compressor-chart",children:"COMPRESSOR CHART"}),". This can be defined from a .csv file, or it can be defined directly in the YAML file.\nIn either case, the keyword ",(0,s.jsx)(n.code,{children:"CURVE"})," needs to be used. If a .csv file is being used, under the ",(0,s.jsx)(n.code,{children:"CURVE"})," keyword, ",(0,s.jsx)(n.code,{children:"FILE"})," must be used. If specified directly in the YAML file, ",(0,s.jsx)(n.code,{children:"SPEED"}),", ",(0,s.jsx)(n.code,{children:"RATE"}),", ",(0,s.jsx)(n.code,{children:"HEAD"})," and ",(0,s.jsx)(n.code,{children:"EFFICIENCY"})," must be defined."]}),"\n",(0,s.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: COMPRESSOR_CHART\n CHART_TYPE: SINGLE_SPEED\n ...\n CURVE:\n - SPEED: \n RATE: \n HEAD:
\n EFFICIENCY:
\n\n - NAME:
\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: SINGLE_SPEED\n ... \n CURVE:\n - FILE: \n"})}),"\n",(0,s.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: predefined_single_speed_compressor_chart\n TYPE: COMPRESSOR_CHART\n CHART_TYPE: SINGLE_SPEED\n ...\n CURVE:\n - SPEED: 7500\n RATE: [2900, 3503, 4002, 4595.0]\n HEAD: [8412.9, 7996, 7363, 6127]\n EFFICIENCY: [0.72, 0.75, 0.74, 0.70]\n\n - NAME: compressor_chart\n TYPE: COMPRESSOR_CHART\n ... \n CURVE:\n - FILE: compressor_chart.csv\n"})})]})}function E(e={}){const{wrapper:n}={...(0,c.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>i,a:()=>o});var s=r(7294);const c={},t=s.createContext(c);function o(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:o(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3e38e310.366f25a9.js b/assets/js/3e38e310.366f25a9.js new file mode 100644 index 0000000000..fdde177d33 --- /dev/null +++ b/assets/js/3e38e310.366f25a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[8094],{9424:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var s=a(5893),t=a(1151);const i={slug:"v8.3-release",title:"v8.3",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:13},l="eCalc v8.3",r={id:"changelog/v8-3",title:"v8.3",description:"eCalc\u2122 v8.3 is a smaller upgrade from v8.2. Here are some of the highlights. See",source:"@site/docs/changelog/v8-3.md",sourceDirName:"changelog",slug:"/changelog/v8.3-release",permalink:"/ecalc/docs/changelog/v8.3-release",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/v8-3.md",tags:[{label:"release",permalink:"/ecalc/docs/tags/release"},{label:"eCalc",permalink:"/ecalc/docs/tags/e-calc"}],version:"current",sidebarPosition:13,frontMatter:{slug:"v8.3-release",title:"v8.3",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:13},sidebar:"changelog",previous:{title:"v8.2",permalink:"/ecalc/docs/changelog/v8.2-release"},next:{title:"v8.4",permalink:"/ecalc/docs/changelog/v8.4-release"}},o={},c=[{value:"New Features",id:"new-features",level:2},{value:"Fixes",id:"fixes",level:2},{value:"Breaking changes",id:"breaking-changes",level:2},{value:"Input: YAML / Resource files",id:"input-yaml--resource-files",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"ecalc-v83",children:"eCalc v8.3"}),"\n",(0,s.jsx)(n.p,{children:"eCalc\u2122 v8.3 is a smaller upgrade from v8.2. Here are some of the highlights. See\r\nthe migration guide for details on changes, where relevant."}),"\n",(0,s.jsx)(n.h2,{id:"new-features",children:"New Features"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"To save time in calibration and help diagnose pump issues: When calibrating or seeing why a pump is invalid, the most important thing to look at is the head. Now the head is available in the JSON file."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"fixes",children:"Fixes"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"A bug in the mixing of fluid-streams in compressor trains were fixed. This bug caused the density at standard conditions not to be updated, leading to the standard rates being wrong. This is expected to change the results of some eCalc Models"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"breaking-changes",children:"Breaking changes"}),"\n",(0,s.jsx)(n.p,{children:"Some breaking changes are needed to keep improving eCalc, remove ambiguity and prepare eCalc for the future:"}),"\n",(0,s.jsx)(n.h3,{id:"input-yaml--resource-files",children:"Input: YAML / Resource files"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["It is no longer accepted to change ",(0,s.jsx)(n.code,{children:"ENERGY_USAGE_MODEL TYPE"})," over time, within one consumer. In case ",(0,s.jsx)(n.code,{children:"TYPE"})," evolution is needed, the model can be split in two consumers."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,a)=>{a.d(n,{Z:()=>r,a:()=>l});var s=a(7294);const t={},i=s.createContext(t);function l(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3fbb770c.54126050.js b/assets/js/3fbb770c.54126050.js new file mode 100644 index 0000000000..d789ca47f8 --- /dev/null +++ b/assets/js/3fbb770c.54126050.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[4838],{5894:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=r(5893),t=r(1151);const o={},c="SUCTION_PRESSURE",a={id:"about/references/keywords/SUCTION_PRESSURE",title:"SUCTION_PRESSURE",description:"INSTALLATIONS /",source:"@site/docs/about/references/keywords/SUCTION_PRESSURE.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/SUCTION_PRESSURE",permalink:"/ecalc/docs/about/references/keywords/SUCTION_PRESSURE",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/SUCTION_PRESSURE.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"STREAMS",permalink:"/ecalc/docs/about/references/keywords/STREAMS"},next:{title:"TIME_SERIES",permalink:"/ecalc/docs/about/references/keywords/TIME_SERIES"}},i={},d=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"suction_pressure",children:"SUCTION_PRESSURE"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})," /\n[...] /\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY_USAGE_MODEL"})," /\n[...] /\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/SUCTION_PRESSURE",children:"SUCTION_PRESSURE"})]}),"\n",(0,s.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,s.jsxs)(n.p,{children:["Used to define the suction pressure for some ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/ENERGY_USAGE_MODEL",children:"ENERGY_USAGE_MODEL"}),"\ntypes and in ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/OPERATIONAL_SETTINGS",children:"OPERATIONAL_SETTINGS"})," using\na fixed value or an expression. If an expression is used, a time series can be used so that the suction pressure of the unit can vary over the lifespan of the model."]}),"\n",(0,s.jsxs)(n.p,{children:["Note that pressure values ",(0,s.jsx)(n.strong,{children:"must"})," be inputted in ",(0,s.jsx)(n.code,{children:"bar"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"SUCTION_PRESSURE: \n"})}),"\n",(0,s.jsx)(n.h2,{id:"example",children:"Example"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"SUCTION_PRESSURE: 10 \n"})})]})}function u(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>a,a:()=>c});var s=r(7294);const t={},o=s.createContext(t);function c(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/40d6382c.0f0252a9.js b/assets/js/40d6382c.0f0252a9.js new file mode 100644 index 0000000000..1226907621 --- /dev/null +++ b/assets/js/40d6382c.0f0252a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[9814],{3334:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var n=i(5893),o=i(1151);const r={title:"Migrating eCalc versions",sidebar_position:1e3,description:"Getting started with eCalc"},a=void 0,s={id:"about/migration_guides/index",title:"Migrating eCalc versions",description:"Getting started with eCalc",source:"@site/docs/about/migration_guides/index.md",sourceDirName:"about/migration_guides",slug:"/about/migration_guides/",permalink:"/ecalc/docs/about/migration_guides/",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/migration_guides/index.md",tags:[],version:"current",sidebarPosition:1e3,frontMatter:{title:"Migrating eCalc versions",sidebar_position:1e3,description:"Getting started with eCalc"},sidebar:"about",previous:{title:"CLI",permalink:"/ecalc/docs/about/references/cli_reference"},next:{title:"v7 to v8",permalink:"/ecalc/docs/about/migration_guides/v7_to_v8"}},c={},u=[];function d(t){return(0,n.jsx)(n.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d()}},1151:(t,e,i)=>{i.d(e,{Z:()=>s,a:()=>a});var n=i(7294);const o={},r=n.createContext(o);function a(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:a(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/4147f87e.5e3a7fec.js b/assets/js/4147f87e.5e3a7fec.js new file mode 100644 index 0000000000..0969c0fa3e --- /dev/null +++ b/assets/js/4147f87e.5e3a7fec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[9786],{2718:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>E,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var t=r(5893),s=r(1151);const o={},a="STAGES",i={id:"about/references/keywords/STAGES",title:"STAGES",description:"MODELS /",source:"@site/docs/about/references/keywords/STAGES.md",sourceDirName:"about/references/keywords",slug:"/about/references/keywords/STAGES",permalink:"/ecalc/docs/about/references/keywords/STAGES",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/references/keywords/STAGES.md",tags:[],version:"current",frontMatter:{},sidebar:"about",previous:{title:"REGULARITY",permalink:"/ecalc/docs/about/references/keywords/REGULARITY"},next:{title:"START",permalink:"/ecalc/docs/about/references/keywords/START"}},E={},c=[{value:"Description",id:"description",level:2},{value:"Format",id:"format",level:2},{value:"Use in VARIABLE_SPEED_COMPRESSOR_TRAIN_MULTIPLE_STREAMS_AND_PRESSURES
",id:"use-in-variable_speed_compressor_train_multiple_streams_and_pressures",level:2},{value:"Format",id:"format-1",level:3},{value:"Example",id:"example",level:3}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"stages",children:"STAGES"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/MODELS",children:"MODELS"})," /\n[...] /\n",(0,t.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/STREAMS",children:"STREAMS"})]}),"\n",(0,t.jsx)(n.h2,{id:"description",children:"Description"}),"\n",(0,t.jsx)(n.p,{children:"This keyword is used to define each stage in a compression train model. This is to be defined for all compressor models types."}),"\n",(0,t.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME:\n TYPE: \n ...\n COMPRESSOR_TRAIN:\n STAGES:\n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n ....\n"})}),"\n",(0,t.jsxs)(n.h2,{id:"use-in-variable_speed_compressor_train_multiple_streams_and_pressures",children:["Use in ",(0,t.jsx)(n.code,{children:"VARIABLE_SPEED_COMPRESSOR_TRAIN_MULTIPLE_STREAMS_AND_PRESSURES"})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"STAGES"})," is a list of all the stages in the compressor train."]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"For each stage, a temperature in Celsius must be defined. It\nis assumed that the gas is cooled down to this temperature ahead of the compression at this stage."}),"\n",(0,t.jsx)(n.li,{children:"A reference to a\ncompressor chart needs to be specified for each stage."}),"\n",(0,t.jsxs)(n.li,{children:["For the first stage, it is required to have ",(0,t.jsx)(n.strong,{children:"at least"})," one stream of INGOING type. In addition, ",(0,t.jsx)(n.code,{children:"INTERSTAGE_CONTROL_PRESSURE"})," cannot be used on the first stage."]}),"\n",(0,t.jsx)(n.li,{children:"Stages 2, ..., N may have a stream defined and it may be in- or outgoing. If an ingoing stream is defined, this stream\nwill be mixed with the outlet stream of the previous stage, obtaining a composition for the mixed fluid based on the\nmolar fractions and rate for each of them. If an outgoing stream is defined, the rate continuing to the next stage, will\nbe subtracted the rate of the outgoing stream."}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"format-1",children:"Format"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: \n TYPE: VARIABLE_SPEED_COMPRESSOR_TRAIN_MULTIPLE_STREAMS_AND_PRESSURES\n ....\n STAGES:\n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n STREAM: \n CONTROL_MARGIN: \n PRESSURE_DROP_AHEAD_OF_STAGE: \n CONTROL_MARGIN_UNIT: \n - ...\n - INLET_TEMPERATURE: \n COMPRESSOR_CHART: \n STREAM: \n - \n - \n CONTROL_MARGIN: \n CONTROL_MARGIN_UNIT: \n PRESSURE_DROP_AHEAD_OF_STAGE: \n INTERSTAGE_CONTROL_PRESSURE:\n UPSTREAM_PRESSURE_CONTROL: \n DOWNSTREAM_PRESSURE_CONTROL: \n - ...\n"})}),"\n",(0,t.jsx)(n.h3,{id:"example",children:"Example"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"MODELS:\n - NAME: compressor_model\n TYPE: VARIABLE_SPEED_COMPRESSOR_TRAIN_MULTIPLE_STREAMS_AND_PRESSURES\n ....\n STAGES:\n - COMPRESSOR_CHART: 1_stage_chart\n INLET_TEMPERATURE: 20\n STREAM: \n - 1_stage_inlet\n - COMPRESSOR_CHART: 2_stage_chart \n INLET_TEMPERATURE: 30\n - COMPRESSOR_CHART: 3_stage_chart \n INLET_TEMPERATURE: 35\n STREAM: \n - 2_stage_outlet\n - 3_stage_inlet\n INTERSTAGE_CONTROL_PRESSURE:\n UPSTREAM_PRESSURE_CONTROL: INDIVIDUAL_ASV_RATE #1st and 2nd stage\n DOWNSTREAM_PRESSURE_CONTROL: INDIVIDUAL_ASV_RATE #3rd and 4th stage\n - COMPRESSOR_CHART: 4_stage_chart \n INLET_TEMPERATURE: 15\n"})})]})}function l(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>i,a:()=>a});var t=r(7294);const s={},o=t.createContext(s);function a(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/41d1792a.f1d4fa7e.js b/assets/js/41d1792a.f1d4fa7e.js new file mode 100644 index 0000000000..b3f94dd570 --- /dev/null +++ b/assets/js/41d1792a.f1d4fa7e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[1748],{2977:e=>{e.exports=JSON.parse('{"label":"release","permalink":"/ecalc/docs/tags/release","allTagsPath":"/ecalc/docs/tags","count":18,"items":[{"id":"changelog/separator","title":"---","description":"","permalink":"/ecalc/docs/changelog/separator"},{"id":"changelog/next","title":"Next","description":"New Features","permalink":"/ecalc/docs/changelog/latest"},{"id":"changelog/v7-0","title":"v7.0","description":"Features","permalink":"/ecalc/docs/changelog/v7-0-release"},{"id":"changelog/v7-1","title":"v7.1","description":"Features","permalink":"/ecalc/docs/changelog/v7-1-release"},{"id":"changelog/v7-2","title":"v7.2","description":"Features","permalink":"/ecalc/docs/changelog/v7-2-release"},{"id":"changelog/v7-3","title":"v7.3","description":"Features","permalink":"/ecalc/docs/changelog/v7-3-release"},{"id":"changelog/v7-4","title":"v7.4","description":"Features","permalink":"/ecalc/docs/changelog/v7-4-release"},{"id":"changelog/v7-5","title":"v7.5","description":"Features","permalink":"/ecalc/docs/changelog/v7-5-release"},{"id":"changelog/v7-6","title":"v7.6","description":"Breaking changes","permalink":"/ecalc/docs/changelog/v7-6-release"},{"id":"changelog/v8-0","title":"v8.0","description":"eCalc\u2122 v8 is finally here! This new release brings a lot of nice new features and better usability. Here are some","permalink":"/ecalc/docs/changelog/v8.0-release"},{"id":"changelog/v8-1","title":"v8.1","description":"eCalc\u2122 v8.1 is a smaller upgrade from v8.0. Here are some of the highlights:","permalink":"/ecalc/docs/changelog/v8.1-release"},{"id":"changelog/v8-2","title":"v8.2","description":"eCalc\u2122 v8.2 is a smaller upgrade from v8.1. Here are some of the highlights. See","permalink":"/ecalc/docs/changelog/v8.2-release"},{"id":"changelog/v8-3","title":"v8.3","description":"eCalc\u2122 v8.3 is a smaller upgrade from v8.2. Here are some of the highlights. See","permalink":"/ecalc/docs/changelog/v8.3-release"},{"id":"changelog/v8-4","title":"v8.4","description":"New Features","permalink":"/ecalc/docs/changelog/v8.4-release"},{"id":"changelog/v8-5","title":"v8.5","description":"New Features","permalink":"/ecalc/docs/changelog/v8.5-release"},{"id":"changelog/v8-6","title":"v8.6","description":"New Features","permalink":"/ecalc/docs/changelog/v8.6-release"},{"id":"changelog/v8-7","title":"v8.7 (Latest)","description":"New Features","permalink":"/ecalc/docs/changelog/v8.7-release"},{"id":"changelog/v8-8","title":"v8.8 (Latest)","description":"New Features","permalink":"/ecalc/docs/changelog/v8.8-release"}],"unlisted":false}')}}]); \ No newline at end of file diff --git a/assets/js/428320b6.0ed894e1.js b/assets/js/428320b6.0ed894e1.js new file mode 100644 index 0000000000..f6e4be670c --- /dev/null +++ b/assets/js/428320b6.0ed894e1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[6193],{683:(e,c,i)=>{i.r(c),i.d(c,{assets:()=>h,contentTitle:()=>r,default:()=>d,frontMatter:()=>t,metadata:()=>a,toc:()=>o});var s=i(5893),n=i(1151);const t={},r="Changelog",a={id:"changelog/changelog",title:"Changelog",description:"8.9.0 (2024-01-11)",source:"@site/docs/changelog/changelog.md",sourceDirName:"changelog",slug:"/changelog/",permalink:"/ecalc/docs/changelog/",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/changelog.md",tags:[],version:"current",frontMatter:{},sidebar:"changelog",previous:{title:"v8.7 (Latest)",permalink:"/ecalc/docs/changelog/v8.7-release"}},h={},o=[{value:"8.9.0 (2024-01-11)",id:"890-2024-01-11",level:2},{value:"Bug Fixes",id:"bug-fixes",level:3},{value:"Documentation",id:"documentation",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores",level:3},{value:"Code Refactoring",id:"code-refactoring",level:3},{value:"8.8.0 (2023-12-27)",id:"880-2023-12-27",level:2},{value:"\u26a0 BREAKING CHANGES",id:"-breaking-changes",level:3},{value:"Features",id:"features",level:3},{value:"Bug Fixes",id:"bug-fixes-1",level:3},{value:"Documentation",id:"documentation-1",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores-1",level:3},{value:"Code Refactoring",id:"code-refactoring-1",level:3},{value:"Tests",id:"tests",level:3},{value:"Continuous Integration",id:"continuous-integration",level:3},{value:"8.7.0 (2023-12-05)",id:"870-2023-12-05",level:2},{value:"Bug Fixes",id:"bug-fixes-2",level:3},{value:"Documentation",id:"documentation-2",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores-2",level:3},{value:"Code Refactoring",id:"code-refactoring-2",level:3},{value:"Continuous Integration",id:"continuous-integration-1",level:3},{value:"8.7.0",id:"870",level:2},{value:"\u26a0 BREAKING CHANGES",id:"-breaking-changes-1",level:3},{value:"8.6.0 (2023-11-21)",id:"860-2023-11-21",level:2},{value:"\u26a0 BREAKING CHANGES",id:"-breaking-changes-2",level:3},{value:"Features",id:"features-1",level:3},{value:"Bug Fixes",id:"bug-fixes-3",level:3},{value:"Documentation",id:"documentation-3",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores-3",level:3},{value:"Code Refactoring",id:"code-refactoring-3",level:3},{value:"8.5.0 (2023-10-30)",id:"850-2023-10-30",level:2},{value:"Features",id:"features-2",level:3},{value:"Bug Fixes",id:"bug-fixes-4",level:3},{value:"Documentation",id:"documentation-4",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores-4",level:3},{value:"Code Refactoring",id:"code-refactoring-4",level:3},{value:"8.4.0 (2023-09-25)",id:"840-2023-09-25",level:2},{value:"Features",id:"features-3",level:3},{value:"Bug Fixes",id:"bug-fixes-5",level:3},{value:"Documentation",id:"documentation-5",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores-5",level:3},{value:"Code Refactoring",id:"code-refactoring-5",level:3},{value:"8.3.0 (2023-08-11)",id:"830-2023-08-11",level:2},{value:"\u26a0 BREAKING CHANGES",id:"-breaking-changes-3",level:3},{value:"Features",id:"features-4",level:3},{value:"Bug Fixes",id:"bug-fixes-6",level:3},{value:"Documentation",id:"documentation-6",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores-6",level:3},{value:"Code Refactoring",id:"code-refactoring-6",level:3},{value:"Tests",id:"tests-1",level:3},{value:"Continuous Integration",id:"continuous-integration-2",level:3},{value:"8.2.2 (2023-05-28)",id:"822-2023-05-28",level:2},{value:"Bug Fixes",id:"bug-fixes-7",level:3},{value:"Continuous Integration",id:"continuous-integration-3",level:3},{value:"Tests",id:"tests-2",level:3},{value:"Code Refactoring",id:"code-refactoring-7",level:3},{value:"Documentation",id:"documentation-7",level:3},{value:"Miscellaneous Chores",id:"miscellaneous-chores-7",level:3},{value:"8.2.1 (2023-05-09)",id:"821-2023-05-09",level:2},{value:"Miscellaneous Chores",id:"miscellaneous-chores-8",level:3},{value:"Continuous Integration",id:"continuous-integration-4",level:3}];function l(e){const c={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(c.h1,{id:"changelog",children:"Changelog"}),"\n",(0,s.jsxs)(c.h2,{id:"890-2024-01-11",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.8.0...v8.9.0",children:"8.9.0"})," (2024-01-11)"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["don't run pdoc on application module (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/abbb704d00def3149db3ae9d6e0e8932f655c740",children:"abbb704"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["maximum pressure ratio per stage in docs (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/338",children:"#338"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/261749f34c3e1955ac9d66d6b33f63bef431f984",children:"261749f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove docstring for number of compressors (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/339",children:"#339"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/be148baea2312778df4d9b5b373cb4044d8b9e1d",children:"be148ba"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update migration guide economics (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/335",children:"#335"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c4b50d6243acd52b5cc9deb80cdc94b061776417",children:"c4b50d6"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["upgrade deps (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/343",children:"#343"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b183db7864e62cd83fa2c3622ee66d60f78cedfd",children:"b183db7"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["move energy calculator to application (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/78b601ffb6f34d577ce214c8e01a0f40a0f627fe",children:"78b601f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move graph results (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b44f8c8b28ca15f085c25de4574cad8958e0c813",children:"b44f8c8"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rename file (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/59be31741903845388068cfbadc23b39cb48b35b",children:"59be317"}),")"]}),"\n"]}),"\n",(0,s.jsxs)(c.h2,{id:"880-2023-12-27",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.7.0...v8.8.0",children:"8.8.0"})," (2023-12-27)"]}),"\n",(0,s.jsx)(c.h3,{id:"-breaking-changes",children:"\u26a0 BREAKING CHANGES"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["include direct emitter results in ltp export (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/305",children:"#305"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"features",children:"Features"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add emitter rate type to venting emitters (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/312",children:"#312"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d6e16faa341a8517c82f4295c1fc92014b0a9b92",children:"d6e16fa"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes-1",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["correct changelog for venting emitters (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/324",children:"#324"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/eff911ea8064fb22d96e31ca3302da792bc5f6b3",children:"eff911e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["correct fallback to pydantic v1 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/332",children:"#332"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4f89e48e60de0f5ecd79244021c31a77285a2fc9",children:"4f89e48"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["include direct emitter results in ltp export (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/305",children:"#305"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f6b63715ddb1d1794274515edf87bb8dbb422203",children:"f6b6371"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove interpolation method (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/321",children:"#321"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d1255527c7b715569fe503db6eae9f008bc0c8f1",children:"d125552"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["support mismatching timesteps in ltp delta profile (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/319",children:"#319"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/32f02890f53c0a58aecf988cca41c8ffef25d33f",children:"32f0289"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation-1",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["remove costs mentioned in docs (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/322",children:"#322"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ee0396544ce07410bfbaa89af23fe1a3337d477c",children:"ee03965"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove reference to fuel price- and tax in drogon example (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/323",children:"#323"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/963d9ea858c6b39ca6d478def7a367fad1e3f69a",children:"963d9ea"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update docs for v8.8 release (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/334",children:"#334"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/153f7c408d1ffb4adbf39a006faa3ee1417b90b0",children:"153f7c4"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update PR template with checkboxes for stuff we forget (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/09f52bd08cae4bd7ccc4d6e173fb23917acf1bb5",children:"09f52bd"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-1",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add maximum_rate to CompressorModelResult (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/285",children:"#285"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2cb09e20bec5c3031dfbff6042c93c749e97be23",children:"2cb09e2"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["change ltp-filter for oil loaded/stored (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/331",children:"#331"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3cfe8084979176ebdff8eeace12769fd9bb2b95b",children:"3cfe808"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["define yaml classes for remaining elements in MODELS (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/307",children:"#307"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/fedb807c83a33190fe90862948a39fc8e3451ab0",children:"fedb807"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"ecalc-neqsim-wrapper:"})," update to neqsim 2.5.9 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/302",children:"#302"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/28885f292c745d1afaf1afb0014e6ad8244cbfd3",children:"28885f2"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["support pydantic v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/326",children:"#326"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b1b4acf1fd41b7a2c6c888af5ea46d89ddff9b34",children:"b1b4acf"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update dependencies (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/315",children:"#315"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/49a42deac51fe25ca8ed8188ef01285ca4069c67",children:"49a42de"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update dependencies (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/333",children:"#333"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0b027ef27e2e0f17f0da970ec3ed2d32ca3cc7b6",children:"0b027ef"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update pydantic (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/327",children:"#327"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4a325192ab3a81d0bfea4bb5d76db2346200b1c4",children:"4a32519"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update snapshot (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2cb09e20bec5c3031dfbff6042c93c749e97be23",children:"2cb09e2"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring-1",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["move simple result to presentation (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/318",children:"#318"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e90a6eb3fd79022bf6e963043d709a8cf61be0f7",children:"e90a6eb"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use time series collection yaml classes (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/328",children:"#328"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c36f62be4cc788ee832974aa63692e3d7ae2cb8d",children:"c36f62b"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"tests",children:"Tests"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["update tests with maximum rate (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2cb09e20bec5c3031dfbff6042c93c749e97be23",children:"2cb09e2"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"continuous-integration",children:"Continuous Integration"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add trufflehog pre-commit (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/320",children:"#320"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8459ca686fe97f0b2225984c703d8b6c778ea1ba",children:"8459ca6"}),")"]}),"\n"]}),"\n",(0,s.jsxs)(c.h2,{id:"870-2023-12-05",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.6.0...v8.7.0",children:"8.7.0"})," (2023-12-05)"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes-2",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["bug in compressor with turbine models with multiple streams and only one date (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/296",children:"#296"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8c2c786f93f0cec9cebb92ee02ac94080b7becb5",children:"8c2c786"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["deep copy when aggregating model results (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/311",children:"#311"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/53c8df4af5105ad7b91439c76a05b2bb32aee4bb",children:"53c8df4"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["do not merge model results (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/304",children:"#304"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/34cebc4551ab1aa3d3e1b6bdabf681e7abd4f306",children:"34cebc4"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["error message when model/facility input does not exist (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4437032bd59ca1708376303b78e7778143f58e1d",children:"4437032"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation-2",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["update documentation with info about direct emitters name change (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/310",children:"#310"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/990f3c2c932c0be9189828b3dae6b4034105574e",children:"990f3c2"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-2",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["fix typo (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/293",children:"#293"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/648997109e48e77727f511567af0bbd3a53d8cca",children:"6489971"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring-2",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["change emission rate type to calendar day (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/300",children:"#300"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f8e5052d19088bb709d48d6563962e5f98d358d2",children:"f8e5052"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["change name from direct to venting emitter (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/303",children:"#303"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8d038221c88946730e3badbcc4a4c9ab4d082c16",children:"8d03822"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove duplicated function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ba48dcd4d858bcaacdd183636157fe9c0eeaef61",children:"ba48dcd"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"continuous-integration-1",children:"Continuous Integration"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["skip spellchecking changelog (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/294",children:"#294"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9329ae28acbc4673260e8f80f45037ab7949598d",children:"9329ae2"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h2,{id:"870",children:(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.6.0...v8.7.0",children:"8.7.0"})}),"\n",(0,s.jsx)(c.h3,{id:"-breaking-changes-1",children:"\u26a0 BREAKING CHANGES"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["Change name from ",(0,s.jsx)(c.code,{children:"DIRECT_EMITTERS"})," to ",(0,s.jsx)(c.code,{children:"VENTING_EMITTERS"})," in input Yaml-file (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/pull/303",children:"#303"}),")"]}),"\n"]}),"\n",(0,s.jsxs)(c.h2,{id:"860-2023-11-21",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.5.0...v8.6.0",children:"8.6.0"})," (2023-11-21)"]}),"\n",(0,s.jsx)(c.h3,{id:"-breaking-changes-2",children:"\u26a0 BREAKING CHANGES"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["remove economy from ecalc (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/282",children:"#282"}),")"]}),"\n",(0,s.jsx)(c.li,{children:"graph.components and graph.get_component renamed to nodes and get_node"}),"\n",(0,s.jsx)(c.li,{children:"add type to consumers in system"}),"\n",(0,s.jsxs)(c.li,{children:["change name from DIRECT_EMITTERS to VENTING_EMITTERS in input Yaml-file (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/pull/303",children:"#303"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"features-1",children:"Features"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["expose yaml variables (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/1fe9dd0e3ceae658afaba24a2b18b91b3a11da43",children:"1fe9dd0"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["include rate type in header for csv export (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/279",children:"#279"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/5edd0ccff2b2f1dbfe746a666266b59c714a5eef",children:"5edd0cc"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["support bfs_tree in graph (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a4fff168dfa32d04588bb7e3b71de8c12e9dd6d0",children:"a4fff16"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["train v2 yaml and dto (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/272",children:"#272"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b0e346618bb3b39a186eb814dd40be2f7d905122",children:"b0e3466"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes-3",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["ensure that start date in global time vector is consistent with the requested output frequency (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/269",children:"#269"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e8ef9b98901603c0a9e328c2c8923c5facca962c",children:"e8ef9b9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make iteration loops for simplified train consistent (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/263",children:"#263"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b066c74e41fcbb6c32e51781c0225490f61e9690",children:"b066c74"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["wrong handling of values and timesteps in temporal models (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/261",children:"#261"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4e202648e6288508d67fee52c651d125166e68e7",children:"4e20264"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation-3",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["update changelog (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/264",children:"#264"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/22ef8f7ca2a1e1800050c8f55624677a2f282e43",children:"22ef8f7"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-3",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add INVALID_INPUT and INVALID_MAX_RATE (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d651ed6822ba180ba4a490e1245a0f406cc64e43",children:"d651ed6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add test of get_max_standard_rate for single speed compressor train (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d651ed6822ba180ba4a490e1245a0f406cc64e43",children:"d651ed6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["clean up common module (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/277",children:"#277"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e1959aba2a91c4abec2d820b6cb9378ac1dea281",children:"e1959ab"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["extend tests of time series resampling (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e8ef9b98901603c0a9e328c2c8923c5facca962c",children:"e8ef9b9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["improve algorithm to generate generic variable speed compressor charts from input points (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/276",children:"#276"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b257567230000a92b5fcca8f8becdbcc4c880092",children:"b257567"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make sure no mismatch between timestamps and time series values (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/251",children:"#251"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ae6ade9fafb9b0ccf2afec5e633c2190a2f1009b",children:"ae6ade9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["only calculate max standard rate for time steps with valid model input (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/252",children:"#252"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d651ed6822ba180ba4a490e1245a0f406cc64e43",children:"d651ed6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["possibility to include start and end date in resampling (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e8ef9b98901603c0a9e328c2c8923c5facca962c",children:"e8ef9b9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update changelog for v8.6 release (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/288",children:"#288"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/af32274c17cb8a84895bf85c7b83360cd76bc533",children:"af32274"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update dependencies for new v8.6 release (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/289",children:"#289"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/5a245a397761ed69c2ffab151a7a33567f3c7282",children:"5a245a3"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring-3",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add option to skip header validation on resource files (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/260",children:"#260"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/883b7e6888d5ff4ddca41cbeac0f7c7dd96e60a6",children:"883b7e6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["calculate timesteps separately (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/284",children:"#284"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/bd9d684467698edbd88d7a089846310b3cea5ea4",children:"bd9d684"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["collect results in priority optimizer (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/16b9ccc3687a6f2910c1df5602c82dd75706089b",children:"16b9ccc"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["common consumer system type (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/fe09263acaf8d3ea8518759e695d6f368dfb214a",children:"fe09263"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["common yaml system v2 class (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/98198fc7a19575f6b949527993999ae929a7590c",children:"98198fc"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["consistent naming of nodes in graph (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/676c7b84f99e1ca79446321ab06eba43df36abef",children:"676c7b8"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generic graph class (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6f63e40af1b2f57380852ef6403b6f4ac2474d50",children:"6f63e40"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move into presentation layer (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/271",children:"#271"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/52530e0b72aa0f07de93b6c231798dd5c9a20eb4",children:"52530e0"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove economy from ecalc (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/282",children:"#282"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a50148c8bce3bfdb491dbab65620ac964a80e65c",children:"a50148c"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rename Stream to StreamConditions (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/cf908ece731c6dcd2755ed6b08b8748cff5ac508",children:"cf908ec"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rename to component graph (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9629f221a0370559a7b89bbede0b5576eb916c20",children:"9629f22"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["system v2 stream conditions format (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/257",children:"#257"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e228e8b1180a3dd22a408fa199e52797aef43fc6",children:"e228e8b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use common consumer system dto class (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/267",children:"#267"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3c58b53e0731cbae9219bfb6eef96e5e5d4ea144",children:"3c58b53"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use PriorityOptimizer outside ConsumerSystem (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f1af9e6c701d8899450aacaa94ba02071b032dc6",children:"f1af9e6"}),")"]}),"\n"]}),"\n",(0,s.jsxs)(c.h2,{id:"850-2023-10-30",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.4.0...v8.5.0",children:"8.5.0"})," (2023-10-30)"]}),"\n",(0,s.jsx)(c.h3,{id:"features-2",children:"Features"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add pump results to system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8cf9e1b0d3ab8438291303663fc83092de1c808a",children:"8cf9e1b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add stream conditions to compressor v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/194",children:"#194"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/232f83bf91044b706ba4c7715ceddf71f9456644",children:"232f83b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["multiple streams in system (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/242",children:"#242"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/419c2e9cef6f6bb768b5e140a5092650cacd245b",children:"419c2e9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["support name for crossover streams (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/236",children:"#236"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c801f3f0fa4b967c15c5122ac8997695f38bae12",children:"c801f3f"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes-4",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["don't require HCEXPORT in editor (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/254",children:"#254"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e497245c9ec4e6d10e9def5999d24c5e0ba58134",children:"e497245"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["ensure unique names in system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/238",children:"#238"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3634a9e1a4f2a4181ea1679fa1edcce0bb57a06e",children:"3634a9e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rate when multiple streams model (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/214",children:"#214"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/892720e781978be0210b7488ad6c68466db51700",children:"892720e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["set_regularity fixture (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/213",children:"#213"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e9ea04f74c2262343fbde5d5aed46ffc15404e29",children:"e9ea04f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update ecalc validation for yaml file in web (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/243",children:"#243"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2981f2c71b7aba0271f72c8ec5f1d764a0d36387",children:"2981f2c"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use file reference instead of urls in docs (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/216",children:"#216"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/35c4f6853c9452d1963daf321cce3e2ebe087f9e",children:"35c4f68"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["wrong data for boilers and heaters in ltp-results (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/237",children:"#237"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/851e83141c1971a8fc1fdec47e05b4e5a26d0861",children:"851e831"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation-4",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add missing keywords surge control margin (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/239",children:"#239"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8b97673b001231b6960bda817d50241135df65df",children:"8b97673"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update changelog for upcoming release v8.4 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/203",children:"#203"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/66671e07ce678f4444f6428b776b60c607d35957",children:"66671e0"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-4",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add ",(0,s.jsx)(c.strong,{children:"init"})," file to ecalc_cli (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/af6bee96ae3ac69137f38117013a305f474acd87",children:"af6bee9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add chart area flag to test of full recirculation (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0c452515226beec76a4db3c674d4fa102771dbe7",children:"0c45251"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add check for zero efficiency in stage (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3ea3035c659ee922a41c70b157f9d6a1a1f8214d",children:"3ea3035"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add dependabot actions monitoring (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/219",children:"#219"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d5f5dfd12103fb60104057fd2f3b5ce4484e3494",children:"d5f5dfd"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add ModelInputFailureStatus (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6b0c72875e667ca1abce5b9b1f2ef4a9548d0d1e",children:"6b0c728"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add NO_FLOW ChartAreaFlag (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0c452515226beec76a4db3c674d4fa102771dbe7",children:"0c45251"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add rate type to pump model result (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/209",children:"#209"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/21deeb7a70cd64f47db87494314a0119ee4598d5",children:"21deeb7"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"cli:"})," add all energy usage models load_results test (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/220",children:"#220"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e09febb517a62d27e2d794946d016f1ba0af8fd1",children:"e09febb"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"deps:"})," bump actions/cache from 3.0.11 to 3.3.2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/223",children:"#223"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/087867c19fc087702ae7829b3d6cddfc1ac62f9d",children:"087867c"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"deps:"})," bump actions/checkout from 2 to 4 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/221",children:"#221"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/bcc2f81d9eed20f3021c1e13fead3f8c8d009267",children:"bcc2f81"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"deps:"})," bump actions/setup-node from 3 to 4 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/cb7e816932e73d091cfa4211abe086620ab320fd",children:"cb7e816"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"deps:"})," bump snok/install-poetry from 1.3.3 to 1.3.4 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/222",children:"#222"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/80dab720f352995121a1cd470e14eef9779a45fb",children:"80dab72"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix tests (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6b0c72875e667ca1abce5b9b1f2ef4a9548d0d1e",children:"6b0c728"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["handle requested pressures correct for compressors without system (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/233",children:"#233"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/445fc9d856db729181e48f04d58cf05d324a8c50",children:"445fc9d"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["handle requested pressures for compressor systems (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/215",children:"#215"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6b054390fe86fe5067a908854f0dd6d48ba114ff",children:"6b05439"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["more robust surge control margin calculation (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/229",children:"#229"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/74b4e599ff2336567e7a86e57bb4287030ccea08",children:"74b4e59"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move feature experimental to main method for requested pressures (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/230",children:"#230"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/00ad854cc23822690e662338f6592142344a59f3",children:"00ad854"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["pre-commit (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a310df21ebb9dc27e9999b577cc7ae7a106aa68c",children:"a310df2"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["show correct version (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/211",children:"#211"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f8de992b6d2621a604f9b31b6eea0ff644df30dd",children:"f8de992"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update dependencies (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/212",children:"#212"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c9b850672357fd48a0b1f40f5b429ae615fbd914",children:"c9b8506"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update dependencies (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/259",children:"#259"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e7f031f73dc3320352cd6087e32b281dbf01e6bc",children:"e7f031f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update python deps (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/247",children:"#247"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/514da161158200bc18a8963cb10be141c9847fb8",children:"514da16"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update system v2 tests to only use one crossover (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/205",children:"#205"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/aa6516367fd217b3868af2c1b56119ec548c77ad",children:"aa65163"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update zero efficiency error message (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/258",children:"#258"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/5be6fe433791bee1f25dfcc265ffb94c87633836",children:"5be6fe4"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["upgrade packages (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/255",children:"#255"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/035aad15b41bb16676ec33d33dcb78d139e2bc6c",children:"035aad1"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["version must be updated in version.py (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/63eb672ff5a28c5c4b14294c8d9dcc38a3481089",children:"63eb672"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["warn user about full recirculation of fluids in a compressor stage in a multiple streams and pressures compressor train (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/196",children:"#196"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0c452515226beec76a4db3c674d4fa102771dbe7",children:"0c45251"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring-4",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["implement evaluate streams in models (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/232",children:"#232"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/df6b6b01099fe87738594544512c28d0bceb0d07",children:"df6b6b0"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"libecalc.core:"})," stream as input (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/224",children:"#224"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e06f970147e5539fa2c8db0ca53675d24c56ae33",children:"e06f970"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move crossover to component_conditions for system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/204",children:"#204"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/018b47291cbfd5b8b92bbff9c79846b32696d316",children:"018b472"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move RateType into common module (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/253",children:"#253"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c7f5a9955c55fdc970f60b6aade8a0793acab27a",children:"c7f5a99"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move validate operational conditions from compressor train, rename to validate model input (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/256",children:"#256"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6b0c72875e667ca1abce5b9b1f2ef4a9548d0d1e",children:"6b0c728"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove regularity our of core/domain (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/246",children:"#246"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/714888bfa69460174c1b3917470018e8e688b3e1",children:"714888b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove temporal operational settings system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/244",children:"#244"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a1d2ce62c4cfde50665bd1fdfa41402a64548672",children:"a1d2ce6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rename streamCondition to stream (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/32885b5b054008cbfb682454daaa29d443fd561f",children:"32885b5"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["separate optimization from system (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/245",children:"#245"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b580e3d80ab5392410c438f6ff355fdf1326f121",children:"b580e3d"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use Graph object to build graph (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/250",children:"#250"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ce65dbad024fc9afae74a2c533767152ce2efa20",children:"ce65dba"}),")"]}),"\n"]}),"\n",(0,s.jsxs)(c.h2,{id:"840-2023-09-25",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.3.0...v8.4.0",children:"8.4.0"})," (2023-09-25)"]}),"\n",(0,s.jsx)(c.h3,{id:"features-3",children:"Features"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add compressor inlet- and outlet pressures to models/train level (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/152",children:"#152"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9b95ee50fd78d77c59dfe2533c10dbcdc41461a7",children:"9b95ee5"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add input compressor pressures to output (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/140",children:"#140"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/74e3e5673bad36bf30d8b217609819a79d7e76bb",children:"74e3e56"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add support for system v2 in FDE (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e6d1f938d62d68479835f90932bc09b49203a6c9",children:"e6d1f93"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add support for temporal operational settings in v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f2b217acaaf445df03fba077cd7407a4c37375d2",children:"f2b217a"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes-5",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add system v2 subcomponents to components list (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b61a0feba9d28c27992128a2e02262c58dedcbdb",children:"b61a0fe"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add system v2 to generator set consumers (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/166",children:"#166"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d40558eb0c727723ba1cf952dfbd58b73dca0cd0",children:"d40558e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["avoid name conflicts with ecalc cli package (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/197",children:"#197"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/140c4481b8a860b203b338b51a883c41bd6b4dc6",children:"140c448"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["bug in asset_result_dto (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/170",children:"#170"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c45a7acfb4bf3c89f8c89e71561a90e2831ccb17",children:"c45a7ac"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["correct type for total system rate in pump system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/167",children:"#167"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/5559cdd478511b050a3f344da33110621f221b76",children:"5559cdd"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["do not return actual rate in results for compressor sampled since it can not be calculated (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/190",children:"#190"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/74fcfd8ffc4835d6ddec442374f1389f24df66d7",children:"74fcfd8"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["expression type in system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/5318fb536945cd2aeb82f03cb922fa1a4ed950e1",children:"5318fb5"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["forbid extra attributes in TimeSeries (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/195",children:"#195"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/24c27bb0d3f9ee5570dc76e6d6cf3a45bc006e27",children:"24c27bb"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["full run with system v2 components (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/147",children:"#147"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2279ef430f04673bc91926316663cdbd97cfc61d",children:"2279ef4"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate system v2 schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/161",children:"#161"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a27c39253d91a3f1c7cc559164874c2d5f9443d3",children:"a27c392"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["handle all situations where zero mass rate is entering a compressor stage in a multiple streams compressor train (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/164",children:"#164"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ba9235efd01f8b6cfc1dd776f6355d076c3fb93b",children:"ba9235e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["handle dates in yaml correctly (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e9c28d057413aa801ec9af86b89f3c4d5b3de8e5",children:"e9c28d0"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["issue with crossover rate calculation in system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/188",children:"#188"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/623a1cfa1e9ee888d69543dc2050cf4c25945baf",children:"623a1cf"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make ecalc installable again (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/58693debf2cdb774a7b9659214ba9aa9453af8d0",children:"58693de"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rate_type was snake_case in json output (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/172",children:"#172"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/dc82a88930e158fc5b6a762cd1fe7d75534d86d7",children:"dc82a88"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["requested pressures not always an attribute (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/155",children:"#155"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0078405e3ad2d254b320239fc8636c3c2bdfbebf",children:"0078405"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["system v2 evaluation (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6494257c5d67f8a19582b2c152d73ec550289196",children:"6494257"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use results base (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/199",children:"#199"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/cebde330135210bcc25a5950a2416a8fcf747b09",children:"cebde33"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["wrongly accessed rate in pump system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/56da4b2a07188200589795ab8a2e7f1ebfe3fe95",children:"56da4b2"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation-5",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add further explanation to generic workflow (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ddcb462ba1eda072df2abfd40e95fa677832ef91",children:"ddcb462"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add generic workflow (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/30553e0e7282ef35e616d2f3629de57e104d7e42",children:"30553e0"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add powerlossfactor in generic workflow (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3d152c880b9d8b33e3ac496ddc96eb2b2f588fb1",children:"3d152c8"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["changelog v8.4 add input compressor pressures to output (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/150",children:"#150"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/46e308fba1c1f4001bd1eaa340880c8409c8841b",children:"46e308f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["correct order of diagrams (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/71a07f5315a28d053557db25209d543d4a570307",children:"71a07f5"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make mermaid diagram of workflow render correctly (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b1c5b233907fa705832e55621e6917efb8620df7",children:"b1c5b23"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make mermaid workflow diagram render correctly (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/7a99b5b062804b0f0661ac4d6a62f8d6f32a2fdb",children:"7a99b5b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update changelog for v8.3 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b424176c1dad13f4a29ba7c84cc2354e37b75c2a",children:"b424176"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update workflow with comments (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a71abfe32f02a056a0253ec7e4596b0b10fb94b2",children:"a71abfe"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-5",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add pressure drop ahead of stage to inlet pressure before choking (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/146",children:"#146"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e5368de941febf44f7e5e13c11b1fc3509c2e95d",children:"e5368de"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add rate type to compressor model results and convert to time series (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/187",children:"#187"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c86bf3f940224ca765f5705f10df676eb6e5d557",children:"c86bf3f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add validation for missing headers in csv resource file (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/191",children:"#191"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/60e84032d932deaf0591c6f5d5d68d70d23dc753",children:"60e8403"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["adding test of full recirculation in multiple streams compressor trains (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ba9235efd01f8b6cfc1dd776f6355d076c3fb93b",children:"ba9235e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["calculate correct standard condition density when mixing two streams (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ba9235efd01f8b6cfc1dd776f6355d076c3fb93b",children:"ba9235e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["clarify neqsim depenedency in ecalc (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/198",children:"#198"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d6635a988de18799563c09c51ae7f3f7944c8915",children:"d6635a9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"docs:"})," fix equations showing twice (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/141",children:"#141"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2455e34cbaf047bc416a287052c12d9fbbdc963e",children:"2455e34"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["enable mypy for cli (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/189",children:"#189"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/da713fcdac9d2c32ed6b60b788de31a765c1644a",children:"da713fc"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix spelling errors in changelog (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/de3c2eb0cf74068dd6c04e7710eaeb1d2dd27a77",children:"de3c2eb"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove unnecessary folders (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/186",children:"#186"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e861d8782aa2d3280a7e3e5c24f757558e5656f5",children:"e861d87"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rename conflicting file names (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/153",children:"#153"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/654175e9be0e40b521c6c68871b8a0b85906605c",children:"654175e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["revert nan to num in expressions (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/202",children:"#202"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2f95c2966ebfc906ebeda2f12ad1fe72ec0a59b4",children:"2f95c29"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update archive (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/181",children:"#181"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/03abf64e9267374b8cd641c09d870631200a2ec5",children:"03abf64"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update deps to latest (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0f30f49db6febd033cfd139727c85c31c4676fd2",children:"0f30f49"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring-5",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["change typ to rate_type for TimeSeriesRate (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/89",children:"#89"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8be87ddff732592e16ff337fe9927ead438d5928",children:"8be87dd"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate asset/ecalc model schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/157",children:"#157"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6818848afa5f9c390d9214597b8ea938eeb43037",children:"6818848"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate direct emitter schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/180",children:"#180"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/924526ad7958cfce6e75aa43791224edbcf6db70",children:"924526a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate facility type schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/182",children:"#182"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/942897921d8f38115878bdd95349c43c449240b7",children:"9428979"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate fuel consumer schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/160",children:"#160"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9f580c16f6f25e22d30e8d36dd05536303ec6929",children:"9f580c1"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate fuel types schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/179",children:"#179"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e17ef3be779921e029db5c7ca10ed86a2e71f797",children:"e17ef3b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate generator set schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/165",children:"#165"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ab25e055de634a4ecc59ae580834ee2e537fd991",children:"ab25e05"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate installation schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/159",children:"#159"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/030a44baf61719a8de6ed48b772a47eccd7d923c",children:"030a44b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["generate time series schema (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/176",children:"#176"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b02d68dbc615b9802c54d6e9806430aceee1b354",children:"b02d68d"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["improve error message when wrong CURVE-keyword input to single speed compressor (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/173",children:"#173"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9502bcc8ee504d490e293f4bada839e96e011092",children:"9502bcc"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["improve error message when wrong CURVES-keyword input to variable speed compressor (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/175",children:"#175"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/714e867f7593527078480e4d9c7bca62da163d7a",children:"714e867"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["merge functionality for results (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/193",children:"#193"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/db1e9b1d52d9dfce48d54dfa6cd77ac4a1bbf92f",children:"db1e9b1"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move common properties for system v2 operational settings (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/10b5e07915d52ce6b08f508dd87d31c4d8dc8778",children:"10b5e07"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move yaml system into package (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b477b159cc60df96c5ec230cd8d8db519f721f85",children:"b477b15"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove condition and power_loss_factor from system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2507bb92730cd4e9b5bd35d2f7e429d493fb5478",children:"2507bb9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove rate_fractions from system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ba788fdd8dff754c3ca16315d098e00911d91fa0",children:"ba788fd"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use common Period,Periods classes (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/76366cec64da5c7585635db69adf457fbb36775e",children:"76366ce"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use common to_camel_case function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/171",children:"#171"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f5f0c2f8da6e07ad666f8fc203876eece646e6e8",children:"f5f0c2f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use yaml prefix for yaml klasses/modules (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/174",children:"#174"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e91ac2a77345556d8a53c10a4be049eb8ec2c7ce",children:"e91ac2a"}),")"]}),"\n"]}),"\n",(0,s.jsxs)(c.h2,{id:"830-2023-08-11",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.2.2...v8.3.0",children:"8.3.0"})," (2023-08-11)"]}),"\n",(0,s.jsx)(c.h3,{id:"-breaking-changes-3",children:"\u26a0 BREAKING CHANGES"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["energy model type not allowed to change over time (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/131",children:"#131"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"features-4",children:"Features"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["output pump head to json-file (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/49",children:"#49"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/60720f429cb5da82cd839740eca8d3039c9d5969",children:"60720f4"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes-6",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["avoid zero discharge pressure after validation of operational conditions (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/830c75e27a29549157658c606e618da381c24e81",children:"830c75e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["bug fix to joining results from different temporal models with compressor train models having multiple inlet or outlet streams (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/63",children:"#63"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/da3144a0cbb3e6121809c8eeee86e62a2a3ed5e1",children:"da3144a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["json schema accepts MAXIMUM_DISCHARGE_PRESSURE for single speed train (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/86",children:"#86"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a18de1eae60085211b640b67a4f372346382fdc8",children:"a18de1e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["json schema allow stages to have control_margin and control_margin_unit (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/90",children:"#90"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2415534053df4e50496fd2ae4504cff76ab14346",children:"2415534"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make apply_condition work for 2D numpy arrays also (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/78",children:"#78"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/bce91cb0b6b821e1b1a579c40f19311e847577b3",children:"bce91cb"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make sure that suction pressure is less than or equal to discharge pressure for compressor train (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/104",children:"#104"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d2182730c2fdcd98e54fef8625cd289dc206b2bf",children:"d218273"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["parse scientific notation numbers in expression (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/85",children:"#85"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/fdf322bafa9a3379b6481e57ca1e761475f42b25",children:"fdf322b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["parse spaces as thousand separators from excel (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/107",children:"#107"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/5a3bd6a2b8e85dcc248435b30677e278d64c7f93",children:"5a3bd6a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["pump results wrong when resampled (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/71",children:"#71"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/daffdb3d969add106bbbfd782cfae418cfd8650d",children:"daffdb3"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["resample emissions correctly to create valid json (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3c9b52e40c1c88a11db3d088c0fbb320a4920daa",children:"3c9b52e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["result of validation of operational conditions when rate is zero should always be valid (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9de403c8b92895fafabea875d970fc1901a4ba89",children:"9de403c"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["validate time steps where rate is different from zero, not only when larger than zero (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6ce07c41e82b397d9512566a42fd8fd2017c14d1",children:"6ce07c4"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["wrong standard_conditions_density when mixing two fluids (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a16a695736125dc4b662ab31ab9a83186b14f369",children:"a16a695"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation-6",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["fix generic compressor example (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/38870a3f735e7397502345dda69f646240328490",children:"38870a3"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix links (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/116",children:"#116"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/62cadfcf581b101d7bb33b3772ffb65eefbf670b",children:"62cadfc"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["how to migrate from 8.1 to 8.2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4d3be58f5af44cbdee4158017b163361371dc23c",children:"4d3be58"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove unnecessary information from migration guide (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/47305386db82d826245c67e6c10a8597a36bfc09",children:"4730538"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["specify only gensets for boiler/heater (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/53",children:"#53"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2df3bdf299bcb6cf47289259e4fedd21c2de141c",children:"2df3bdf"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update changelog 8.2 with changes for ltp- and stp (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/43",children:"#43"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6fe4b773a156d01eec67e8e70b764d4e18d374ce",children:"6fe4b77"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update changelog for 8.2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3ccea743332f0d1950ff61ca6747bb507ea37bd4",children:"3ccea74"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update docs and changelog for energy models (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/133",children:"#133"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8f0d71633d80a99da369dffa05f386e554f3c0bb",children:"8f0d716"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update documentation for heaters and boilers (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/52",children:"#52"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2bef70731be94ace7d0a2269f2ebf07bd01e82b2",children:"2bef707"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update migration guide with ltp- and stp changes (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/42",children:"#42"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4b0b23011a9d2161741dd52031070307fc6c1b68",children:"4b0b230"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-6",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add 8.3 changelog (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9f4a4af545126922a38807c51268bd84dfb868db",children:"9f4a4af"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add fluid mixing checks (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/53c1626ebf10edc71c0ba4ef5fcdbe1cd6a32ac0",children:"53c1626"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add fluid mixing checks (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0f3ddcaca1164acad3f5d213b2e8daac05333042",children:"0f3ddca"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add installation filter to flare nmvoc (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/87",children:"#87"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f37b76d0b3c2f6941585299998205c3a907b41a8",children:"f37b76d"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add installation filter to remaining ltp-columns (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/91",children:"#91"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/39df7923d79a393981285986016311e9f1b0848f",children:"39df792"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add power adjustment constant also for compressor trains with interstage pressure (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/136",children:"#136"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c8a486114ec713358798a5dba2a5500dfbbef21d",children:"c8a4861"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add test for adjust energy usage on multiple streams and pressures compressor trains (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c8a486114ec713358798a5dba2a5500dfbbef21d",children:"c8a4861"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add test of count_parentheses (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0d1ce6feff7a6aaeecab57fd9a661122b691d3b5",children:"0d1ce6f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add test of validation of operational conditions when suction pressure exceeds discharge pressure (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d2182730c2fdcd98e54fef8625cd289dc206b2bf",children:"d218273"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["added changelog entry about interstage pressure fix (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/95",children:"#95"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2a1e8b085ed87dcbb8da874b64f737721f0ceaae",children:"2a1e8b0"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["count parentheses in list of tokens only among the elements that are strings (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/94",children:"#94"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0d1ce6feff7a6aaeecab57fd9a661122b691d3b5",children:"0d1ce6f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["energy model type not allowed to change over time (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/131",children:"#131"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/670cff2154e2881aea25903557a7f187bdab05ee",children:"670cff2"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["enforce unique fuel type names, and unique emission names within one fuel type (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/84",children:"#84"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4ea9c630510015e2030f0840b933ea399cc0734b",children:"4ea9c63"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix broken link in documentation of GENERATORSETS keyword (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/103",children:"#103"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/329c8e993c217e7685c082b7671a12c4115bba87",children:"329c8e9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix typing of fluid composition (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c0d98b3a6f4dfb411edfa9bdd8be3c887b28f6da",children:"c0d98b3"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["improve documentation on defining compressor charts using CURVE and CURVES (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/97",children:"#97"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/1bde68a38e75255c8f2d6cd88fb5b6ba1ddb97c9",children:"1bde68a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["improve error message when bad yaml file name (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/77",children:"#77"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d2eb733264b2d5b2114a785096c9d6abbffea21b",children:"d2eb733"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["merge queue (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d4489c604b807c07a7e41a038cbdfeca9720ade1",children:"d4489c6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["numpy ndarray typing (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/46",children:"#46"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9b7b308ea6ce5c0aee5acdf8226cd94b90b448aa",children:"9b7b308"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["pin numpy to compatible numpy version (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/35a3640a96c376f4d37e74fd62aec0f0a0bf458b",children:"35a3640"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove limiting dependency typer-cli (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/820844475c29460f29a44bb7917ed5bd37d4ad45",children:"8208444"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["simplify dependencies for use with komodo (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/39c5c365aea85ba333a5a509fe5cfbee1be5d9d0",children:"39c5c36"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update dependencies to be aligned with external requirements (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/fbfbfeb4292011c04d9107218a5b4188e052f7ff",children:"fbfbfeb"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update snapshots after power adjustment constant fix for compressor trains with interstage pressure (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c8a486114ec713358798a5dba2a5500dfbbef21d",children:"c8a4861"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring-6",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["consumer system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/248dabb595a12ed6ca9a0f8ef519f5439a3b0964",children:"248dabb"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["ensure neqsim fluid is contained to FluidStream object (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/118",children:"#118"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d1d6ad6fa1c6cfdf4eee428477995c6f163fa11a",children:"d1d6ad6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["enthalpy calculations (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/109",children:"#109"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a01a2153fe904d191150c4ced09257dc45484194",children:"a01a215"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["enthalpy calculations (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/110",children:"#110"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/cf7d1a9e975fece41b98f4ab6c7bbb3edb562735",children:"cf7d1a9"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["improve naming and documentation (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/94be7fa714a0db20944e9b35d1867d11a0748e7f",children:"94be7fa"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["molar_mass_kg_per_mol is not used in the code (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/3ea535ef68ead2b600b33319c1ed70907e7ba681",children:"3ea535e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move NeqSimfluid creation into NeqSim wrapper (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/57c4b244d6449c6b43bcea75a1f7ed1f82ccfc8c",children:"57c4b24"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["NeqSim mapping (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/120",children:"#120"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0a0b2fea564c1695bb920145086f23bccac91528",children:"0a0b2fe"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove FluidStream copy (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/119",children:"#119"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0e30ab288b18fecbde62067564ac235d6c58dae1",children:"0e30ab2"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["Use a list comprehension to create a transformed list (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/112",children:"#112"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/5d7292bdafd16bc74b2e9b8bc13e97cf279fd9f7",children:"5d7292b"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"tests-1",children:"Tests"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add test for fluid stream mixing (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/0ba8f8fff9503b791b6edaf16c45cb3d922d6c2b",children:"0ba8f8f"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"continuous-integration-2",children:"Continuous Integration"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["create release-please pr against correct branch (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/be9426a774b8704b2f22e9a83544e07bd92a8808",children:"be9426a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix issue with api reference docs generation (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/44",children:"#44"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/42c140269a9e8a6d5f09e9354d14ae51d02f3e81",children:"42c1402"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix syntax for gh action workflow (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d8700dd9bccd40cb4b3bdb75119e0bd47baf3985",children:"d8700dd"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["Lock pydantic version in CI and update hooks (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/106",children:"#106"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2ea517e79a34195e561a4897798bd24ef9cae6ae",children:"2ea517e"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove duplicate build of docs (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/62",children:"#62"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e5b896b9f46a7e13c6d806237c4d4bef44833b77",children:"e5b896b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["set default ownership for source (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/16d54f1a30368d92ead377baceef98820754c25f",children:"16d54f1"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["support hotfix releases (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/03469295d20526e391938a5830d1513088a8803f",children:"0346929"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update pre-commit settings (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6092255da9ca373537b162b21190bfe9f138a027",children:"6092255"}),")"]}),"\n"]}),"\n",(0,s.jsxs)(c.h2,{id:"822-2023-05-28",children:[(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/compare/v8.2.1...v8.2.2",children:"8.2.2"})," (2023-05-28)"]}),"\n",(0,s.jsx)(c.h3,{id:"bug-fixes-7",children:"Bug Fixes"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["allow electrical driven consumers in consumer system v2 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/92cb4faa7bfa525af6527892eab2dd38606b2033",children:"92cb4fa"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["cast float to numpy array in function call (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/39",children:"#39"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/250928c2b573f6148129ec32bc54932cbb2cb4a0",children:"250928c"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:[(0,s.jsx)(c.strong,{children:"NeqSim Wrapper:"})," inconsistent return type (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/94824210b4c2da666d9280ee581e3a98463e4742",children:"9482421"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["output emissions in fixed and predicted order (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/059dab592bf396eb20d4b825b8358fc10793ca5d",children:"059dab5"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"continuous-integration-3",children:"Continuous Integration"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["enable mypy for neqsim wrapper (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/871c038c756ba40fc1c43bfbee7f83b0f4fd5390",children:"871c038"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["parallelize tests in docker (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/4e73b680147c558e4e7cb0d44a78cfaa0e1a357f",children:"4e73b68"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove docker tests (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a2b5c1a7158d81094982724a63748ca4798f14ca",children:"a2b5c1a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["use xdist to parallelize test suite (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/2895ae7361878ea94d0d5be4a04a6ffbe0067b3d",children:"2895ae7"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"tests-2",children:"Tests"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["compare consumer system v1 vs v2 both fuel and power consumers (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/74fafce276b93c9495bcfa1c2800c2a866bfa388",children:"74fafce"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"code-refactoring-7",children:"Code Refactoring"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["even more typing! (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/a7b22e23fa73d4e0cd35750f7ea6cea5e52f8abd",children:"a7b22e2"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix more typing (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/08394a3ce3969976674532ccf8c3876265315035",children:"08394a3"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["make units lowercase in function names (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/272f0d7274986bc54c0717e7964d5a48c9a06723",children:"272f0d7"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["raise exceptions from error (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/ee6e4742da1c3201abe8969d2dfedb1c2d4b369b",children:"ee6e474"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove duplicate function for converting to standard rate (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/93de4f4d10b10763428d933e7afc3dea277a31ac",children:"93de4f4"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove unused code (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/7ccf2c1dfd6d51242032d1b7bf45c52f6b7e90f5",children:"7ccf2c1"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["rename function variables (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/c56693a9e982c7e2275cc277939624c7812e9b65",children:"c56693a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["typing and typos (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/936b9417da0723871d6c46f258d256a8967f934c",children:"936b941"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"documentation-7",children:"Documentation"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add docstrings to undocumented functions (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/064adfa204c2c9f21588c30dc2c2cf3d2375c8a7",children:"064adfa"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update compressor pressure control (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/14",children:"#14"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/1da1999ac4dfaf21abd50e9d9ecc94102a0427e2",children:"1da1999"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-7",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["add consumer function utils (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add consumer system v2 sub results (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/b78b03504c4a46114062aded6661f00400c6ca06",children:"b78b035"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["add testing of condition in consumer system consumer function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["capture return values from a decorated function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/09ef23e92bf2755c7b83c7de5e9cbe9ee862db05",children:"09ef23e"}),"), closes ",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/4489",children:"#4489"})]}),"\n",(0,s.jsxs)(c.li,{children:["capture valid neqsim states (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f9c8b09f36d1f9a965b94cd32ef2d7b47c910a75",children:"f9c8b09"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["change to absolute image links in readme (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/16",children:"#16"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9a54f516613509bd6d5595f8afc1e5dce7ac860a",children:"9a54f51"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["conditions in tabular consumer function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["correct link to documentation from README.md (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f185a7f8c389d4f9f5e087b68bfc83cc4fddad74",children:"f185a7f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["coverage from coverage.py is not directly supported (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/8e76c8ab90d455613868e4343d6a2f61ccfb2a68",children:"8e76c8a"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["enable B904 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/65ac18ba23178c57886c1a77b74b2ee52c6d7a60",children:"65ac18b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["evaluate consumer system v2 consumers according to input order (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/00882321d823f74cf37f0b42e9771775b8eb34db",children:"0088232"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["fix badges (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/dd2fd6be194d306ae1ef969b13c43aea7352db58",children:"dd2fd6b"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["migration guide changed resampling method (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/38",children:"#38"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/d4f11dc49ce5eef29f6982f9514f6664ef18c764",children:"d4f11dc"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move conditioning for consumer system consumer function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move conditions for compressor consumer function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move conditions for direct consumer function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move conditions in pump consumer function (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["move evaluation of conditions before calculations (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/24",children:"#24"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove energy usage before conditioning from tests (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["remove energy_usage_before_conditioning from results (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/50e2d667a37fc5f09a4c76615be0b21a42e2c703",children:"50e2d66"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["set power to zero when rate (and fuel consumption) is zero (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/27",children:"#27"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/1ee5bfd2af30482683698172cd2a9c512f793b77",children:"1ee5bfd"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["typo (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9c3af00b4bcf5e3e57a99c97d3cc9028faeca307",children:"9c3af00"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["typo (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/389db6f29e7a7ff9044b7bac5fb0e6fddba1687d",children:"389db6f"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update dependencies to latest compatible (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/58098624c64693d20591bc96d79c2cbc61e3b5a6",children:"5809862"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update description etc in readme (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/f37dbb7b97ade6c358b89e288ba644b06d546187",children:"f37dbb7"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update docstring for numeric_methods (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/be435c3c96bc378614c4f761410c005be77025a4",children:"be435c3"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update test snapshots (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/1ee5bfd2af30482683698172cd2a9c512f793b77",children:"1ee5bfd"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h2,{id:"821-2023-05-09",children:"8.2.1 (2023-05-09)"}),"\n",(0,s.jsx)(c.h3,{id:"miscellaneous-chores-8",children:"Miscellaneous Chores"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["initial commit (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/e4a59f03f716c7ceb1d3df50af6ef3cc76c405cd",children:"e4a59f0"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["release 8.2.1 (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/9d66de6199b35d3bfd279fd1fe96806b05e6d594",children:"9d66de6"}),")"]}),"\n",(0,s.jsxs)(c.li,{children:["update documentation url (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/6443ecf7324e6ee33d02bfa1a3f7b9168f19a612",children:"6443ecf"}),")"]}),"\n"]}),"\n",(0,s.jsx)(c.h3,{id:"continuous-integration-4",children:"Continuous Integration"}),"\n",(0,s.jsxs)(c.ul,{children:["\n",(0,s.jsxs)(c.li,{children:["enable publish to pypi (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/issues/15",children:"#15"}),") (",(0,s.jsx)(c.a,{href:"https://github.com/equinor/ecalc/commit/fe6f069b12119b62d054a635eb038b37a4394415",children:"fe6f069"}),")"]}),"\n"]})]})}function d(e={}){const{wrapper:c}={...(0,n.a)(),...e.components};return c?(0,s.jsx)(c,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1151:(e,c,i)=>{i.d(c,{Z:()=>a,a:()=>r});var s=i(7294);const n={},t=s.createContext(n);function r(e){const c=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(c):{...c,...e}}),[c,e])}function a(e){let c;return c=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(t.Provider,{value:c},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/43a1031a.18b5a55b.js b/assets/js/43a1031a.18b5a55b.js new file mode 100644 index 0000000000..2db08d1a9c --- /dev/null +++ b/assets/js/43a1031a.18b5a55b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[8010],{4629:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var n=i(5893),s=i(1151);const r={title:"Facility inputs",sidebar_position:3,description:"Guide on how to use facility inputs"},o=void 0,a={id:"about/modelling/setup/facility_inputs/index",title:"Facility inputs",description:"Guide on how to use facility inputs",source:"@site/docs/about/modelling/setup/facility_inputs/index.md",sourceDirName:"about/modelling/setup/facility_inputs",slug:"/about/modelling/setup/facility_inputs/",permalink:"/ecalc/docs/about/modelling/setup/facility_inputs/",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/setup/facility_inputs/index.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Facility inputs",sidebar_position:3,description:"Guide on how to use facility inputs"},sidebar:"about",previous:{title:"Time series",permalink:"/ecalc/docs/about/modelling/setup/time_series"},next:{title:"Generator modelling",permalink:"/ecalc/docs/about/modelling/setup/facility_inputs/generator_modelling"}},l={},c=[{value:"Format",id:"format",level:2},{value:"Supported types",id:"supported-types",level:3}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.admonition,{type:"note",children:(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/FACILITY_INPUTS",children:"FACILITY_INPUTS"})," keyword is ",(0,n.jsx)(t.strong,{children:"mandatory"})," within the eCalc\u2122 YAML file."]})}),"\n",(0,n.jsxs)(t.p,{children:["This part of the setup defines input files that characterize various facility elements. Each facility element is\nspecified in a list. These are later used as input in the ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/INSTALLATIONS",children:"INSTALLATIONS"})," part of the setup by referencing their ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/NAME",children:"NAME"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["All facility inputs are in essence a ",(0,n.jsx)(t.code,{children:"CSV"})," (Comma separated file) file that specifies input data to a model that\ncalculates how much energy the equipment is using depending on the operating mode/throughput. There are multiple\n",(0,n.jsx)(t.a,{href:"#supported-types",children:"supported types"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"There are four categories of data that can be used here:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Files describing the performance of a ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/modelling/setup/facility_inputs/generator_modelling",children:"generator set"})]}),"\n",(0,n.jsxs)(t.li,{children:["Files describing the performance of pumps ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/modelling/setup/facility_inputs/pump_modelling/pump_charts",children:"(pump charts)"})]}),"\n",(0,n.jsxs)(t.li,{children:["Files describing the performance of ",(0,n.jsx)(t.strong,{children:"only"})," tabular compressors ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/modelling/setup/facility_inputs/sampled_compressor_model",children:"(sampled compressor data)"})]}),"\n",(0,n.jsx)(t.li,{children:"Other energy consuming equipment modeled variable w.r.t. reservoir management\n(tabulated relationship between variables and consumption)"}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["eCalc\u2122 supports making simple adjustments to a table by using the ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/ADJUSTMENT",children:"ADJUSTMENT"}),"\nkeyword as well as modification of the ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/HEAD_MARGIN",children:"HEAD_MARGIN"}),"\nwhich can be used while calibrating pump charts."]}),"\n",(0,n.jsx)(t.h2,{id:"format",children:"Format"}),"\n",(0,n.jsxs)(t.p,{children:["Each facility input has the skeleton as seen below. However, some inputs require further information. For example, ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/modelling/setup/facility_inputs/pump_modelling/pump_charts",children:"pump models"})]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-yaml",children:"FACILITY_INPUTS:\n - NAME: \n FILE: \n TYPE: \n"})}),"\n",(0,n.jsx)(t.h3,{id:"supported-types",children:"Supported types"}),"\n",(0,n.jsxs)(t.p,{children:["The facility input type is defined using the ",(0,n.jsx)(t.a,{href:"/ecalc/docs/about/references/keywords/TYPE",children:"TYPE"})," keyword and defines the type of model applied\nto the data in this file. The input files are in ",(0,n.jsx)(t.code,{children:"CSV"})," (Comma separated file) format. The paths to the input files may be either absolute or relative to the setup file."]}),"\n",(0,n.jsx)(t.p,{children:"The supported types are:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"ELECTRICITY2FUEL"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"TABULAR"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"COMPRESSOR_TABULAR"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"PUMP_CHART_SINGLE_SPEED"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.code,{children:"PUMP_CHART_VARIABLE_SPEED"})}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1151:(e,t,i)=>{i.d(t,{Z:()=>a,a:()=>o});var n=i(7294);const s={},r=n.createContext(s);function o(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/43a26e71.efb35fa2.js b/assets/js/43a26e71.efb35fa2.js new file mode 100644 index 0000000000..5812e9acd7 --- /dev/null +++ b/assets/js/43a26e71.efb35fa2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[4845],{2414:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>s,default:()=>r,frontMatter:()=>l,metadata:()=>a,toc:()=>d});var i=t(5893),o=t(1151);const l={sidebar_position:2,description:"Pump modelling"},s="Pump modelling",a={id:"about/modelling/setup/facility_inputs/pump_modelling/index",title:"Pump modelling",description:"Pump modelling",source:"@site/docs/about/modelling/setup/facility_inputs/pump_modelling/index.md",sourceDirName:"about/modelling/setup/facility_inputs/pump_modelling",slug:"/about/modelling/setup/facility_inputs/pump_modelling/",permalink:"/ecalc/docs/about/modelling/setup/facility_inputs/pump_modelling/",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/setup/facility_inputs/pump_modelling/index.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,description:"Pump modelling"},sidebar:"about",previous:{title:"Generator modelling",permalink:"/ecalc/docs/about/modelling/setup/facility_inputs/generator_modelling"},next:{title:"Pump chart",permalink:"/ecalc/docs/about/modelling/setup/facility_inputs/pump_modelling/pump_charts"}},p={},d=[];function u(e){const n={a:"a",admonition:"admonition",h1:"h1",p:"p",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"pump-modelling",children:"Pump modelling"}),"\n",(0,i.jsx)(n.h1,{id:"attention",children:"Attention"}),"\n",(0,i.jsx)(n.p,{children:"Pumps can both be single speed and variable speed. Often, the pumping capacity on an installation is filled with a system of several pumps in parallel."}),"\n",(0,i.jsx)(n.admonition,{title:"Attention",type:"warning",children:(0,i.jsx)(n.p,{children:"The pump models in eCalc\u2122 are intended for water, i.e., there is no friction dependency.\nThus, for usage in other types of pumps (e.g., where the\nfluid viscosity changes with the fluid mixture), the results might not be as intended."})}),"\n",(0,i.jsxs)(n.p,{children:["Core theory behind the modelling of pumps in eCalc\u2122 can be found ",(0,i.jsx)(n.a,{href:"/ecalc/docs/about/modelling/theory/pump_modelling",children:"here"}),"."]})]})}function r(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>s});var i=t(7294);const o={},l=i.createContext(o);function s(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/45c974ba.dd19411b.js b/assets/js/45c974ba.dd19411b.js new file mode 100644 index 0000000000..0abdeb170a --- /dev/null +++ b/assets/js/45c974ba.dd19411b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[2459],{3948:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>i,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=s(5893),o=s(1151);const r={slug:"v7-2-release",title:"v7.2",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:5},a="eCalc v7.2",l={id:"changelog/v7-2",title:"v7.2",description:"Features",source:"@site/docs/changelog/v7-2.md",sourceDirName:"changelog",slug:"/changelog/v7-2-release",permalink:"/ecalc/docs/changelog/v7-2-release",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/v7-2.md",tags:[{label:"release",permalink:"/ecalc/docs/tags/release"},{label:"eCalc",permalink:"/ecalc/docs/tags/e-calc"}],version:"current",sidebarPosition:5,frontMatter:{slug:"v7-2-release",title:"v7.2",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:5},sidebar:"changelog",previous:{title:"v7.1",permalink:"/ecalc/docs/changelog/v7-1-release"},next:{title:"v7.3",permalink:"/ecalc/docs/changelog/v7-3-release"}},i={},c=[{value:"Features",id:"features",level:2},{value:"Fixes",id:"fixes",level:2}];function d(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"ecalc-v72",children:"eCalc v7.2"}),"\n",(0,t.jsx)(n.h2,{id:"features",children:(0,t.jsx)(n.em,{children:"Features"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add :code:",(0,t.jsx)(n.code,{children:"ecalc show yaml model.yaml"})," command."]}),"\n",(0,t.jsx)(n.p,{children:"The command will only read the yaml file, include the files that should be included, then show the resulting yaml.\nThere is no need to run the model beforehand."}),"\n",(0,t.jsxs)(n.p,{children:["This should help figure out problems with :code:",(0,t.jsx)(n.code,{children:"!include"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["BREAKING CHANGE!: ",(0,t.jsx)(n.a,{href:"../about/references/keywords/CATEGORY",children:"CATEGORY"})," is MANDATORY for Generator Sets. To be able to handle this, the ",(0,t.jsx)(n.code,{children:"MISCELLANEOUS"})," category\nhas been introduced for Generator sets for users to be able to set this to generator sets that do not apply to other categories,\nand to e.g. except for LTP output."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"GENERATORSETS:\n - NAME: genset\n CATEGORY: TURBINE-GENERATOR\n ELECTRICITY2FUEL: A_genset\n ...\n ...\n - NAME: power_from_shore\n CATEGORY: POWER-FROM-SHORE\n ELECTRICITY2FUEL: onshore_power\n ...\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"EXPERIMENTAL: Add show results command to cli."}),"\n",(0,t.jsxs)(n.p,{children:["When running ecalc, either by ",(0,t.jsx)(n.code,{children:"ecalc run model.yaml"})," or ",(0,t.jsx)(n.code,{children:"ecalc model.yaml"})," we will store the results in your\nhome-directory. You don't have to specify any specific arguments for this to happen."]}),"\n",(0,t.jsxs)(n.p,{children:["A new command ",(0,t.jsx)(n.code,{children:"ecalc show results"})," is introduced. This command can be used to display all the results, or you can use\nthe argument ",(0,t.jsx)(n.code,{children:"--name"})," to only show results for a specific component."]}),"\n",(0,t.jsx)(n.p,{children:"What is a component? Currently the supported component names are the name of the model (filename without the yaml ending),\ninstallation names, generator set names, electricity consumer names and fuel consumer names."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:'ecalc show results --name "component name"'})," will give a json file with only the specified component results."]}),"\n",(0,t.jsxs)(n.p,{children:["The output format can be changed to csv by specifying ",(0,t.jsx)(n.code,{children:"--output-format csv"}),". This will try to give all the data represented\nin the json output, but some of it will be filtered as it does not fit the tabular csv format."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Examples"})}),"\n",(0,t.jsxs)(n.p,{children:["Show all results in json format: ",(0,t.jsx)(n.code,{children:"ecalc show results"})," or ",(0,t.jsx)(n.code,{children:"ecalc show results --output-format json"}),"\nShow model results (totals) in json format ",(0,t.jsx)(n.code,{children:"ecalc show results --name model"})," (if using the model.yaml file as shown above)\nShow model results (totals) in csv format ",(0,t.jsx)(n.code,{children:"ecalc show results --name model --output-format csv"})]}),"\n",(0,t.jsxs)(n.p,{children:["Deprecation warning: Running ecalc without the 'run' argument is deprecated. Use 'ecalc run arg1 ... argN' instead.\nAs this is an experimental feature ",(0,t.jsx)(n.code,{children:"ecalc run"})," might see breaking changes in future releases, you are free to ignore\nthe deprecation warning for a while if you don't want to be exposed to those changes. ",(0,t.jsx)(n.code,{children:"ecalc show"})," will still work as\nexpected."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"fixes",children:(0,t.jsx)(n.em,{children:"Fixes"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Deprecate json_v2 output, json_v3 should be used instead. json_v2 (and json_v1) will be removed in the next release."}),"\n",(0,t.jsx)(n.li,{children:"Allow Single and Variable Speed Compressor Trains to run regardless of non-convergence in numeric root finding algorithms. This is a rate situation and caused by numeric instability. If this happens there will be logged an error in the log together with relevant data. Use result with caution."}),"\n",(0,t.jsx)(n.li,{children:"Use Brent's method instead of secant method to find roots used in numeric iterations for compressor models. Faster and more robust compared to old secant method."}),"\n",(0,t.jsx)(n.li,{children:"Correct prioritazion of compressor system when the compressor system is more complex than only splitting rates on more and more duplicate compressor trains."}),"\n",(0,t.jsxs)(n.li,{children:["Added warning both in documentation and code about using ",(0,t.jsx)(n.code,{children:"Generic compressor chart with design point calculated from input data"})," in a ",(0,t.jsx)(n.code,{children:"COMPRESSOR_SYSTEM energy usage model"})]}),"\n",(0,t.jsx)(n.li,{children:"Improved units and results mapping. The consumed energy is now reported under energy_usage, and power_rate is included if relevant regardless of energy_usage."}),"\n",(0,t.jsx)(n.li,{children:"Suction pressures were not correctly set, and defaulting to 0, in some cases when a list of pressures were given."}),"\n",(0,t.jsx)(n.li,{children:"In cases when only one timestep was evaluated in a consumer system, and the first prioritized operational setting was outside capacity, it was nevertheless chosen."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>a});var t=s(7294);const o={},r=t.createContext(o);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/47daf389.1c4ae3c9.js b/assets/js/47daf389.1c4ae3c9.js new file mode 100644 index 0000000000..de23194401 --- /dev/null +++ b/assets/js/47daf389.1c4ae3c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[8082],{514:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>o,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>i});var n=r(5893),t=r(1151);const a={slug:"v8.4-release",title:"v8.4",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:14},c="eCalc",l={id:"changelog/v8-4",title:"v8.4",description:"New Features",source:"@site/docs/changelog/v8-4.md",sourceDirName:"changelog",slug:"/changelog/v8.4-release",permalink:"/ecalc/docs/changelog/v8.4-release",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/changelog/v8-4.md",tags:[{label:"release",permalink:"/ecalc/docs/tags/release"},{label:"eCalc",permalink:"/ecalc/docs/tags/e-calc"}],version:"current",sidebarPosition:14,frontMatter:{slug:"v8.4-release",title:"v8.4",authors:"ecalc-team",tags:["release","eCalc"],sidebar_position:14},sidebar:"changelog",previous:{title:"v8.3",permalink:"/ecalc/docs/changelog/v8.3-release"},next:{title:"v8.5",permalink:"/ecalc/docs/changelog/v8.5-release"}},o={},i=[{value:"New Features",id:"new-features",level:2},{value:"Fixes",id:"fixes",level:2},{value:"Breaking changes",id:"breaking-changes",level:2}];function d(e){const s={code:"code",h1:"h1",h2:"h2",li:"li",ul:"ul",...(0,t.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h1,{id:"ecalc",children:"eCalc"}),"\n",(0,n.jsx)(s.h2,{id:"new-features",children:"New Features"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["Add ",(0,n.jsx)(s.code,{children:"requested inlet- and outlet compressor pressures"})," from input data to results. In cases where active pressure control mechanisms are active, requested inlet- and outlet pressures may differ from ",(0,n.jsx)(s.code,{children:"calculated pressures"}),". It is now possible to analyse both requested- and calculated pressures."]}),"\n",(0,n.jsxs)(s.li,{children:["Specify ",(0,n.jsx)(s.code,{children:"rate type"})," for majority of output ",(0,n.jsx)(s.code,{children:"rate"})," results as either ",(0,n.jsx)(s.code,{children:"stream day"})," or ",(0,n.jsx)(s.code,{children:"calendar day"}),"."]}),"\n",(0,n.jsx)(s.li,{children:"Improved error messages"}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"fixes",children:"Fixes"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"Actual rate"})," was incorrectly returned for ",(0,n.jsx)(s.code,{children:"compressor sampled"}),". Actual rate cannot be known for ",(0,n.jsx)(s.code,{children:"compressor sampled"})," since we need to know ",(0,n.jsx)(s.code,{children:"fluid properties"})," in order to do that. ",(0,n.jsx)(s.code,{children:"Actual rate"})," has therefore been removed from ",(0,n.jsx)(s.code,{children:"compressor sampled"}),"."]}),"\n",(0,n.jsxs)(s.li,{children:["Handle bug in ",(0,n.jsx)(s.code,{children:"Variable Speed Compressor Train With Multiple Streams And Pressures"})," when no rate is entering a compressor stage wrt. recirculation."]}),"\n",(0,n.jsx)(s.li,{children:"Other minor fixes"}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"breaking-changes",children:"Breaking changes"})]})}function u(e={}){const{wrapper:s}={...(0,t.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1151:(e,s,r)=>{r.d(s,{Z:()=>l,a:()=>c});var n=r(7294);const t={},a=n.createContext(t);function c(e){const s=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),n.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/496ed8d5.479344d0.js b/assets/js/496ed8d5.479344d0.js new file mode 100644 index 0000000000..4fea7ea288 --- /dev/null +++ b/assets/js/496ed8d5.479344d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[2206],{9388:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var t=i(5893),o=i(1151);const s={sidebar_position:8,description:"eCalc FAQ"},r="FAQ / Troubleshooting",a={id:"about/getting_started/cli/faq",title:"FAQ / Troubleshooting",description:"eCalc FAQ",source:"@site/docs/about/getting_started/cli/faq.md",sourceDirName:"about/getting_started/cli",slug:"/about/getting_started/cli/faq",permalink:"/ecalc/docs/about/getting_started/cli/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/getting_started/cli/faq.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8,description:"eCalc FAQ"},sidebar:"about",previous:{title:"CLI",permalink:"/ecalc/docs/about/getting_started/cli/"},next:{title:"Python Library",permalink:"/ecalc/docs/about/getting_started/library/"}},l={},c=[{value:"Indentation errors",id:"indentation-errors",level:2},{value:"Error messages due to YAML read problems",id:"error-messages-due-to-yaml-read-problems",level:3},{value:"Error messages due to invalid eCalc configuration",id:"error-messages-due-to-invalid-ecalc-configuration",level:3},{value:"Proposed solution",id:"proposed-solution",level:3},{value:"Special characters in Unicode",id:"special-characters-in-unicode",level:2},{value:"Proposed solution",id:"proposed-solution-1",level:3}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"faq--troubleshooting",children:"FAQ / Troubleshooting"}),"\n",(0,t.jsx)(n.p,{children:"While running eCalc as a Unix command-line tool, you may come across seemingly incomprehensible error messages.\nThis page tries to explain some common error messages and proposes how to fix them."}),"\n",(0,t.jsx)(n.h2,{id:"indentation-errors",children:"Indentation errors"}),"\n",(0,t.jsx)(n.p,{children:"In YAML, the indentation is very important and specifies the level in the hierarchy for the input.\nIf you have the wrong indentation somewhere, you may get both YAML read errors and/or eCalc setup errors."}),"\n",(0,t.jsx)(n.h3,{id:"error-messages-due-to-yaml-read-problems",children:"Error messages due to YAML read problems"}),"\n",(0,t.jsx)(n.p,{children:"The following error messages are common when you have formatting issues in your YAML file:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mapping values are not allowed here\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"while scanning a simple key in \" \", line , column \ncould not find expected ':', line , column \n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"while parsing a block mapping in , line , column \nexpected , but found ' '\n"})}),"\n",(0,t.jsx)(n.h3,{id:"error-messages-due-to-invalid-ecalc-configuration",children:"Error messages due to invalid eCalc configuration"}),"\n",(0,t.jsx)(n.p,{children:"The configuration expects a sub-hierarchy of data. After reading YAML, this data sub-hierarchy would be of object type\ndictionary (dict) and in some cases contain lists or other objects. If invalid data is input, the error message would\nindicate that the type is wrong because it is not a 'dict'/'list' or other type"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"None should be instance of 'dict'\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"None should be instance of 'list'\n"})}),"\n",(0,t.jsx)(n.h3,{id:"proposed-solution",children:"Proposed solution"}),"\n",(0,t.jsx)(n.p,{children:"Check your YAML setup file for correct indentation and correct format of values for each eCalc key."}),"\n",(0,t.jsx)(n.h2,{id:"special-characters-in-unicode",children:"Special characters in Unicode"}),"\n",(0,t.jsxs)(n.p,{children:["eCalc uses ",(0,t.jsx)(n.a,{href:"https://pypi.org/project/ruamel.yaml/",children:"ruamel.yaml"})," to read the YAML setup files. Some (text) files have an encoding not supported and will thus result in an error message."]}),"\n",(0,t.jsxs)(n.p,{children:['One example of this is an unrecognized "',(0,t.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Byte_order_mark",children:"BOM"}),'" character in "',(0,t.jsx)(n.a,{href:"https://nl.wikipedia.org/wiki/UTF-8",children:"UTF-8 Unicode"}),'".']}),"\n",(0,t.jsx)(n.p,{children:"Error message"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"while scanning a simple key in \" \", line , column 1\ncould not find expected ':', line , column 1\n"})}),"\n",(0,t.jsx)(n.h3,{id:"proposed-solution-1",children:"Proposed solution"}),"\n",(0,t.jsx)(n.p,{children:"Check the encoding of your setupfile (and inputfiles):"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"$ file .yml\n"})}),"\n",(0,t.jsxs)(n.p,{children:['If the output of this is not "ASCII text", convert your file to "US-ASCII" using ',(0,t.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/iconv",children:"iconv"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Example when ",(0,t.jsx)(n.code,{children:" .yml"}),' is of type "UTF-8"']}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"$ iconv -f UTF-8 -t US-ASCII//TRANSLIT -o .yml .yml\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Now try to run again using the new file ",(0,t.jsx)(n.code,{children:" .yml"}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>a,a:()=>r});var t=i(7294);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/498bfcff.5b524ea2.js b/assets/js/498bfcff.5b524ea2.js new file mode 100644 index 0000000000..cbcfaa64df --- /dev/null +++ b/assets/js/498bfcff.5b524ea2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocumentation=self.webpackChunkdocumentation||[]).push([[749],{8084:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var s=t(5893),i=t(1151);const o={title:"Fuel types",sidebar_position:5,description:"Guide on how to use fuel types"},a=void 0,l={id:"about/modelling/setup/fuel_types",title:"Fuel types",description:"Guide on how to use fuel types",source:"@site/docs/about/modelling/setup/fuel_types.md",sourceDirName:"about/modelling/setup",slug:"/about/modelling/setup/fuel_types",permalink:"/ecalc/docs/about/modelling/setup/fuel_types",draft:!1,unlisted:!1,editUrl:"https://github.com/equinor/ecalc/tree/main/documentation/docs/about/modelling/setup/fuel_types.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{title:"Fuel types",sidebar_position:5,description:"Guide on how to use fuel types"},sidebar:"about",previous:{title:"Turbine modelling",permalink:"/ecalc/docs/about/modelling/setup/models/turbine_modeling"},next:{title:"Variables",permalink:"/ecalc/docs/about/modelling/setup/variables"}},r={},c=[{value:"Format",id:"format",level:2},{value:"Example",id:"example",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/FUEL_TYPES",children:"FUEL_TYPES"})," keyword is ",(0,s.jsx)(n.strong,{children:"mandatory"})," within the eCalc\u2122 YAML file."]})}),"\n",(0,s.jsxs)(n.p,{children:["This part of the setup specifies the various fuel types and associated emissions\nused in the model. Each fuel type is specified in a list and the defined fuels can later be referred to the\n",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/modelling/setup/installations/",children:"INSTALLATIONS"})," part of the setup by its name."]}),"\n",(0,s.jsxs)(n.p,{children:["The use of fuel can lead to one or more emission types, specified in ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/EMISSIONS",children:"EMISSIONS"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["You can optionally specify a ",(0,s.jsx)(n.a,{href:"/ecalc/docs/about/references/keywords/CATEGORY",children:"CATEGORY"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"format",children:"Format"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"FUEL_TYPES:\n - NAME: \n CATEGORY: