CINXE.COM
Projects, Facilities, and Construction - Technical Discipline - SPE
<!doctype html> <html class="no-js" lang=""> <head> <title>Projects, Facilities, and Construction - Technical Discipline - SPE</title> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="title" content="Projects, Facilities, and Construction - Technical Discipline - SPE"/> <meta name="description" content="SPE's Projects, Facilities, and Construction discipline covers processing, flow assurance and subsea systems, measurement and control, platforms and more."/> <meta name="apple-mobile-web-app-title" content="Projects, Facilities, and Construction - Technical Discipline - SPE"> <!-- ANALYTICS SCRIPTS --> <!-- Google Tag Manager Script --> <script> window.dataLayer = window.dataLayer || []; window.dataLayer.push({"content": {"category": "disciplines"}}); (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'}); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-T8JL43'); </script> <!-- END Google Tag Manager --> <!-- Marketo Muchkin Script --> <script type="text/javascript"> (function() { var didInit = false; function initMunchkin() { if(didInit === false) { didInit = true; Munchkin.init('833-LLT-087'); } } var mkto_script = document.createElement('script'); mkto_script.type = 'text/javascript'; mkto_script.async = true; mkto_script.src = '//munchkin.marketo.net/munchkin.js'; mkto_script.onreadystatechange = function() { if (this.readyState == 'complete' || this.readyState == 'loaded') { initMunchkin(); } }; mkto_script.onload = initMunchkin; document.getElementsByTagName('head')[0].appendChild(mkto_script); })(); </script> <!-- END Marketo Muchkin Script --> <!-- Marketo RTP tag --> <script type='text/javascript'> (function(c,h,a,f,i,e){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; c[a].a=i;c[a].e=e;var g=h.createElement("script");g.async=true;g.type="text/javascript"; g.src=f+'?aid='+i;var b=h.getElementsByTagName("script")[0];b.parentNode.insertBefore(g,b); })(window,document,"rtp","//sjrtp4-cdn.marketo.com/rtp-api/v1/rtp.js","spe"); rtp('send','view'); rtp('get', 'campaign',true); </script> <!-- END Marketo RTP tag --> <!-- GLOBAL STYLING FOR ALL PAGES --> <style> blockquote { padding: .5rem 1rem; border-left: .25rem solid #eceeef; } .zoom { transition: transform .2s; } .zoom:hover { -ms-transform: scale(1.2); /* IE 9 */ -webkit-transform: scale(1.2); /* Safari 3-8 */ transform: scale(1.2); } </style> <!-- TEMPLATE page.html --> <!-- Font Awesome --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://kit.fontawesome.com/9cbc9abb19.css" crossorigin="anonymous"> <!-- Bootstrap --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <link rel="stylesheet" href="/static/js/spe_scroller_jquery.css" integrity="sha384-juWNVEQZ4R0g8fb7EbjVR1vTBSa33iiBazKbFD4OJ3EfMKSse0jLNit6ZSRwdBfp" crossorigin="anonymous"/> <link rel="stylesheet" type="text/css" href="/static/css/spe/2021/stylesheet.css"> <!-- GLOBAL JS FOR ALL PAGES (loaded in head tag) --> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <!-- Start GPT Tag --> <script async src='https://securepubads.g.doubleclick.net/tag/js/gpt.js'></script> <script> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { var mapping1 = googletag.sizeMapping() .addSize([700, 200], [[160, 600]]) .addSize([0, 0], [[0, 0]]) .build(); googletag.defineSlot('/57789820/SPE_ORG_160x600', [[160,600]], 'div-gpt-ad-6795482-1') .defineSizeMapping(mapping1) .addService(googletag.pubads()); googletag.pubads().collapseEmptyDivs(); googletag.pubads().setCentering(true); googletag.enableServices(); }); </script> <!-- End GPT Tag --> </head> <body> <!-- Google Tag Manager Script --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-T8JL43" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- END Google Tag Manager --> <div class="container-liquid mb-3" style="position: relative; z-index: 100;"> <!--Main Navigation--> <header id="page-header"> <!-- SPE HEADER BAR --> <div id="spe-header" class="row m-0"> <div id="logo-box" class="col-4 col-sm-4 col-md-3 col-lg-2 py-2 mx-auto my-2"> <a href="/"><img src="/static/www/img/spe_vert_white.svg" alt="SPE Logo" id="spelogo" class="img-fluid"></a> </div> <div id="menublock" class="col-12 col-md p-0"> <!-- ***************** --> <!-- SPE LOGIN TOP BAR --> <div id="loginbar" class="container-fluid"> <nav id="global-nav" class="row"> <ul class="nav ml-auto pr-4"> <li class="nav-item"><a href="https://www.spe.org/about/" class="nav-link">About SPE</a></li> <li class="nav-item"><a href="https://www.spe.org/contact/" class="nav-link">Contact Us</a></li> <li class="nav-item"><a href="https://www.spe.org/jobs/" class="nav-link">Jobs</a></li> <li class="nav-item"><a href="https://search.spe.org/i2kweb/SPE/search" class="nav-link"><i class="fa fa-plus" aria-hidden="true"></i> Research Portal</a></li> <li class="nav-item" style="float: right;"><a href="https://www.spe.org/sso/protected_login.html?redirect_target=https%3A//www.spe.org/en/disciplines/pfc/" id="global_login" class="nav-link loginLink"><i class="fas fa-user"></i> Sign In</a></li> </ul> </nav> </div> <!-- SPE LOGIN TOP BAR --> <!-- ***************** --> <!-- ******** --> <!-- MAIN NAV --> <div id="mainnavbar" class="container-fluid pb-2"> <nav id="mainnav" class="row pr-5 navbar navbar-expand-lg"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".topcollapse" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <ul class="topcollapse nav collapse navbar-collapse"> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/members/">Membership</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/events/about-events/">Events</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/publications/">Publications</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/training/">Training</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/industry/">Resources</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/en/community/">Community</a></h4></li> </ul> <!-- ****** --> <!-- Search --> <div class="searching my-auto text-right"> <a href="javascript:void(0)" class="search-open"> <i class="fa fa-search"></i> </a> <div class="search-inline pt-4"> <form> <div class="GoogleSiteSearch search-inline-sub"> <div class="form-wrapper"> <div class="gse-search"> <!-- These styles fix CSE and Bootstrap 3 conflict --> <style type="text/css"> .gsc-adBlock { opacity: 0.5; } .reset-box-sizing, .reset-box-sizing *, .reset-box-sizing *:before, .reset-box-sizing *:after, .gsc-inline-block { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } input.gsc-input, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus, .gsc-search-button { box-sizing: content-box; line-height: normal; background-image: none !important; } .gsc-control-cse { padding: 0; } </style> <script async src="https://cse.google.com/cse.js?cx=007919311804914109615:_7f3pu6glfg"></script> <div class="gcse-search"></div> </div> </div> </div> <div class="search-close-div search-inline-sub"> <a href="javascript:void(0)" class="search-close"> <i class="fa fa-times"></i> </a> </div> </form> </div> <!-- SEARCH --> </div> <!-- Search --> <!-- ****** --> </nav> </div> <!-- MAIN NAV --> <!-- ******** --> </div> </div><!-- end id="spe-header" --> <div id="headerspacer" class="row py-2 m-0"></div> </header> </div> <!--Main Navigation--> <!--Main layout--> <div class="container-liquid page-content background"> <div class="bg-color-main-dk container-fluid" style="background-image: url(/media/filer_public/56/2f/562f9f9d-9aca-4c2a-9da7-d073f3846d6d/bit-background-black.png); background-position: center center; background-repeat: no-repeat; background-size: cover;"> <div class="container" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;"> <style> .grid_row_background_size{ background-size: cover; } @media screen and (max-width: 976px) { .grid_row_background_size{ background-size: 100% 100%; } } </style> <div class="row grid_row_background_size" style="background-image: url(); background-position: center center; background-repeat: no-repeat; opacity: 1.0; " > <div class="col col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6 py-4" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > <div> <div class="foreground-pic"></div> <img src="/media/filer_public_thumbnails/filer_public/44/c2/44c2f7c6-8f18-4a60-8f6e-2f749cd1eaac/projects-facilities-construction-125x125.png__125.0x125.0_subsampling-2.png" class="img-fluid img-responsive float-left pull-left mr-2" alt="Facilities icon" > </div> <p><small> SPE TECHNICAL DISCIPLINES</small></p> <h1><span class="text-white"><span style="font-size: 1.2em;">Projects, Facilities, and Construction</span></span></h1> </div> <div class="col col-12 col-sm-12 col-md-6 col-lg-6 col-xl-6" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > </div> </div> </div> </div> <div class="bg-color-main container" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;"> <style> .grid_row_background_size{ background-size: cover; } @media screen and (max-width: 976px) { .grid_row_background_size{ background-size: 100% 100%; } } </style> <div class="row p-4 bg-color-main grid_row_background_size" style="background-image: url(); background-position: center center; background-repeat: no-repeat; opacity: 1.0; " > <div class="bg-color-main col col-12 col-sm-12 col-md-12 col-lg-3 col-xl-3" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > <h4 style="text-align: center;">Technical Director</h4> <p> <div> <div class="foreground-pic"></div> <img src="/media/filer_public_thumbnails/filer_public/dd/9a/dd9a5e88-a253-4e70-8379-c6dabfb830be/hamad-al-marri.jpg__205.0x205.0_q85_subsampling-2.jpg" width="200" height="200" class="img-fluid img-responsive rounded-circle mx-auto d-block" alt="Hamad Al-Marri" > </div> </p> <p style="text-align: center;"><strong>Hamad Al-Marri</strong><br> Saudi Aramco</p> <hr> <p><a href="https://connect.spe.org/communities/community-home?communitykey=f5d71314-06f9-40d4-a6c2-430aacffd844&tab=groupdetails" target="_blank"><strong>Projects, Facilities, and Construction Technical Community</strong></a></p> <div class="sidebarItem"> <p><strong>Technical Sections</strong></p> <ul> <li><a href="https://connect.spe.org/fts/home" target="_blank">Flow Assurance</a></li> <li><a href="https://connect.spe.org/fmts/home" target="_blank">Flow Measurement</a></li> <li><a href="https://connect.spe.org/hydrogen/home" target="_blank">Hydrogen</a></li> <li><a href="https://connect.spe.org/methaneemissionsmanagement/home" target="_blank">Methane Emissions Management</a></li> <li><a href="https://connect.spe.org/separationstechnology/home" target="_blank">Separations Technology</a></li> <li><a href="https://connect.spe.org/roboticsautonomoussystems/home" target="_blank">Robotics and Autonomous Systems</a></li> <li><a href="/industry/technical-sections/" target="_self" class style="opacity: 1.0;">Other Technical Sections</a></li> </ul> </div> <p style="text-align: center;"> </p> <p style="text-align: center;">Not a member?<br> <a href="/members/" target="_self" class="btn btn-primary" style="opacity: 1.0;"> Join SPE </a></p> <p style="text-align: center;"> </p> <div> <a href="https://connect.spe.org" > <div class="foreground-pic"></div> <img src="/media/filer_public_thumbnails/filer_public/79/72/7972224e-9bf5-4061-8cbc-205504a90249/spe_connect_logo_400x92.png__400.0x92.0_subsampling-2.png" width="180" class="img-fluid img-responsive mx-auto d-block" alt="SPE connect logo" > </a> </div> <p style="text-align: center;">SPE's social network</p> </div> <div class="bg-color-main col col-12 col-sm-12 col-md-12 col-lg-6 col-xl-6" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > <h3>Projects, Facilities, and Construction News</h3> <hr> <style> .rss-date {color: gray;} .wrapper { display: grid; grid-gap: 10px; justify-items: center; justify-content: center; width: 100%; } .card { border: none; background-color: transparent; } .cardimage { width: 100%; padding-top: 56.25%; /* 16:9 Aspect Ratio */ background-position: center; background-size: cover; } .card-title, .card-title a { font-size: 16px; color: black; } </style> <div > <div class="row"> <div class="wrapper" style="grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));"> <div class="wrapperchild box"> <div class="card mb-2" style="break-inside: avoid"> <div class="cardimage w-100" style="background-image: url(https://assets.spe.org/dims4/default/afe8816/2147483647/resize/x482%3E/quality/90/?url=http%3A%2F%2Fspe-brightspot.s3.us-east-2.amazonaws.com%2F1a%2F44%2F20f8c8894da78e27decc5b6e2fb1%2Fbp-tangguh-aerial.png)"></div> <div class="card-body"> <h5 class="card-title rss-title"> <a href="https://jpt.spe.org/bp-greenlights-tannguh-phase-2-project-offshore-indonesia">BP Greenlights Tannguh Phase 2 Project Offshore Indonesia</a> </h5> <p class="card-text"> <span class="rss-date"><small>22 November 2024</small></span><br> </p> </div> </div> </div> <div class="wrapperchild box"> <div class="card mb-2" style="break-inside: avoid"> <div class="cardimage w-100" style="background-image: url(https://assets.spe.org/dims4/default/a93eee9/2147483647/resize/x586%3E/quality/90/?url=http%3A%2F%2Fspe-brightspot.s3.us-east-2.amazonaws.com%2Fc6%2F50%2Fb7eb446441b19f670ff347dbc0df%2Fnigeria.jpg)"></div> <div class="card-body"> <h5 class="card-title rss-title"> <a href="https://jpt.spe.org/decommissioning-and-abandonment-a-case-for-coexisting-with-mother-nature">Decommissioning and Abandonment—A Case for Coexisting With Mother Nature</a> </h5> <p class="card-text"> <span class="rss-date"><small>18 November 2024</small></span><br> </p> </div> </div> </div> </div> </div> <div class="row"> <div class="col"> <p class="float-right"> <a href="https://jpt.spe.org/" target="_self" class="btn-sm">See more articles</a> </p> </div> </div> </div> <div class="m-4"> </div> <style> .grid_row_background_size{ background-size: cover; } @media screen and (max-width: 976px) { .grid_row_background_size{ background-size: 100% 100%; } } </style> <div class="row grid_row_background_size" style="background-image: url(); background-position: center center; background-repeat: no-repeat; opacity: 1.0; " > <div class="col col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > <h3>SPE Energy Stream</h3> <hr> <style>div.embed-responsive.embed-responsive-16by9::before { padding-top:0 }</style> <div class="embed-responsive embed-responsive-16by9"> <iframe class="embed-responsive-item" src="https://streaming.spe.org/get-embed-code?id=49&type=playlist" loading="lazy" scrolling="no" frameborder="no" allowfullscreen ></iframe> </div> <div class="m-2"> </div> <div> <div class="foreground-pic"></div> <img src="/media/filer_public_thumbnails/filer_public/e1/64/e164dd7f-4219-4d57-b336-9b3055f38f45/spe_energy_stream_logo_rgb.png__1875.0x375.0_subsampling-2.png" width="200" class="img-fluid img-responsive float-right pull-right ml-2" alt="SPE Energy Stream logo" > </div> <p>SPE Energy Stream is your go-to for watching thought leaders, subject-matter experts, and leading companies share their perspectives and technical solutions. Find discussions and webinars available live and on-demand.</p> <p style="text-align: right;"><a data-feathr-click-track="true" href="https://streaming.spe.org/projects-facilities-and-construction/" target="_blank">View more on SPE Energy Stream</a></p> </div> </div> <div class="m-4"> </div> <style> .grid_row_background_size{ background-size: cover; } @media screen and (max-width: 976px) { .grid_row_background_size{ background-size: 100% 100%; } } </style> <div class="row bg-white grid_row_background_size" style="background-image: url(); background-position: center center; background-repeat: no-repeat; opacity: 1.0; " > <div class="col col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > <a id="journal"></a> <h3>SPE Insights and Education</h3> <hr> <h4>SPE Journal</h4> <div> <a href="https://www.onepetro.org/journals/SPE%20Journal" > <div class="foreground-pic"></div> <img src="/media/filer_public_thumbnails/filer_public/66/f2/66f27f0a-b5d2-4354-bf31-064df5511c2c/spe_journal-rectangle.png__600.0x370.0_subsampling-2.png" width="250" class="img-fluid img-responsive float-left pull-left mb-1 mr-3" alt="SPE Journal cover" > </a> </div> <p>As a leading publication in oil, petroleum, and natural gas, <em><a href="/publications/spe-journal/" target="_self" class style="opacity: 1.0;">SPE Journal</a></em> maintains the highest quality standards in scholarly publishing and offers practical applications to solve your biggest challenges.</p> <p><span style='font-family: "Open Sans", HelveticaNeue, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 1em;'>Top papers showcasing cutting-edge methods and technology solutions you can trust are selected after rigorous evaluation by industry experts.</span><br> </p> <h4>Oil and Gas Facilities</h4> <p><em></em></p> <div> <a href="https://jpt.spe.org/oil-and-gas-facilities" > <div class="foreground-pic"></div> <img src="/media/filer_public_thumbnails/filer_public/8d/68/8d68094d-0c03-4602-88a9-5d1307ddc0d2/ogf_logo_rgb_2024.jpg__994.0x260.0_q85_subsampling-2.jpg" width="200" class="img-fluid img-responsive float-right pull-right mb-2 ml-3" alt="OGF logo" > </a> </div> <p><em><a href="https://jpt.spe.org/oil-and-gas-facilities">OGF</a></em> is a biweekly e-newsletter, delivering the latest facilities engineering news directly to your inbox.</p> <p><a href="https://jpt.spe.org/oil-and-gas-facilities">Read current news on <em>OGF</em></a><br> </p> <div> <a href="https://www.onepetro.org/" > <div class="foreground-pic"></div> <img src="/media/filer_public_thumbnails/filer_public/67/b6/67b6bdb8-b97f-4232-84ff-9a207378d57f/onepetro-hp.png__165.0x92.0_subsampling-2.png" width="125" class="img-fluid img-responsive float-right pull-right ml-2" alt="OnePetro logo" > </a> </div> <h4>Technical Literature</h4> <p><a href="https://onepetro.org/" target="_blank" rel="noopener" class style="opacity: 1.0;">OnePetro</a> online technical library — the home for <a href="https://onepetro.org/SJ" target="_blank" rel="noopener" class style="opacity: 1.0;">SPE Journal</a>, <a href="https://onepetro.org/books" target="_blank" rel="noopener" class style="opacity: 1.0;">books</a> and conference proceedings for projects, facilities, and construction and all upstream oil and gas topics. Over 240,000 items from 21 publishing partners.<br> </p> </div> </div> </div> <div class="col col-12 col-sm-12 col-md-12 col-lg-3 col-xl-3 px-4" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > <style> .grid_row_background_size{ background-size: cover; } @media screen and (max-width: 976px) { .grid_row_background_size{ background-size: 100% 100%; } } </style> <div class="row grid_row_background_size" style="background-image: url(); background-position: center center; background-repeat: no-repeat; opacity: 1.0; " > <div class="border border-color-main-lt col col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 p-3" style="background-image: url(); background-position: center center; background-repeat: no-repeat; background-size: cover;" " > <div id="disc_events-698142" class="mx-1 my-2" ></div> <div id="disc_events-698143" class="mx-1 my-2" ></div> <div id="disc_events-698144" class="mx-1 my-2" ></div> <h5 class="sidebar_events_heading"><a href="/training/courses/">Training Courses</a></h5> </div> </div> <div class="mt-3"> </div> </div> </div> </div> </div> <!--Main layout--> <!-- GLOBALLY ADDING COOKIE BAR TO ALL PAGES --> <style type="text/css"> #cookie-bar { background: #111111; height: auto; line-height: 24px; color: #eeeeee; text-align: center; padding: 3px 0; } #cookie-bar.fixed { position: fixed; top: 0; left: 0; width: 100%; z-index: 99999; } #cookie-bar.fixed.bottom { bottom: 0; top: auto; } #cookie-bar p { margin: 0; padding: 0; } #cookie-bar a { color: #ffffff; display: inline-block; border-radius: 3px; text-decoration: none; padding: 0 6px; margin-left: 8px; } #cookie-bar a.learnLink { color: #a3bce4; } #cookie-bar .cb-enable { background: #89C3E5; } </style> <!--Footer--> <footer id="page-footer"> <!-- #spe-footer 2020 Short --> <footer id="spe-footer"> <div class="container"> <div id="footer-nav" class="row p-2"> <ul class="nav m-auto"> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/members/">Membership</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/events/about-events/">Events</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/publications/">Publications</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/training/">Training</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/industry/">Resources</a></h4></li> <li class="nav-item"><h4><a class="nav-link" href="https://www.spe.org/en/community/">Community</a></h4></li> </ul> </div> <div id="footer-mega" class="row mt-2 mb-0"> <div class="col-12 col-sm-2 mb-0"> <h5><a class="nav-link-lower" href="https://www.spe.org/en/about/">About SPE</a></h5> </div> <div class="col-12 col-sm-2 mb-0"> <h5><a class="nav-link-lower" href="https://www.spe.org/en/disciplines/">SPE Disciplines</a></h5> </div> <div class="col-12 col-sm-2 mb-0"> <h5><a class="nav-link-lower" href="https://www.spe.org/en/about/regions/">SPE Regions</a></h5> </div> <div class="col-12 col-sm-2 mb-0"> <h5><a class="nav-link-lower" href="https://www.spe.org/en/about/privacypolicy/">Privacy Policy</a></h5> </div> <div class="col-12 col-sm-2 mb-0"> <h5><a class="nav-link-lower" href="https://www.spe.org/en/about/professional-code-of-conduct/">Code of Conduct</a></h5> </div> <div class="col-12 col-sm-2 mb-0"> <h5><a class="nav-link-lower" href="https://www.spe.org/en/about/terms-of-service/">Terms of Service</a></h5> </div> </div> <div id="footer-socials" class="row"> <nav id="social-media-links-footer" class="ml-auto"> <ul> <li class="footfnt"><a target="_blank" rel="noopener" href="https://www.facebook.com/spemembers" id="facebook" title="Connect with SPE on Facebook"><i class="fab fa-facebook-square"></i></a></li> <li class="footfnt"><a target="_blank" rel="noopener" href="https://twitter.com/SPEtweets" id="twitter" title="Follow SPE Events on Twitter"><i class="fa-brands fa-square-x-twitter"></i></a></li> <li class="footfnt"><a target="_blank" rel="noopener" href="https://www.linkedin.com/company/23356/" id="linkedin" title="Join SPE's professional network on LinkedIn"><i class="fab fa-linkedin"></i></a></li> <li class="footfnt"><a target="_blank" rel="noopener" href="https://www.youtube.com/2012SPE" id="youtube" title="Explore SPE videos on YouTube"><i class="fab fa-youtube-square"></i></a></li> <li class="footfnt"><a target="_blank" rel="noopener" href="https://instagram.com/spengineers/" id="instagram" title="Connect with SPE on Instagram"><i class="fab fa-instagram"></i></a></li> <li class="footfnt"><a target="_blank" rel="noopener" href="https://connect.spe.org/" id="connect" title="SPE’s online communities – SPE Connect"><i class="fas fa-comment-alt"></i></a></li> </ul> </nav> </div> <div id="footer-copyright" class="row"> <div id="copyrightcol" class="col mb-5">© Copyright 2003-2024, Society of Petroleum Engineers. All rights reserved.</div> </div> </div> </footer> <!-- #spe-footer 2020 Short --> </footer> <!--/.Footer--> <!-- GLOBAL JS FOR ALL PAGES (loaded in head tag) --> <!-- removing ckeditor reference since not needed; do not use ckeditor CDN! --> <!-- Bootstrap 4 --> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> <script> // short helper function to check the results of a jquery search results $.fn.exists = function () { return this.length !== 0; }; // fix ie in case the console.logs get out there if (typeof console === "undefined") { console = {log: function() {}}; } $( document ).ready(function() { $(".customnav").hide(); // NOTE: we only append once on load! // use jquery to get all .spe-context-menu(.subbynav) let ctx_menus = $(".subbynav"); if (ctx_menus.exists()) { ctx_menus.each( function (index) { console.log(' [' + index + '] ' + $(this)[0].tagName + '- ' + $(this).attr('class')); // perform a deep copy of nodes to append to the menu (with click events) // add appropriate styles to display only when we want $(this).clone().addClass("d-block d-lg-none menuNested").appendTo("#navbarNavAltMarkup", true); // add a new class to mark the inline menu items for show hide $(this).addClass("d-none d-lg-block menuNotNested"); $(".customnav").show(); }); } // NOTE: from this point on bootstrap should handle the heavy lifting of breakpoints for us! }); </script> <!-- ************* --> <!-- SEARCH SCRIPT --> <script> $(document).ready(function () { // console.log("ready!"); var sp = document.querySelector('.search-open'); var searchbar = document.querySelector('.search-inline'); var shclose = document.querySelector('.search-close'); function changeClass() { searchbar.classList.add('search-visible'); } function closesearch() { searchbar.classList.remove('search-visible'); } sp.addEventListener('click', changeClass); shclose.addEventListener('click', closesearch); const $dropdown = $(".dropdown"); const $dropdownToggle = $(".dropdown-toggle"); const $dropdownMenu = $(".dropdown-menu"); const showClass = "show"; $(window).on("load resize", function () { if (this.matchMedia("(min-width: 768px)").matches) { $dropdown.hover( function () { const $this = $(this); $this.addClass(showClass); $this.find($dropdownToggle).attr("aria-expanded", "true"); $this.find($dropdownMenu).addClass(showClass); }, function () { const $this = $(this); $this.removeClass(showClass); $this.find($dropdownToggle).attr("aria-expanded", "false"); $this.find($dropdownMenu).removeClass(showClass); } ); } else { $dropdown.off("mouseenter mouseleave"); } }); }); </script> <!-- END SEARCH SCRIPT --> <!-- ***************** --> <!-- TODO: Add future script includes here; keep blank for default bootstrap theme --> <style> body { background-color: #f1f2f7; } </style> <script> { // NOTE: using toLocaleDateString() below instead of this homegrown function. While it has an extra // comma it looks close enough to probably get rid of this. Leaving for now in case someone complains. // returns the formatted li for each row based on cfp or not; cfp has deadline others have location let get_panel_item = function(row, panel_type) { let cfp_deadline = '' if (typeof row.dt_cfp_ends=='string' && row.dt_cfp_ends.trim().length) { let options = { year: 'numeric', month: 'short', day: 'numeric' }; let cfp_deadline_date = new Date(row.dt_cfp_ends + "Z"); cfp_deadline = cfp_deadline_date.toLocaleDateString('en-US', options) } let result = ` <li class="event mx-1 my-1" style="list-style-type:none;" id="${row.e_id}" title="${row.code}"> <span class="event_title"> ` if (typeof row.detail_url=='string' && row.detail_url.trim().length) result += `<a href="${row.detail_url.replace(/^https?:\/\/[^\.]+\.spe.org\//,'/')}">${row.title}</a>` else result += `${row.title}` result += ` </span>` if (panel_type === 'cfp') { result += `<span class="cfp_deadline" style="display:block;"><strong>Deadline: </strong>${cfp_deadline}</span>` } else { result += `<span class="date_and_location" style="display:block;">${row.date_span} | ${row.location}</span>` } result += ` </li> ` return result } const PANEL_TYPE = 'c' const PANEL_DESCRIPTION = 'Conferences' const MAX_ITEMS = 4 const WS_URL = 'https://www.spe.org/_ds/disciplines/events/c/3f/' let panel_html = `<h4 style="font-size:90%;">${PANEL_DESCRIPTION}</h4>` // attempting to use the native async fetch instead of jquery ajax // NOTE: I think I like this alot better less objects and more native data fetch(WS_URL) .then(response => response.json()) .then(resultset => { window.console && console.log(`${PANEL_DESCRIPTION} results`) window.console && console.log(resultset) if (resultset && resultset.length) { panel_html += '<ul class="mx-1 px-1" style="font-size:81%;">' resultset.forEach((row, idx) => { if (idx < MAX_ITEMS) panel_html += get_panel_item(row, PANEL_TYPE) }) panel_html += '</ul>' } // if we don't have any results lets remove the header so nothing shows else panel_html = '' document.getElementById('disc_events-698142').innerHTML = panel_html }) .catch(error => window.console && console.log(error)); } // block level so fns and vars aren't global </script> <script> { // NOTE: using toLocaleDateString() below instead of this homegrown function. While it has an extra // comma it looks close enough to probably get rid of this. Leaving for now in case someone complains. // returns the formatted li for each row based on cfp or not; cfp has deadline others have location let get_panel_item = function(row, panel_type) { let cfp_deadline = '' if (typeof row.dt_cfp_ends=='string' && row.dt_cfp_ends.trim().length) { let options = { year: 'numeric', month: 'short', day: 'numeric' }; let cfp_deadline_date = new Date(row.dt_cfp_ends + "Z"); cfp_deadline = cfp_deadline_date.toLocaleDateString('en-US', options) } let result = ` <li class="event mx-1 my-1" style="list-style-type:none;" id="${row.e_id}" title="${row.code}"> <span class="event_title"> ` if (typeof row.detail_url=='string' && row.detail_url.trim().length) result += `<a href="${row.detail_url.replace(/^https?:\/\/[^\.]+\.spe.org\//,'/')}">${row.title}</a>` else result += `${row.title}` result += ` </span>` if (panel_type === 'cfp') { result += `<span class="cfp_deadline" style="display:block;"><strong>Deadline: </strong>${cfp_deadline}</span>` } else { result += `<span class="date_and_location" style="display:block;">${row.date_span} | ${row.location}</span>` } result += ` </li> ` return result } const PANEL_TYPE = 'cfp' const PANEL_DESCRIPTION = 'Call for Papers' const MAX_ITEMS = 5 const WS_URL = 'https://www.spe.org/_ds/disciplines/events/cfp/3f/' let panel_html = `<h4 style="font-size:90%;">${PANEL_DESCRIPTION}</h4>` // attempting to use the native async fetch instead of jquery ajax // NOTE: I think I like this alot better less objects and more native data fetch(WS_URL) .then(response => response.json()) .then(resultset => { window.console && console.log(`${PANEL_DESCRIPTION} results`) window.console && console.log(resultset) if (resultset && resultset.length) { panel_html += '<ul class="mx-1 px-1" style="font-size:81%;">' resultset.forEach((row, idx) => { if (idx < MAX_ITEMS) panel_html += get_panel_item(row, PANEL_TYPE) }) panel_html += '</ul>' } // if we don't have any results lets remove the header so nothing shows else panel_html = '' document.getElementById('disc_events-698143').innerHTML = panel_html }) .catch(error => window.console && console.log(error)); } // block level so fns and vars aren't global </script> <script> { // NOTE: using toLocaleDateString() below instead of this homegrown function. While it has an extra // comma it looks close enough to probably get rid of this. Leaving for now in case someone complains. // returns the formatted li for each row based on cfp or not; cfp has deadline others have location let get_panel_item = function(row, panel_type) { let cfp_deadline = '' if (typeof row.dt_cfp_ends=='string' && row.dt_cfp_ends.trim().length) { let options = { year: 'numeric', month: 'short', day: 'numeric' }; let cfp_deadline_date = new Date(row.dt_cfp_ends + "Z"); cfp_deadline = cfp_deadline_date.toLocaleDateString('en-US', options) } let result = ` <li class="event mx-1 my-1" style="list-style-type:none;" id="${row.e_id}" title="${row.code}"> <span class="event_title"> ` if (typeof row.detail_url=='string' && row.detail_url.trim().length) result += `<a href="${row.detail_url.replace(/^https?:\/\/[^\.]+\.spe.org\//,'/')}">${row.title}</a>` else result += `${row.title}` result += ` </span>` if (panel_type === 'cfp') { result += `<span class="cfp_deadline" style="display:block;"><strong>Deadline: </strong>${cfp_deadline}</span>` } else { result += `<span class="date_and_location" style="display:block;">${row.date_span} | ${row.location}</span>` } result += ` </li> ` return result } const PANEL_TYPE = 'w' const PANEL_DESCRIPTION = 'Workshops' const MAX_ITEMS = 4 const WS_URL = 'https://www.spe.org/_ds/disciplines/events/w/3f/' let panel_html = `<h4 style="font-size:90%;">${PANEL_DESCRIPTION}</h4>` // attempting to use the native async fetch instead of jquery ajax // NOTE: I think I like this alot better less objects and more native data fetch(WS_URL) .then(response => response.json()) .then(resultset => { window.console && console.log(`${PANEL_DESCRIPTION} results`) window.console && console.log(resultset) if (resultset && resultset.length) { panel_html += '<ul class="mx-1 px-1" style="font-size:81%;">' resultset.forEach((row, idx) => { if (idx < MAX_ITEMS) panel_html += get_panel_item(row, PANEL_TYPE) }) panel_html += '</ul>' } // if we don't have any results lets remove the header so nothing shows else panel_html = '' document.getElementById('disc_events-698144').innerHTML = panel_html }) .catch(error => window.console && console.log(error)); } // block level so fns and vars aren't global </script> </body></html>