Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • vtk/vtk
  • brad.king/vtk
  • allisonvacanti/vtk
  • chuck.atkins/vtk
  • shawn.waldon/vtk
  • robertmaynard/vtk
  • gcasey/vtk
  • danlipsa/vtk
  • sankhesh/vtk
  • nix/vtk
  • utkarsh.ayachit/vtk
  • seanm/vtk
  • amaclean/vtk
  • lorensen/vtk
  • dgobbi/vtk
  • jpouderoux/vtk
  • ken-martin/vtk
  • ben.boeckel/vtk
  • karsten.tausche/vtk
  • jbeezley/vtk
  • demarle/vtk
  • karasevpa/vtk
  • sebastien.jourdain/vtk
  • will.schroeder/vtk
  • pixelstime/vtk
  • sujin.philip/vtk
  • acbauer/vtk
  • berkgeveci/vtk
  • cory.quammen/vtk
  • john.tourtellott/vtk
  • jcfr/vtk
  • tcoulange/vtk
  • finetjul/vtk
  • aashish-chaudhary/vtk
  • tadeu/vtk
  • bxa/vtk
  • clinton/vtk
  • cjh1/vtk
  • alextsui05/vtk
  • jorge.suit/vtk
  • mwestphal/vtk
  • arnaudgelas/vtk
  • splines/vtk
  • dcthomp/spline-vtk
  • Lin.Ma/vtk-spline
  • matt-mccormick/vtk
  • ndfabian/vtk
  • scott.wittenburg/vtk
  • bill-hoffman/vtk
  • dlrdave/vtk
  • ethanb/vtk
  • johan-andruejol/vtk
  • ashray/vtk
  • Toki/vtk
  • kimbaol/vtk
  • toster/vtk
  • applekey/vtk
  • quantumsteve/vtk
  • a_neeman/vtk
  • biddisco/vtk
  • mhanwell/vtk
  • jjomier/vtk
  • dkuegler/vtk
  • bobifx/vtk
  • yordan_kyosev/vtk
  • schuyler.kylstra/vtk
  • ilya-five/vtk
  • JimCosby/vtk
  • Geng/vtk
  • blessley/vtk
  • davisb/vtk
  • iMSTK/vtk
  • chunmingchen/vtk
  • danlugli/vtk
  • chaffra/vtk
  • tjcorona/vtk
  • mennodeij1/vtk
  • thehummingbird/vtk
  • prabhuramachandran/vtk
  • chiranjibsur/vtk
  • jwilliz/vtk
  • wydesenej/vtk
  • msmolens/vtk
  • Lin.Ma/vtk
  • joseph.g.hennessey2.ctr/vtk
  • Wu/vtk
  • rogerkint/vtk
  • Xabi/vtk
  • timt/vtk
  • dcthomp/vtk
  • carson/vtk
  • Niels_Dekker/vtk
  • dmsurti/vtk
  • shreejan/vtk
  • brudfors/vtk
  • yumin/vtk
  • bob.obara/vtk
  • cousin_it/vtk
  • fstrati/vtk
  • dzenanz/vtk
  • cdeepakroy/vtk
  • LucasGandelKitware/vtk
  • alexis-girault/vtk
  • sreekanth-arikatla/vtk
  • SumedhaSingla/vtk
  • ricardo-ortiz/vtk
  • yboumenir/vtk
  • alvaro.sanchez/vtk
  • jgoizueta/vtk
  • bloring/vtk
  • akhilsurabhi/vtk
  • appstonic/vtk
  • waldyrious/vtk
  • lenlen/vtk
  • romangrothausmann/vtk
  • NevilX/vtk
  • natorious1990/vtk
  • ktsumura/vtk
  • radix-vinni/vtk
  • saumyabhadani/vtk
  • starius/vtk
  • mgenet/vtk
  • dhanannjay-deo/vtk
  • fabian.wenzel/vtk
  • stephenshamilton/vtk
  • axkibe/vtk
  • grlee77/vtk
  • lisa-avila/vtk
  • martyngigg/vtk
  • asmith/vtk
  • opoplawski/vtk
  • maxoox/vtk
  • estan/vtk
  • awehrfritz/vtk
  • dsgruss/vtk
  • abheekg/vtk
  • jfavre/vtk
  • updega2/vtk
  • dgraves/vtk
  • zaherabdulazeez/vtk
  • lisphacker/vtk
  • BillMcGrory/vtk
  • Yang/vtk
  • dumontal/vtk
  • DVigneault/vtk
  • xyjin213/vtk
  • cpatrick/vtk
  • isohatalaj/vtk
  • rete/vtk
  • polycorn/vtk
  • Promayon/vtk
  • karthik/vtk
  • betsy.mcphail/vtk
  • nschloe/vtk
  • kmorel/vtk
  • aniqah/vtk
  • rupertnash/vtk
  • iMichka/vtk
  • shru13448/vtk
  • aeslaughter/vtk
  • QuadmasterXLII1/vtk
  • QuadmasterXLII/vtk
  • haocheng.liu/vtk
  • LouisBergmann/vtk
  • alouis/vtk
  • bjacquet/vtk
  • pieper/vtk
  • Ychuan1115/vtk
  • srikanthnagella/vtk
  • SeunOdutola/vtk
  • jborck/vtk
  • sidd23295/vtk
  • besoft/vtk
  • imikejackson/vtk
  • tttanichka333/vtk
  • vromerocano/vtk
  • fogleman/vtk
  • hinashah/vtk
  • abhishekns/vtk
  • mpkh/vtk
  • borisb/vtk
  • eg/vtk
  • technic/vtk
  • chet.nieter/vtk
  • maleike/vtk
  • emmenlau/vtk
  • florianlink1/vtk
  • teracamo/vtk
  • ole.v.solberg/vtk
  • greenjava/vtk
  • snorrikris/vtk
  • HaipengY/vtk
  • hina/vtk
  • jhlegarreta/vtk
  • diorcety/vtk
  • taketwo/vtk
  • mnucci32/vtk
  • gnzlbg/vtk
  • dfroger/vtk
  • WimK/vtk
  • luciemacron/vtk
  • kd7uns/vtk
  • dgkf/vtk
  • gocarlos/vtk
  • jayas121/vtk
  • olesen/vtk
  • Jon_Garner/vtk
  • cschmitz/vtk
  • Paul/vtk
  • kaaalid/vtk
  • neiltwist/vtk
  • Hertz1239/vtk
  • jupiterben/vtk
  • pierre.guilbert/vtk
  • matthew-woehlke/vtk
  • xantares/vtk
  • mayeul.chassagnard/vtk
  • t-ikegami/vtk
  • gbivins4/vtk
  • jacob/vtk
  • sarahjelinek/vtk
  • nicolas.vuaille/vtk
  • art/vtk
  • Levinaz69/vtk
  • aron.helser/vtk
  • yohey/vtk
  • alex-novinski/vtk
  • jacob-becker/vtk
  • robbie_lxw/vtk
  • burhan14031/vtk
  • thewtex/vtk
  • ML/vtk
  • bilke/vtk
  • bvanelli/vtk
  • Juliano/vtk
  • luliag/vtk
  • muellni/vtk
  • barkinet/vtk
  • kvankooten/vtk
  • Moonypoony/vtk
  • derino/vtk
  • wendy/vtk
  • kekivelez/vtk
  • Archeks/vtk
  • claireguilbaud/vtk
  • lassoan/vtk
  • brunbennett/vtk
  • hcwiley/vtk
  • jie.cheng/vtk
  • kghandi/vtk
  • michalhabera/vtk
  • francis.giraldeau/vtk
  • GG1991/vtk
  • ugiwgh/vtk
  • benjaminjeliot/vtk
  • locuscaeruleus/vtk
  • marcelotrevisani/vtk
  • Punzo/vtk
  • pavelpokutnev/vtk
  • sylmarien/vtk
  • jbvimort/vtk
  • athius/vtk
  • aowen87/vtk
  • StefanBruens/vtk
  • nocnokneo/vtk
  • mds/vtk
  • forrest.li/vtk
  • rcfwgithub/vtk
  • Guenoleh/vtk
  • drmateo/vtk
  • ahota/vtk
  • nishanthkarthik/vtk
  • pdhahn/vtk
  • dyoll/vtk
  • todoooo/vtk
  • Rhodanos/vtk
  • bjoernthiel/vtk
  • pink2/vtk
  • thudacko/vtk
  • qwofford/vtk
  • michael.migliore/vtk
  • mohamedAhmedIsmailAhmed/vtk
  • m-chaturvedi/vtk
  • Shoepon/vtk
  • ricardomorello/vtk
  • ktsai/vtk
  • hjmjohnson/vtk
  • daseven/vtk
  • federico.miorelli/vtk
  • jianfulin/vtk
  • ihnorton/vtk
  • handrake0724/vtk
  • yuelinho777/vtk
  • eberroca/vtk
  • arankin/vtk
  • zachmullen/vtk
  • alzi/vtk
  • csukuangfj/vtk
  • nick.laurenson/vtk
  • ethan.stam/vtk
  • bujack/vtk
  • ifmfr/vtk
  • jpulido/vtk
  • Butakoff/vtk
  • innokentiy.alaytsev/vtk
  • hendersa/vtk
  • tkarabela/vtk
  • charly.girot/vtk
  • dbonhaus/vtk
  • ClundXIII/vtk
  • shaikan/vtk
  • timrowley/vtk
  • tomj/vtk
  • ombre5733/vtk
  • hbwhlk83/vtk
  • cpinter/vtk
  • fbudin/vtk
  • nehaljwani/vtk
  • CometS1/vtk
  • debian/vtk
  • jan.o.schutte/vtk
  • normanius/vtk
  • wehhh/vtk
  • bwspenc/vtk
  • sergioPereiraBR/vtk
  • yurivict/vtk
  • GarrettMorrison/vtk
  • jensgw/vtk
  • alesgenova/vtk
  • paulharris/vtk
  • niranjankala/vtk
  • tavaughan/vtk
  • christianezeani/vtk
  • kihneman/vtk
  • phcerdan/vtk
  • Bengt/vtk
  • knolla/vtk
  • shreeraj.jadhav/vtk
  • Sunderlandkyl/vtk
  • drpeterfranz/vtk
  • pedroneto/vtk
  • levara/vtk
  • TheBlackCat/vtk
  • Bleach665/vtk
  • JeromeDuboisPro/vtk
  • pbergeron/vtk
  • ilovezfs/vtk
  • jeffamstutz/vtk
  • edwinbennink/vtk
  • ChrisB/vtk
  • rexchai/vtk
  • jclearwater/vtk
  • pengzhou93/vtk
  • Cotrik/vtk
  • drouin-simon/vtk
  • Simon-GitLab/vtk
  • mcvaneede/vtk
  • aaigner/vtk
  • murraypurves/vtk
  • Chrisyunhua/vtk
  • lhofmann/vtk
  • tobias-haenel/vtk
  • aitormoreno/vtk
  • severnaa/vtk
  • angelika.ophagen/vtk
  • AOphagen/vtk
  • byhongda/vtk
  • HuangLiJinJames/vtk
  • NicholasWon47/vtk
  • chenhaomagnetic/vtk
  • imngy/vtk
  • maxGimeno/vtk
  • kf6kjg/vtk
  • cstew2/vtk
  • lrineau/vtk
  • vnpavanelli/vtk
  • erichlf/vtk
  • SunBlack/vtk
  • PauloCarvalhoRJ/vtk
  • McrmDev/vtk
  • jblekien/vtk
  • guerrero78/vtk
  • hygonsoc/vtk
  • embeddedmz/vtk
  • wangtaoz/vtk
  • andrea-iob/vtk
  • ollielo/vtk
  • boonth/vtk
  • lugia-kun/vtk
  • adrien.boucaud/vtk
  • jstark/vtk
  • mathiash/vtk
  • patrick-oleary/vtk
  • patchett2002/vtk
  • tbiedert/vtk
  • MITRALZ/vtk
  • shihabrus/vtk
  • Xaxetrov/vtk
  • charles.gueunet/vtk
  • edern.haumont/vtk
  • schweitzer/vtk
  • leonhardt/vtk
  • williamfgc/vtk
  • hococoder/vtk
  • barcharcraz/vtk
  • lcantell/vtk
  • matt.leotta/vtk
  • kairong.jiang/vtk
  • neohsbrother/vtk
  • animeshbaranawal/vtk
  • jdoenias/vtk
  • bmwiedemann/vtk
  • stephen.sanchez/vtk
  • kislinsk/vtk
  • yufeimi/vtk
  • milljm/vtk
  • zmj1316/vtk
  • zhuokaizhao/vtk
  • nghia.truong/vtk
  • Mycai/vtk
  • Jacques-Bernard/vtk
  • yohann.bearzi/vtk
  • nghiatruong.vn/vtk
  • caitlin.ross/vtk
  • aandreyev/vtk
  • robustwangace/vtk
  • kovtuh/vtk
  • paulyc/vtk
  • pronaman/vtk
  • huyidao625/vtk
  • EvgenyVRN/vtk
  • yale.lee_nga/vtk
  • cobo/vtk
  • Highphone110/vtk
  • kevin.tew/vtk
  • daniel.jasinski/vtk
  • aspsee/vtk
  • Jellby/vtk
  • Bo98/vtk
  • tkoyama010/vtk
  • keith.m.ballard/vtk
  • XinhuaZhang/vtk
  • Simon-Esneault/vtk
  • maximilian.reimer.42/vtk
  • florian360/vtk
  • patrick.avery/vtk
  • aglv/vtk
  • mat127/vtk
  • brad-t-moore/vtk
  • thompson318/vtk
  • kingyue737/vtk
  • gilcu2/vtk
  • shogarth/vtk
  • doktorkjeld/vtk
  • BuzzBurrowes/vtk
  • amine.aboufirass/vtk
  • kirv/vtk
  • westphalm/vtk
  • gerald.lodron/vtk
  • yhtank/vtk
  • paul.lafoix/vtk
  • KiraGabi/vtk
  • ralovich/vtk
  • s.jafari.m/vtk
  • richardc/vtk
  • larsoner/vtk
  • DavidLaidlaw/vtk
  • thibault.pelletier/vtk
  • dhanakoti.murali/vtk
  • vbolea/vtk
  • aravind90/vtk
  • martijnkoopman/vtk
  • Tiphainejh/vtk
  • yozara/vtk
  • NicolaasWeideman/vtk
  • fdepourcq/vtk
  • Eustache/vtk
  • mdaley/vtk
  • aangelos28/vtk
  • RaoGY/vtk
  • sthibaul/vtk
  • qyr3366/vtk
  • ChristophHonal/vtk
  • christos.tsolakis/vtk
  • Cool/vtk
  • hansuk/vtk
  • mdorier/vtk
  • nerdalien/vtk
  • yasushi.saito/vtk
  • paul.choisel/vtk
  • kovynev/vtk
  • bobmiller/vtk
  • ziqiangxu/vtk
  • gonzalosaezm55/vtk
  • SailCPU/vtk
  • woodbot/vtk
  • yufan/vtk
  • amelvill-umich/vtk
  • mossaiby/vtk
  • likehuaer/vtk
  • timothee.chabat/vtk
  • Senidenary/vtk
  • Tobias-Fischer/vtk
  • BrentFoster/vtk
  • thliebig/vtk
  • thomas.caissard/vtk
  • whophil/vtk
  • RafaelPalomar/vtk
  • Angelo-abel/vtk
  • shawfei/vtk
  • MattesSchu/vtk
  • guillaume.gindre/vtk
  • maack/vtk
  • zqcolorful/vtk
  • tniemi/vtk
  • imalkov82/vtk
  • bzindovic/vtk
  • v.engelgardt/vtk
  • mjjackey/vtk
  • halowine/vtk
  • laurenn.lam/vtk
  • zonghx/vtk
  • ProGamerCode/vtk
  • bp85540/vtk
  • julia.sanchez/vtk
  • melanie.carriere/vtk
  • jules.bourdais/vtk
  • jerome.dias/vtk
  • luca.lacaille/vtk
  • octave.rossi/vtk
  • c.wetterer-nelson/vtk
  • nima.tofighi/vtk
  • jspanchu/vtk
  • jsteele/vtk
  • PetiteViking/vtk
  • bart/vtk
  • LucasGasparinoBSC/vtk
  • julien2412/vtk
  • francois.mazen/vtk
  • lxgwd1983/vtk
  • timothee.couble/vtk
  • benntqoo/vtk
  • jmhawkins/vtk
  • stonej/vtk
  • JackGuyver/vtk
  • rodrigomologni/vtk
  • chart3388/vtk
  • jessica.marquis/vtk
  • rockandsalt/vtk
  • zakaria220/vtk
  • ryan.krattiger1/vtk
  • darktemplarbasealt/vtk
  • scbiradar/vtk
  • andrew.wilson/vtk
  • moritz-h/vtk
  • kyzitemelos93/vtk
  • qqzhoucn/vtk
  • laurent.malka/vtk
  • akaszynski/vtk
  • spiros.tsalikis/vtk
  • sercxjo/vtk
  • jesper.norell/vtk
  • tiffany.chhim/vtk
  • jennifermanzella11/vtk
  • loongson-zn/vtk
  • RonRahaman/vtk
  • Snethy/vtk
  • antoine.ruffion/vtk
  • air-h-128k-il/vtk
  • atomicky/vtk
  • chenjt2001/vtk
  • cclauss/vtk
  • Connor-Bowley/vtk
  • ferdymercury/vtk
  • connor.bowley/vtk
  • Tianyang86/vtk
  • stephen.crowell/vtk
  • xzhang/vtk
  • antoine.schieb/vtk
  • ArchangeGabriel/vtk
  • thomas.galland/vtk
  • kadabraqc/vtk
  • sanguinariojoe/vtk
  • tom.suchel/vtk
  • mgoodson-cvd/vtk
  • jtojnar/vtk
  • bwoodsend/vtk
  • frantze.raphael/vtk
  • YuhaoQiu/vtk
  • user-zmt/vtk
  • XiaLiChao82/vtk
  • biagas/vtk
  • gaspard.thevenon/vtk
  • nicoco/vtk
  • svenevs/vtk
  • olesalscheider/vtk
  • EvanHampton-Seequent/vtk
  • spsjorspeterse/vtk
  • p-j-smith/vtk
  • jaswant.panchumarti/vtk
  • nasos/vtk
  • david.berger/vtk
  • dmt/vtk
  • huangjx-beijing/vtk
  • andtokm/vtk
  • MehdiChinoune/vtk
  • alexy.pellegrini/vtk
  • lucas.givord/vtk
  • jianhui2769/vtk
  • chengchengjing/vtk
  • scienceasdf/vtk
  • maidamai0/vtk
  • GuillaumeFavelier/vtk
  • ayenpure/vtk
  • ikerssm/vtk
  • hakostra/vtk
  • epalmer/vtk
  • Dophi123/vtk
  • julien.fausty/vtk
  • zjibben/vtk
  • nncarlson/vtk
  • Simon96128/vtk
  • jiapei1001/vtk
  • jiapei100/vtk
  • Failxxx/vtk
  • jcorbettfrank/vtk
  • Xingorno/vtk
  • windgs/vtk
  • orbisvicis/vtk
  • jramaiah/vtk
  • luzpaz/vtk
  • kammnd/vtk
  • lokessh/vtk
  • QinChen1998/vtk
  • mirenradia/vtk
  • tbirdso/vtk
  • jones/vtk
  • HollowSun/vtk
  • db/vtk
  • matthiasbock/vtk
  • adam-grant-hendry/vtk
  • Kenichiro-Yoshimi/vtk
  • redemptorridon/vtk
  • Neumann-A/vtk
  • tereshkinvadimst/vtk
  • francorougier60/vtk
  • felixonmars/vtk
  • gabrielmuller/vtk
  • Alex9/vtk
  • XinweiHsu/vtk
  • Zz-er/vtk
  • ferdnyc/vtk
  • mahmoudmohamedk8200949/vtk
  • HamsaSaber/vtk
  • boomanaiden154/vtk
  • bebuch/vtk
  • fab/vtk
  • chrisadamsonmcri/vtk
  • yarous224/vtk
  • zhenhaochu/vtk
  • pranjal.sahu/vtk
  • thibault.bruyere/vtk
  • banesullivan/vtk
  • is0591hs/vtk
  • philipp.weissenbacher/vtk
  • xavier.tricoche/vtk
  • hopfer.benjamin/vtk
  • liyinyan/vtk
  • gabriel.lefloch/vtk
  • bistek/vtk
  • mmXIO/vtk
  • MicK7/vtk
  • jndxljun/vtk
  • Shirin_ra/vtk
  • hanfengyu/vtk
  • zhhaoyuting111/vtk
  • john-stone/vtk
  • woosukbyun0724/vtk
  • xenosLit/vtk
  • ashishmalik5am/vtk
  • j824h/vtk
  • jschueller/vtk
  • alexdewar/vtk
  • mo.gomaa1996/vtk
  • rubendebruin/vtk
  • CiaoTan/vtk
  • bhaq-tri/vtk
  • TattiRuby/vtk
  • griffin28/vtk
  • he.wryyy/vtk
  • aly.tireira/vtk
  • Riaa/vtk
  • b89alireza/vtk
  • john.parent/vtk
  • marin.kajtazi/vtk
  • andy9t7/vtk
  • mikedubb0811/vtk
  • kookoo9999/vtk
  • charly.bollinger/vtk
  • kamm1948/vtk
  • jacob.moore/vtk
  • gaoxinyu18/vtk
  • zhouyi-u/vtk
  • Robbie/vtk
  • couletj/vtk
  • julien.chaize1/vtk
  • shreeni152/vtk
  • lkaly/vtk
  • louis.gombert/vtk
  • linneapalmstrom/vtk
  • ppebay/vtk
  • Rocky/vtk
  • jiangxingkai/vtk
  • xutang/vtk
  • jens.munk.hansen/vtk
  • 5268368/vtk
  • jumbojing/vtk
  • vectorD/vtk
  • mo-schmid/vtk
  • CC9701/vtk
  • Diiiiii-9/vtk
  • moussa-li/vtk
  • MatthewFlamm/vtk
  • sergeylesnik/vtk
  • xpnguyen/vtk
  • FireFlyUh/vtk
  • klevzoff/vtk
  • jake.yun/vtk
  • ixxi/vtk
  • stavbodik/vtk
  • willdunklin/vtk
  • hjhicks321/vtk
  • ymao.mu/vtk
  • fghoussen/vtk
  • Otahal/vtk
  • OccupyMars2025/vtk
  • dglaeser/vtk
  • Skyde/vtk
  • rbinyahib/vtk
  • jmisedam/vtk
  • petlenz/vtk
  • nmnobre/vtk
  • mheinsen/vtk
  • LimitingFactor/vtk
  • Senguo/vtk
  • lee.newberg/vtk
  • svniemeijer/vtk
  • alfiogn/vtk
  • 2xB/vtk
  • karamozianalireza1010/vtk
  • astucky/vtk
  • penfe/vtk
  • lgombert/vtk
  • saichaitanya.rodda/vtk
  • thaumaturg1c/vtk
  • pkestene/vtk
  • rlexmann/vtk
  • gabokamaze/vtk
  • 212dandan/vtk
  • dinghao19960829/vtk
  • ScarpMarc/vtk
  • yangdonglai/vtk
  • stauffert.maxime/vtk
  • dyollb/vtk
  • hollowsunhc/vtk
  • loic.gaillard/vtk
  • ychaos/vtk
  • dperozzi/vtk
  • SeanCurtis-TRI/vtk
  • jhodges/vtk
  • jingliang2005/vtk
  • hbwhzc/vtk
  • zellmann/vtk
  • germa89/vtk
  • 2nafish117/vtk
  • uporersith/vtk
  • jordi.subirana/vtk
  • carlosgcolon/vtk
  • PeterFranzSeequent/vtk
  • cristianAnd24/vtk
  • mrbean-bremen/vtk
  • usiems/vtk
  • Krzmbrzl/vtk
  • tom.clabault/vtk
  • dpseiter1/vtk
  • scivision/vtk
  • Donvlouss/vtk
  • fedormsv/vtk
  • chandan.satija/vtk
  • anuraaga/vtk
  • kxxt/vtk
  • ryosga/vtk
  • Ajile3D/vtk-ajile
  • matekelemen/vtk
  • lililiangyu/vtk
  • ArashPartow/vtk
  • Peter.Zajac/vtk
  • zackgalbreath/vtk
  • bansan/vtk
  • leon.victor/vtk
  • gabbyva5/vtk
  • ClaudioHoffmann/vtk
  • larshg/vtk
  • barracuda156/vtk
  • niconiconi/vtk
  • quangvd3/vtk
  • lmaoha/vtk
  • jarredgaudineer/vtk
  • YingjuHan/vtk
  • afa/vtk
  • thecasterian/vtk
  • codeling/vtk
  • wortiz/vtk
  • undeadde/vtk
  • jonathanschilling/vtk
  • ychu-hoo/vtk
  • FlashPanda/vtk
  • rachedwaly/vtk
  • DownerCase/vtk
  • TurBoss/vtk
  • dunyazad/vtk
  • marquis.weng/vtk
  • chir-set/vtk
  • Mechazo11/az-vtk
  • nekto1989/vtk
  • jean.fechter/vtk
  • anonymous-fys/vtk
  • clintonstimpson/vtk
  • krande/vtk
  • zist8888/vtk
  • Joker-7-7/vtk
  • skashtanov/vtk
  • o.derewonko/vtk
  • ndelpuppo/vtk
  • kenavolic/vtk
  • raimund-schluessler/vtk
  • medmssaouri/vtk-pca-normals
  • karchit0509/vtk
  • gapry/vtk
  • guillaume-jacquenot/vtk
  • Dave-Allured/vtk
  • ctaylo41/vtk
  • johnnynunez/vtk
  • 1div0/vtk
  • aruggieri/vtk
  • LunaNebula/vtk
  • quinn.powell/vtk
  • exbluesbreaker/vtk
  • junghans/vtk
  • NikitaKolebaev/vtk
  • jwilson1881/vtk
  • celynchgt/vtk
  • guillaume.gisbert/vtk
853 results
Show changes
Commits on Source (5)
Showing
with 276 additions and 132 deletions
## Update exodusII and Ioss to be based on SEACAS 2025-02-27
Update `exodusII` and `Ioss` third party libraries to be based
on [SEACAS 2025-02-27](https://github.com/sandialabs/seacas/releases/tag/v2025-02-27).
/* /*
* Copyright(C) 1999-2024 National Technology & Engineering Solutions * Copyright(C) 1999-2025 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -59,12 +59,12 @@ ...@@ -59,12 +59,12 @@
#endif #endif
/* EXODUS version number */ /* EXODUS version number */
#define EXODUS_VERSION "9.00" #define EXODUS_VERSION "9.04"
#define EXODUS_VERSION_MAJOR 9 #define EXODUS_VERSION_MAJOR 9
#define EXODUS_VERSION_MINOR 0 #define EXODUS_VERSION_MINOR 4
#define EXODUS_RELEASE_DATE "May 30, 2024" #define EXODUS_RELEASE_DATE "November 5, 2024"
#define EX_API_VERS 9.00f #define EX_API_VERS 9.04f
#define EX_API_VERS_NODOT (100 * EXODUS_VERSION_MAJOR + EXODUS_VERSION_MINOR) #define EX_API_VERS_NODOT (100 * EXODUS_VERSION_MAJOR + EXODUS_VERSION_MINOR)
#define EX_VERS EX_API_VERS #define EX_VERS EX_API_VERS
...@@ -219,6 +219,7 @@ enum ex_inquiry { ...@@ -219,6 +219,7 @@ enum ex_inquiry {
EX_INQ_NUM_ELEM_SET_VAR = 69, /**< number of element set variables */ EX_INQ_NUM_ELEM_SET_VAR = 69, /**< number of element set variables */
EX_INQ_NUM_SIDE_SET_VAR = 70, /**< number of sideset variables */ EX_INQ_NUM_SIDE_SET_VAR = 70, /**< number of sideset variables */
EX_INQ_NUM_GLOBAL_VAR = 71, /**< number of global variables */ EX_INQ_NUM_GLOBAL_VAR = 71, /**< number of global variables */
EX_INQ_FILE_FORMAT = 72, /**< netCDF file format */
EX_INQ_INVALID = -1 EX_INQ_INVALID = -1
}; };
...@@ -246,9 +247,11 @@ NetCDF-4.?.? and later ...@@ -246,9 +247,11 @@ NetCDF-4.?.? and later
enum ex_option_type { enum ex_option_type {
EX_OPT_MAX_NAME_LENGTH = EX_OPT_MAX_NAME_LENGTH =
1, /**< Maximum length of names that will be returned/passed via api call. */ 1, /**< Maximum length of names that will be returned/passed via api call. */
EX_OPT_COMPRESSION_TYPE, /**< Not currently used; default is gzip */ EX_OPT_COMPRESSION_TYPE, /**< Default is gzip */
EX_OPT_COMPRESSION_LEVEL, /**< In the range [0..9]. A value of 0 indicates no compression */ EX_OPT_COMPRESSION_LEVEL, /**< Range depends on compression type. */
EX_OPT_COMPRESSION_SHUFFLE, /**< 1 if enabled, 0 if disabled */ EX_OPT_COMPRESSION_SHUFFLE, /**< 1 if enabled, 0 if disabled */
EX_OPT_QUANTIZE_NSD, /**< if > 0, Number of significant digits to retain in lossy quantize
compression */
EX_OPT_INTEGER_SIZE_API, /**< 4 or 8 indicating byte size of integers used in api functions. */ EX_OPT_INTEGER_SIZE_API, /**< 4 or 8 indicating byte size of integers used in api functions. */
EX_OPT_INTEGER_SIZE_DB, /**< Query only, returns 4 or 8 indicating byte size of integers stored EX_OPT_INTEGER_SIZE_DB, /**< Query only, returns 4 or 8 indicating byte size of integers stored
on the database. */ on the database. */
...@@ -259,6 +262,8 @@ enum ex_compression_type { ...@@ -259,6 +262,8 @@ enum ex_compression_type {
EX_COMPRESS_ZLIB = 1, /**< Use ZLIB-based compression (if available) */ EX_COMPRESS_ZLIB = 1, /**< Use ZLIB-based compression (if available) */
EX_COMPRESS_GZIP = 1, /**< Same as ZLIB, but typical alias used */ EX_COMPRESS_GZIP = 1, /**< Same as ZLIB, but typical alias used */
EX_COMPRESS_SZIP, /**< Use SZIP-based compression (if available) */ EX_COMPRESS_SZIP, /**< Use SZIP-based compression (if available) */
EX_COMPRESS_ZSTD, /**< Use ZStandard compression (if available) */
EX_COMPRESS_BZ2, /**< Use BZ2 / Bzip2 compression (if available) */
}; };
typedef enum ex_compression_type ex_compression_type; typedef enum ex_compression_type ex_compression_type;
/** @}*/ /** @}*/
...@@ -345,13 +350,13 @@ typedef struct ex_basis ...@@ -345,13 +350,13 @@ typedef struct ex_basis
/* /*
clang-format off clang-format off
* *
* subc_dim: dimension of the subcell associated with the specified DoF ordinal * subc_dim: dimension of the subcell associated with the specified DoF ordinal
* -- 0 node, 1 edge, 2 face, 3 volume [Range: 0..3] * -- 0 node, 1 edge, 2 face, 3 volume [Range: 0..3]
* subc_ordinal: ordinal of the subcell relative to its parent cell * subc_ordinal: ordinal of the subcell relative to its parent cell
* -- 0..n for each ordinal with the same subc dim [Range: <= DoF ordinal] * -- 0..n for each ordinal with the same subc dim [Range: <= DoF ordinal]
* subc_dof_ordinal: ordinal of the DoF relative to the subcell * subc_dof_ordinal: ordinal of the DoF relative to the subcell
* subc_num_dof: cardinality of the DoF set associated with this subcell. * subc_num_dof: cardinality of the DoF set associated with this subcell.
* xi, eta, mu (ξ, η, ζ): Parametric coordinate location of the DoF * xi, eta, mu (ξ, η, ζ): Parametric coordinate location of the DoF
* -- (Only first ndim values are valid) * -- (Only first ndim values are valid)
* *
clang-format on clang-format on
...@@ -971,7 +976,7 @@ EXODUS_EXPORT int ex_get_block(int exoid, ex_entity_type blk_type, ex_entity_id ...@@ -971,7 +976,7 @@ EXODUS_EXPORT int ex_get_block(int exoid, ex_entity_type blk_type, ex_entity_id
/* Read Edge Face or Element Block Parameters */ /* Read Edge Face or Element Block Parameters */
EXODUS_EXPORT int ex_get_block_param(int exoid, ex_block *block); EXODUS_EXPORT int ex_get_block_param(int exoid, ex_block *block);
EXODUS_EXPORT int ex_put_block_param(int exoid, const ex_block block); EXODUS_EXPORT int ex_put_block_param(int exoid, ex_block block);
EXODUS_EXPORT int ex_get_block_params(int exoid, size_t block_count, struct ex_block **blocks); EXODUS_EXPORT int ex_get_block_params(int exoid, size_t block_count, struct ex_block **blocks);
...@@ -1037,34 +1042,35 @@ EXODUS_EXPORT int ex_put_attr_names(int exoid, ex_entity_type blk_type, ex_entit ...@@ -1037,34 +1042,35 @@ EXODUS_EXPORT int ex_put_attr_names(int exoid, ex_entity_type blk_type, ex_entit
EXODUS_EXPORT int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, EXODUS_EXPORT int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id,
char **names); char **names);
EXODUS_EXPORT int ex_put_assembly(int exoid, const struct ex_assembly assembly); EXODUS_EXPORT int ex_put_assembly(int exoid, struct ex_assembly assembly);
EXODUS_EXPORT int ex_get_assembly(int exoid, struct ex_assembly *assembly); EXODUS_EXPORT int ex_get_assembly(int exoid, struct ex_assembly *assembly);
EXODUS_EXPORT int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assemblies); EXODUS_EXPORT int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assemblies);
EXODUS_EXPORT int ex_get_assemblies(int exoid, struct ex_assembly *assemblies); EXODUS_EXPORT int ex_get_assemblies(int exoid, struct ex_assembly *assemblies);
EXODUS_EXPORT int ex_put_blob(int exoid, const struct ex_blob blob); EXODUS_EXPORT int ex_put_blob(int exoid, struct ex_blob blob);
EXODUS_EXPORT int ex_get_blob(int exoid, struct ex_blob *blob); EXODUS_EXPORT int ex_get_blob(int exoid, struct ex_blob *blob);
EXODUS_EXPORT int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs); EXODUS_EXPORT int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs);
EXODUS_EXPORT int ex_get_blobs(int exoid, struct ex_blob *blobs); EXODUS_EXPORT int ex_get_blobs(int exoid, struct ex_blob *blobs);
EXODUS_EXPORT int ex_put_field_metadata(int exoid, const ex_field field); EXODUS_EXPORT int ex_put_multi_field_metadata(int exoid, const ex_field *field, int field_count);
EXODUS_EXPORT int ex_put_field_suffices(int exoid, const ex_field field, const char *suffices); EXODUS_EXPORT int ex_put_field_metadata(int exoid, ex_field field);
EXODUS_EXPORT int ex_put_field_suffices(int exoid, ex_field field, const char *suffices);
EXODUS_EXPORT int ex_get_field_metadata(int exoid, ex_field *field); EXODUS_EXPORT int ex_get_field_metadata(int exoid, ex_field *field);
EXODUS_EXPORT int ex_get_field_metadata_count(int exoid, ex_entity_type obj_type, ex_entity_id id); EXODUS_EXPORT int ex_get_field_metadata_count(int exoid, ex_entity_type obj_type, ex_entity_id id);
EXODUS_EXPORT int ex_get_field_suffices(int exoid, const ex_field field, char *suffices); EXODUS_EXPORT int ex_get_field_suffices(int exoid, ex_field field, char *suffices);
EXODUS_EXPORT int ex_get_basis_count(int exoid); EXODUS_EXPORT int ex_get_basis_count(int exoid);
EXODUS_EXPORT int ex_get_basis(int exoid, ex_basis **pbasis, int *num_basis); EXODUS_EXPORT int ex_get_basis(int exoid, ex_basis **pbasis, int *num_basis);
EXODUS_EXPORT int ex_put_basis(int exoid, const ex_basis basis); EXODUS_EXPORT int ex_put_basis(int exoid, ex_basis basis);
EXODUS_EXPORT int ex_get_quadrature_count(int exoid); EXODUS_EXPORT int ex_get_quadrature_count(int exoid);
EXODUS_EXPORT int ex_get_quadrature(int exoid, ex_quadrature **pquad, int *num_quad); EXODUS_EXPORT int ex_get_quadrature(int exoid, ex_quadrature **pquad, int *num_quad);
EXODUS_EXPORT int ex_put_quadrature(int exoid, const ex_quadrature quad); EXODUS_EXPORT int ex_put_quadrature(int exoid, ex_quadrature quad);
/* Write arbitrary integer, double, or text attributes on an entity */ /* Write arbitrary integer, double, or text attributes on an entity */
EXODUS_EXPORT int ex_put_attribute(int exoid, const ex_attribute attributes); EXODUS_EXPORT int ex_put_attribute(int exoid, ex_attribute attributes);
EXODUS_EXPORT int ex_put_attributes(int exoid, size_t attr_count, const ex_attribute *attributes); EXODUS_EXPORT int ex_put_attributes(int exoid, size_t attr_count, const ex_attribute *attributes);
EXODUS_EXPORT int ex_put_double_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id, EXODUS_EXPORT int ex_put_double_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id,
...@@ -1318,10 +1324,10 @@ EXODUS_EXPORT int ex_initialize_quadrature_struct(ex_quadrature *quad, size_t nu ...@@ -1318,10 +1324,10 @@ EXODUS_EXPORT int ex_initialize_quadrature_struct(ex_quadrature *quad, size_t nu
EXODUS_EXPORT const char *ex_component_field_name(ex_field *field, EXODUS_EXPORT const char *ex_component_field_name(ex_field *field,
int component[EX_MAX_FIELD_NESTING]); int component[EX_MAX_FIELD_NESTING]);
EXODUS_EXPORT const char *ex_field_component_suffix(ex_field *field, int nest_level, int component); EXODUS_EXPORT const char *ex_field_component_suffix(ex_field *field, int nest_level, int component);
EXODUS_EXPORT int ex_field_cardinality(const ex_field_type field_type); EXODUS_EXPORT int ex_field_cardinality(ex_field_type field_type);
EXODUS_EXPORT const char *ex_field_type_name(const ex_field_type field_type); EXODUS_EXPORT const char *ex_field_type_name(ex_field_type field_type);
EXODUS_EXPORT ex_field_type ex_string_to_field_type_enum(const char *field_name); EXODUS_EXPORT ex_field_type ex_string_to_field_type_enum(const char *field_name);
EXODUS_EXPORT const char *ex_field_type_enum_to_string(const ex_field_type field_type); EXODUS_EXPORT const char *ex_field_type_enum_to_string(ex_field_type field_type);
/*! @} */ /*! @} */
...@@ -1958,6 +1964,8 @@ enum ex_error_return_code { ...@@ -1958,6 +1964,8 @@ enum ex_error_return_code {
EX_NULLENTITY = -1006, /**< null entity found */ EX_NULLENTITY = -1006, /**< null entity found */
EX_NOENTITY = -1007, /**< no entities of that type on database */ EX_NOENTITY = -1007, /**< no entities of that type on database */
EX_NOTFOUND = -1008, /**< could not find requested variable on database */ EX_NOTFOUND = -1008, /**< could not find requested variable on database */
EX_INTSIZEMISMATCH =
-1009, /**< integer sizes do not match on input/output databases in ex_copy */
EX_FATAL = -1, /**< fatal error flag def */ EX_FATAL = -1, /**< fatal error flag def */
EX_NOERR = 0, /**< no error flag def */ EX_NOERR = 0, /**< no error flag def */
......
...@@ -28,6 +28,18 @@ ...@@ -28,6 +28,18 @@
#endif #endif
#endif #endif
#if NC_HAS_ZSTD == 1 || NC_HAS_BZ2
#include "netcdf_filter.h"
#endif
#if !defined NC_FillValue
#if defined _FillValue
#define NC_FillValue _FillValue
#else
#define NC_FillValue "_FillValue"
#endif
#endif
#if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900 #if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900
#define PRId64 "I64d" #define PRId64 "I64d"
#else #else
...@@ -687,29 +699,35 @@ typedef enum exi_element_type exi_element_type; ...@@ -687,29 +699,35 @@ typedef enum exi_element_type exi_element_type;
struct exi_file_item struct exi_file_item
{ {
int file_id; int file_id;
nc_type netcdf_type_code; nc_type netcdf_type_code;
int int64_status; int int64_status;
int maximum_name_length; int maximum_name_length;
int time_varid; /* Store to avoid lookup each timestep */ int time_varid; /* Store to avoid lookup each timestep */
int compression_level; /**< 0 (disabled) to 9 (maximum) compression level for
gzip, 4..32 and even for szip; -131072..22 for zstd, NetCDF-4 only */
unsigned int assembly_count; unsigned int assembly_count;
unsigned int blob_count; unsigned int blob_count;
unsigned int persist_define_mode : 10; /**< Stay in define mode until exi_persist_leavedef is
called. Set by exi_persist_redef... */
unsigned int unsigned int
compression_algorithm : 2; /**< GZIP/ZLIB, SZIP, more may be supported by NetCDF soon */ compression_algorithm : 4; /**< GZIP/ZLIB, SZIP, more may be supported by NetCDF soon */
unsigned int compression_level : 6; /**< 0 (disabled) to 9 (maximum) compression level for unsigned int quantize_nsd : 4; /**< 0 (disabled) to 15 (maximum) number of significant digits
gzip, 4..32 and even for szip; NetCDF-4 only */ retained for lossy quanitzation compression */
unsigned int shuffle : 1; /**< 1 true, 0 false */
unsigned int user_compute_wordsize : 1; /**< 0 for 4 byte or 1 for 8 byte reals */ unsigned int user_compute_wordsize : 1; /**< 0 for 4 byte or 1 for 8 byte reals */
unsigned int shuffle : 1; /**< 1 true, 0 false */
unsigned int unsigned int
file_type : 2; /**< 0 - classic, 1 -- 64 bit classic, 2 --NetCDF4, 3 --NetCDF4 classic */ file_type : 2; /**< 0 - classic, 1 -- 64 bit classic, 2 --NetCDF4, 3 --NetCDF4 classic */
unsigned int is_write : 1; /**< for output or append */ unsigned int is_write : 1; /**< for output or append */
unsigned int is_parallel : 1; /**< 1 true, 0 false */ unsigned int is_parallel : 1; /**< 1 true, 0 false */
unsigned int is_hdf5 : 1; /**< 1 true, 0 false */ unsigned int is_hdf5 : 1; /**< 1 true, 0 false */
unsigned int is_pnetcdf : 1; /**< 1 true, 0 false */ unsigned int is_pnetcdf : 1; /**< 1 true, 0 false */
unsigned int has_nodes : 1; /**< for input only at this time */ unsigned int has_nodes : 1; /**< for input only at this time */
unsigned int has_edges : 1; /**< for input only at this time */ unsigned int has_edges : 1; /**< for input only at this time */
unsigned int has_faces : 1; /**< for input only at this time */ unsigned int has_faces : 1; /**< for input only at this time */
unsigned int has_elems : 1; /**< for input only at this time */ unsigned int has_elems : 1; /**< for input only at this time */
unsigned int in_define_mode : 1; /**< Is the file in nc define mode... */
struct exi_file_item *next; struct exi_file_item *next;
}; };
...@@ -799,8 +817,8 @@ extern struct exi_obj_stats *exoII_fam; ...@@ -799,8 +817,8 @@ extern struct exi_obj_stats *exoII_fam;
extern struct exi_obj_stats *exoII_nm; extern struct exi_obj_stats *exoII_nm;
EXODUS_EXPORT struct exi_file_item *exi_find_file_item(int exoid); EXODUS_EXPORT struct exi_file_item *exi_find_file_item(int exoid);
struct exi_file_item *exi_add_file_item(int exoid); struct exi_file_item *exi_add_file_item(int exoid);
struct exi_obj_stats *exi_get_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr); struct exi_obj_stats *exi_get_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr);
EXODUS_EXPORT void exi_rm_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr); EXODUS_EXPORT void exi_rm_stat_ptr(int exoid, struct exi_obj_stats **obj_ptr);
...@@ -856,9 +874,14 @@ EXODUS_EXPORT int exi_put_names(int exoid, int varid, size_t num_entity, char * ...@@ -856,9 +874,14 @@ EXODUS_EXPORT int exi_put_names(int exoid, int varid, size_t num_entity, char *
ex_entity_type obj_type, const char *subtype, const char *routine); ex_entity_type obj_type, const char *subtype, const char *routine);
EXODUS_EXPORT void exi_trim(char *name); EXODUS_EXPORT void exi_trim(char *name);
EXODUS_EXPORT void exi_update_max_name_length(int exoid, int length); EXODUS_EXPORT void exi_update_max_name_length(int exoid, int length);
EXODUS_EXPORT int exi_redef(int exoid, const char *call_func);
EXODUS_EXPORT int exi_persist_redef(int exoid, const char *call_func);
EXODUS_EXPORT int exi_leavedef(int exoid, /* NemesisI file ID */ EXODUS_EXPORT int exi_leavedef(int exoid, /* NemesisI file ID */
const char *call_rout /* Name of calling function */ const char *call_rout /* Name of calling function */
); );
EXODUS_EXPORT int exi_persist_leavedef(int exoid, /* NemesisI file ID */
const char *call_rout /* Name of calling function */
);
EXODUS_EXPORT int exi_check_version(int run_version); EXODUS_EXPORT int exi_check_version(int run_version);
EXODUS_EXPORT int exi_handle_mode(unsigned int my_mode, int is_parallel, int run_version); EXODUS_EXPORT int exi_handle_mode(unsigned int my_mode, int is_parallel, int run_version);
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
/** /**
* Generated using: * Generated using:
* *
* nm -g lib/libvtkexodusII-9.3.so | grep -e ' [TDRSB] ' |\ * nm -g lib/libvtkexodusII-9.4.so | grep -e ' [TDRSB] ' |\
* cut -d' ' -f3 | grep -v -e '^_init$' -e '^_fini$' -e '^_edata$' -e '^__bss_start$' -e 'vtkexodusII_' | \ * cut -d' ' -f3 | grep -v -e '^_init$' -e '^_fini$' -e '^_edata$' -e '^__bss_start$' -e 'vtkexodusII_' | \
* sort | sed -e 's/\(.*\)/#define \1 vtkexodusII_\1/' > /tmp/vtk_exodusII_mangle.h * sort | sed -e 's/\(.*\)/#define \1 vtkexodusII_\1/' > /tmp/vtk_exodusII_mangle.h
*/ */
...@@ -232,6 +232,8 @@ ...@@ -232,6 +232,8 @@
#define ex_inquire_int vtkexodusII_ex_inquire_int #define ex_inquire_int vtkexodusII_ex_inquire_int
#define ex_int64_status vtkexodusII_ex_int64_status #define ex_int64_status vtkexodusII_ex_int64_status
#define ex_int_write_conn vtkexodusII_ex_int_write_conn #define ex_int_write_conn vtkexodusII_ex_int_write_conn
#define exi_persist_leavedef vtkexodusII_exi_persist_leavedef
#define exi_persist_redef vtkexodusII_exi_persist_redef
#define exi_populate_header vtkexodusII_exi_populate_header #define exi_populate_header vtkexodusII_exi_populate_header
#define exi_pthread_first_thread_init vtkexodusII_exi_pthread_first_thread_init #define exi_pthread_first_thread_init vtkexodusII_exi_pthread_first_thread_init
#define exi_put_assembly_name vtkexodusII_exi_put_assembly_name #define exi_put_assembly_name vtkexodusII_exi_put_assembly_name
...@@ -244,6 +246,7 @@ ...@@ -244,6 +246,7 @@
#define exi_put_partial_nodal_var vtkexodusII_exi_put_partial_nodal_var #define exi_put_partial_nodal_var vtkexodusII_exi_put_partial_nodal_var
#define exi_put_quad_attribute vtkexodusII_exi_put_quad_attribute #define exi_put_quad_attribute vtkexodusII_exi_put_quad_attribute
#define exi_put_type_attribute vtkexodusII_exi_put_type_attribute #define exi_put_type_attribute vtkexodusII_exi_put_type_attribute
#define exi_redef vtkexodusII_exi_redef
#define exi_reset_error_status vtkexodusII_exi_reset_error_status #define exi_reset_error_status vtkexodusII_exi_reset_error_status
#define exi_rm_file_item vtkexodusII_exi_rm_file_item #define exi_rm_file_item vtkexodusII_exi_rm_file_item
#define exi_rm_stat_ptr vtkexodusII_exi_rm_stat_ptr #define exi_rm_stat_ptr vtkexodusII_exi_rm_stat_ptr
...@@ -321,6 +324,7 @@ ...@@ -321,6 +324,7 @@
#define ex_put_loadbal_param_cc vtkexodusII_ex_put_loadbal_param_cc #define ex_put_loadbal_param_cc vtkexodusII_ex_put_loadbal_param_cc
#define ex_put_map vtkexodusII_ex_put_map #define ex_put_map vtkexodusII_ex_put_map
#define ex_put_map_param vtkexodusII_ex_put_map_param #define ex_put_map_param vtkexodusII_ex_put_map_param
#define ex_put_multi_field_metadata vtkexodusII_ex_put_multi_field_metadata
#define ex_put_name vtkexodusII_ex_put_name #define ex_put_name vtkexodusII_ex_put_name
#define ex_put_names vtkexodusII_ex_put_names #define ex_put_names vtkexodusII_ex_put_names
#define ex_put_n_attr vtkexodusII_ex_put_n_attr #define ex_put_n_attr vtkexodusII_ex_put_n_attr
......
/* /*
* Copyright(C) 1999-2020 National Technology & Engineering Solutions * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -36,5 +36,5 @@ int ex_get_var_param(int exoid, const char *var_type, int *num_vars) ...@@ -36,5 +36,5 @@ int ex_get_var_param(int exoid, const char *var_type, int *num_vars)
{ {
ex_entity_type obj_type; ex_entity_type obj_type;
obj_type = ex_var_type_to_ex_entity_type(*var_type); obj_type = ex_var_type_to_ex_entity_type(*var_type);
return (ex_get_variable_param(exoid, obj_type, num_vars)); return ex_get_variable_param(exoid, obj_type, num_vars);
} }
/* /*
* Copyright(C) 1999-2020 National Technology & Engineering Solutions * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -39,5 +39,5 @@ int ex_put_var_param(int exoid, const char *var_type, int num_vars) ...@@ -39,5 +39,5 @@ int ex_put_var_param(int exoid, const char *var_type, int num_vars)
{ {
ex_entity_type obj_type; ex_entity_type obj_type;
obj_type = ex_var_type_to_ex_entity_type(*var_type); obj_type = ex_var_type_to_ex_entity_type(*var_type);
return (ex_put_variable_param(exoid, obj_type, num_vars)); return ex_put_variable_param(exoid, obj_type, num_vars);
} }
/* /*
* Copyright(C) 1999-2023 National Technology & Engineering Solutions * Copyright(C) 1999-2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -47,7 +47,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -47,7 +47,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
"ERROR: Bad block type (%d) specified for all blocks file id %d", blocks[0].type, "ERROR: Bad block type (%d) specified for all blocks file id %d", blocks[0].type,
exoid); exoid);
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM); ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
return (EX_FATAL); return EX_FATAL;
} }
{ /* Output ids for this block */ { /* Output ids for this block */
...@@ -58,7 +58,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -58,7 +58,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
"array in file id %d", "array in file id %d",
exoid); exoid);
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL); ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
return (EX_FATAL); return EX_FATAL;
} }
for (size_t i = 0; i < block_count; i++) { for (size_t i = 0; i < block_count; i++) {
...@@ -70,7 +70,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -70,7 +70,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
ex_name_of_object(blocks[0].type), exoid); ex_name_of_object(blocks[0].type), exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
free(ids); free(ids);
return (EX_FATAL); return EX_FATAL;
} }
if ((status = nc_put_var_longlong(exoid, varid, ids)) != NC_NOERR) { if ((status = nc_put_var_longlong(exoid, varid, ids)) != NC_NOERR) {
...@@ -78,7 +78,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -78,7 +78,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
ex_name_of_object(blocks[0].type), exoid); ex_name_of_object(blocks[0].type), exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
free(ids); free(ids);
return (EX_FATAL); return EX_FATAL;
} }
free(ids); free(ids);
} }
...@@ -91,7 +91,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -91,7 +91,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
"array in file id %d", "array in file id %d",
exoid); exoid);
ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL); ex_err_fn(exoid, __func__, errmsg, EX_MEMFAIL);
return (EX_FATAL); return EX_FATAL;
} }
for (size_t i = 0; i < block_count; i++) { for (size_t i = 0; i < block_count; i++) {
...@@ -103,7 +103,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -103,7 +103,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
ex_name_of_object(blocks[0].type), exoid); ex_name_of_object(blocks[0].type), exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
free(stat); free(stat);
return (EX_FATAL); return EX_FATAL;
} }
if ((status = nc_put_var_int(exoid, varid, stat)) != NC_NOERR) { if ((status = nc_put_var_int(exoid, varid, stat)) != NC_NOERR) {
...@@ -111,17 +111,17 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -111,17 +111,17 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
ex_name_of_object(blocks[0].type), exoid); ex_name_of_object(blocks[0].type), exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
free(stat); free(stat);
return (EX_FATAL); return EX_FATAL;
} }
free(stat); free(stat);
} }
/* ======================================================================== */ /* ======================================================================== */
/* put netcdf file into define mode */ /* put netcdf file into define mode */
if ((status = nc_redef(exoid)) != NC_NOERR) { if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
return (EX_FATAL); return EX_FATAL;
} }
/* inquire previously defined dimensions */ /* inquire previously defined dimensions */
...@@ -348,7 +348,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -348,7 +348,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) { if ((status = exi_leavedef(exoid, __func__)) != NC_NOERR) {
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to exit define mode in file id %d", exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
return (EX_FATAL); return EX_FATAL;
} }
/* ======================================================================== */ /* ======================================================================== */
...@@ -357,7 +357,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -357,7 +357,7 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
case EX_EDGE_BLOCK: vblkids = VAR_ID_ED_BLK; break; case EX_EDGE_BLOCK: vblkids = VAR_ID_ED_BLK; break;
case EX_FACE_BLOCK: vblkids = VAR_ID_FA_BLK; break; case EX_FACE_BLOCK: vblkids = VAR_ID_FA_BLK; break;
case EX_ELEM_BLOCK: vblkids = VAR_ID_EL_BLK; break; case EX_ELEM_BLOCK: vblkids = VAR_ID_EL_BLK; break;
default: return (EX_FATAL); /* should have been handled earlier; quiet compiler here */ default: return EX_FATAL; /* should have been handled earlier; quiet compiler here */
} }
int att_name_varid = -1; int att_name_varid = -1;
...@@ -375,17 +375,17 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct ...@@ -375,17 +375,17 @@ int exi_put_homogenous_block_params(int exoid, size_t block_count, const struct
start[1] = 0; start[1] = 0;
count[1] = strlen(text) + 1; count[1] = strlen(text) + 1;
for (size_t j = 0; j < blocks[i].num_attribute; j++) { for (int64_t j = 0; j < blocks[i].num_attribute; j++) {
start[0] = j; start[0] = j;
nc_put_vara_text(exoid, att_name_varid, start, count, text); nc_put_vara_text(exoid, att_name_varid, start, count, text);
} }
} }
} }
return (EX_NOERR); return EX_NOERR;
/* Fatal error: exit definition mode and return */ /* Fatal error: exit definition mode and return */
error_ret: error_ret:
exi_leavedef(exoid, __func__); exi_leavedef(exoid, __func__);
return (EX_FATAL); return EX_FATAL;
} }
/* /*
* Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -88,7 +88,7 @@ int exi_put_nodal_var_time(int exoid, int nodal_var_index, int64_t num_nodes, in ...@@ -88,7 +88,7 @@ int exi_put_nodal_var_time(int exoid, int nodal_var_index, int64_t num_nodes, in
snprintf(errmsg, MAX_ERR_LENGTH, "Warning: could not find nodal variable %d in file id %d", snprintf(errmsg, MAX_ERR_LENGTH, "Warning: could not find nodal variable %d in file id %d",
nodal_var_index, exoid); nodal_var_index, exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
return (EX_WARN); return EX_WARN;
} }
start[0] = --beg_time_step; start[0] = --beg_time_step;
start[1] = 0; start[1] = 0;
...@@ -106,7 +106,7 @@ int exi_put_nodal_var_time(int exoid, int nodal_var_index, int64_t num_nodes, in ...@@ -106,7 +106,7 @@ int exi_put_nodal_var_time(int exoid, int nodal_var_index, int64_t num_nodes, in
if (status != NC_NOERR) { if (status != NC_NOERR) {
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store nodal variables in file id %d", exoid); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to store nodal variables in file id %d", exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
return (EX_FATAL); return EX_FATAL;
} }
return (EX_NOERR); return EX_NOERR;
} }
...@@ -123,7 +123,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t ...@@ -123,7 +123,7 @@ int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, int64_t
/* element attribute array */ /* element attribute array */
/* put netcdf file into define mode */ /* put netcdf file into define mode */
if ((status = nc_redef(exoid)) != NC_NOERR) { if ((status = exi_redef(exoid, __func__)) != NC_NOERR) {
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to place file id %d into define mode", exoid);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
EX_FUNC_LEAVE(EX_FATAL); EX_FUNC_LEAVE(EX_FATAL);
......
/* /*
* Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -57,6 +57,11 @@ int ex_close(int exoid) ...@@ -57,6 +57,11 @@ int ex_close(int exoid)
EX_FUNC_LEAVE(EX_FATAL); EX_FUNC_LEAVE(EX_FATAL);
} }
#ifndef NDEBUG
struct exi_file_item *file = exi_find_file_item(exoid);
assert(!file->in_define_mode && file->persist_define_mode == 0);
#endif
/* /*
* NOTE: If using netcdf-4, exoid must refer to the root group. * NOTE: If using netcdf-4, exoid must refer to the root group.
* Need to determine whether there are any groups and if so, * Need to determine whether there are any groups and if so,
...@@ -66,16 +71,16 @@ int ex_close(int exoid) ...@@ -66,16 +71,16 @@ int ex_close(int exoid)
/* /*
* Get exoid of root group * Get exoid of root group
*/ */
exoid &= EX_FILE_ID_MASK;
if ((status1 = nc_sync(exoid)) != NC_NOERR) { if ((status1 = nc_sync(exoid)) != NC_NOERR) {
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to update file id %d", exoid); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to update file id %d", exoid);
ex_err_fn(exoid, __func__, errmsg, status1); ex_err_fn(exoid, __func__, errmsg, status1);
} }
if ((status2 = nc_close(exoid)) != NC_NOERR) { int root_id = exoid & EX_FILE_ID_MASK;
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to close file id %d", exoid); if ((status2 = nc_close(root_id)) != NC_NOERR) {
ex_err_fn(exoid, __func__, errmsg, status2); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to close file id %d", root_id);
ex_err_fn(root_id, __func__, errmsg, status2);
} }
/* Even if we have failures above due to nc_sync() or nc_close(), we still need to clean up our /* Even if we have failures above due to nc_sync() or nc_close(), we still need to clean up our
......
...@@ -37,7 +37,7 @@ struct exi_file_item *exi_find_file_item(int exoid) ...@@ -37,7 +37,7 @@ struct exi_file_item *exi_find_file_item(int exoid)
} }
ptr = ptr->next; ptr = ptr->next;
} }
return (ptr); return ptr;
} }
#define EX__MAX_PATHLEN 8192 #define EX__MAX_PATHLEN 8192
...@@ -80,7 +80,8 @@ int exi_check_valid_file_id(int exoid, const char *func) ...@@ -80,7 +80,8 @@ int exi_check_valid_file_id(int exoid, const char *func)
} }
#if !defined BUILT_IN_SIERRA #if !defined BUILT_IN_SIERRA
else { else {
struct exi_file_item *file = exi_find_file_item(exoid); int rootid = exoid & EX_FILE_ID_MASK;
struct exi_file_item *file = exi_find_file_item(rootid);
if (!file) { if (!file) {
error = true; error = true;
...@@ -93,13 +94,14 @@ int exi_check_valid_file_id(int exoid, const char *func) ...@@ -93,13 +94,14 @@ int exi_check_valid_file_id(int exoid, const char *func)
if (old_opt & EX_ABORT) { if (old_opt & EX_ABORT) {
ex_opts(EX_VERBOSE | EX_ABORT); ex_opts(EX_VERBOSE | EX_ABORT);
} }
int rootid = exoid & EX_FILE_ID_MASK;
char errmsg[MAX_ERR_LENGTH]; char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH, snprintf(errmsg, MAX_ERR_LENGTH,
"ERROR: In \"%s\", the file id %d was not obtained via a call " "ERROR: In \"%s\", the file id %d was not obtained via a call "
"to \"ex_open\" or \"ex_create\".\n\t\tIt does not refer to a " "to \"ex_open\" or \"ex_create\".\n\t\tIt does not refer to a "
"valid open exodus file.\n\t\tAborting to avoid file " "valid open exodus file.\n\t\tAborting to avoid file "
"corruption or data loss or other potential problems.", "corruption or data loss or other potential problems.",
func, exoid); func, rootid);
ex_err(__func__, errmsg, EX_BADFILEID); ex_err(__func__, errmsg, EX_BADFILEID);
ex_opts(old_opt); ex_opts(old_opt);
return EX_FATAL; return EX_FATAL;
...@@ -231,7 +233,7 @@ int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word ...@@ -231,7 +233,7 @@ int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
EX_FUNC_LEAVE(EX_FATAL); EX_FUNC_LEAVE(EX_FATAL);
} }
new_file->file_id = exoid; new_file->file_id = (unsigned)exoid & EX_FILE_ID_MASK;
new_file->user_compute_wordsize = *comp_wordsize == 4 ? 0 : 1; new_file->user_compute_wordsize = *comp_wordsize == 4 ? 0 : 1;
new_file->int64_status = int64_status; new_file->int64_status = int64_status;
new_file->maximum_name_length = exi_default_max_name_length; new_file->maximum_name_length = exi_default_max_name_length;
...@@ -240,6 +242,7 @@ int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word ...@@ -240,6 +242,7 @@ int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
new_file->assembly_count = 0; new_file->assembly_count = 0;
new_file->blob_count = 0; new_file->blob_count = 0;
new_file->compression_level = 0; new_file->compression_level = 0;
new_file->quantize_nsd = 0;
new_file->shuffle = 0; new_file->shuffle = 0;
new_file->file_type = filetype - 1; new_file->file_type = filetype - 1;
new_file->is_parallel = is_parallel; new_file->is_parallel = is_parallel;
...@@ -249,6 +252,8 @@ int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word ...@@ -249,6 +252,8 @@ int exi_conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_word
new_file->has_edges = 1; new_file->has_edges = 1;
new_file->has_faces = 1; new_file->has_faces = 1;
new_file->has_elems = 1; new_file->has_elems = 1;
new_file->in_define_mode = 0;
new_file->persist_define_mode = 0;
new_file->is_write = is_write; new_file->is_write = is_write;
new_file->next = file_list; new_file->next = file_list;
...@@ -282,9 +287,11 @@ void exi_conv_exit(int exoid) ...@@ -282,9 +287,11 @@ void exi_conv_exit(int exoid)
struct exi_file_item *file = file_list; struct exi_file_item *file = file_list;
struct exi_file_item *prev = NULL; struct exi_file_item *prev = NULL;
int root_id = (unsigned)exoid & EX_FILE_ID_MASK;
EX_FUNC_ENTER(); EX_FUNC_ENTER();
while (file) { while (file) {
if (file->file_id == exoid) { if (file->file_id == root_id) {
break; break;
} }
...@@ -441,19 +448,76 @@ int ex_set_option(int exoid, ex_option_type option, int option_value) ...@@ -441,19 +448,76 @@ int ex_set_option(int exoid, ex_option_type option, int option_value)
char errmsg[MAX_ERR_LENGTH]; char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH, snprintf(errmsg, MAX_ERR_LENGTH,
"ERROR: invalid value %d for SZIP Compression. Must be even and 4 <= value <= " "ERROR: invalid value %d for SZIP Compression. Must be even and 4 <= value <= "
"32. Ignoring.", "32. Setting value to 4.",
value);
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
value = 4;
}
}
else if (file->compression_algorithm == EX_COMPRESS_ZSTD) {
#if NC_HAS_ZSTD == 1
if (value < -131072 || value > 22) {
char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH,
"ERROR: invalid value %d for ZSTD Compression. Must be between -131072 and 22. "
"Setting value to 4",
value); value);
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM); ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
EX_FUNC_LEAVE(EX_FATAL); value = 4;
} }
#else
char errmsg[MAX_ERR_LENGTH];
snprintf(
errmsg, MAX_ERR_LENGTH,
"ERROR: Zstandard compression is not supported in this version of netCDF library.");
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
#endif
}
else if (file->compression_algorithm == EX_COMPRESS_BZ2) {
#if NC_HAS_BZ2 == 1
if (value < 0 || value > 9) {
char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH,
"ERROR: invalid value %d for BZIP2 Compression. Must be between 0 and 9 "
"inclusive. Setting value to 1.",
value);
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
value = 1;
}
#else
char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH,
"ERROR: Bzip2 compression is not supported in this version of netCDF library.");
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
#endif
} }
file->compression_level = value; file->compression_level = value;
assert(value == file->compression_level);
} }
else { else {
file->compression_level = 0; file->compression_level = 0;
} }
break; break;
case EX_OPT_QUANTIZE_NSD:
#if NC_HAS_QUANTIZE == 1
if (option_value > 15) {
char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH,
"ERROR: invalid value %d for Quantize NSD. Must be less than or equal to 15. "
"Setting value to 15.",
option_value);
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
option_value = 15;
}
file->quantize_nsd = option_value;
#else
{
char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH,
"ERROR: Quanitzation is not supported in this version of netCDF library.");
ex_err_fn(exoid, __func__, errmsg, EX_BADPARAM);
}
#endif
break;
case EX_OPT_COMPRESSION_SHUFFLE: /* 0 (disabled); 1 (enabled) */ case EX_OPT_COMPRESSION_SHUFFLE: /* 0 (disabled); 1 (enabled) */
file->shuffle = option_value != 0 ? 1 : 0; file->shuffle = option_value != 0 ? 1 : 0;
break; break;
...@@ -486,10 +550,10 @@ int exi_comp_ws(int exoid) ...@@ -486,10 +550,10 @@ int exi_comp_ws(int exoid)
char errmsg[MAX_ERR_LENGTH]; char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d", exoid); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: unknown file id %d", exoid);
ex_err(__func__, errmsg, EX_BADFILEID); ex_err(__func__, errmsg, EX_BADFILEID);
return (EX_FATAL); return EX_FATAL;
} }
/* Stored as 0 for 4-byte; 1 for 8-byte */ /* Stored as 0 for 4-byte; 1 for 8-byte */
return ((file->user_compute_wordsize + 1) * 4); return (file->user_compute_wordsize + 1) * 4;
} }
/*! /*!
......
/* /*
* Copyright(C) 1999-2023 National Technology & Engineering Solutions * Copyright(C) 1999-2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#define EXCHECKI(funcall) \ #define EXCHECKI(funcall) \
if ((funcall) != NC_NOERR) { \ if ((funcall) != NC_NOERR) { \
fprintf(stderr, "Error calling %s\n", TOSTRING(funcall)); \ fprintf(stderr, "Error calling %s\n", TOSTRING(funcall)); \
return (EX_FATAL); \ return EX_FATAL; \
} }
#define EXCHECKF(funcall) \ #define EXCHECKF(funcall) \
...@@ -66,7 +66,7 @@ static int is_truth_table_variable(const char *var_name) ...@@ -66,7 +66,7 @@ static int is_truth_table_variable(const char *var_name)
/* If copying just the "mesh" or "non-transient" portion of the /* If copying just the "mesh" or "non-transient" portion of the
* input DB, these are the variables that won't be copied: * input DB, these are the variables that won't be copied:
*/ */
return (strstr(var_name, "_var_tab") != NULL); return strstr(var_name, "_var_tab") != NULL;
} }
static int is_non_mesh_variable(const char *var_name) static int is_non_mesh_variable(const char *var_name)
...@@ -108,7 +108,7 @@ static int ex_copy_internal(int in_exoid, int out_exoid, int mesh_only) ...@@ -108,7 +108,7 @@ static int ex_copy_internal(int in_exoid, int out_exoid, int mesh_only)
} }
/* put output file into define mode */ /* put output file into define mode */
EXCHECK(nc_redef(out_exoid)); EXCHECK(exi_redef(out_exoid, __func__));
/* copy global attributes */ /* copy global attributes */
EXCHECK(cpy_global_att(in_exoid, out_exoid)); EXCHECK(cpy_global_att(in_exoid, out_exoid));
...@@ -176,6 +176,7 @@ int ex_copy_transient(int in_exoid, int out_exoid) ...@@ -176,6 +176,7 @@ int ex_copy_transient(int in_exoid, int out_exoid)
static int cpy_variable_data(int in_exoid, int out_exoid, int in_large, int mesh_only) static int cpy_variable_data(int in_exoid, int out_exoid, int in_large, int mesh_only)
{ {
int nvars; /* number of variables */ int nvars; /* number of variables */
/* NOTE: This is incorrect for files containing groups */
EXCHECKI(nc_inq(in_exoid, NULL, &nvars, NULL, NULL)); EXCHECKI(nc_inq(in_exoid, NULL, &nvars, NULL, NULL));
for (int varid = 0; varid < nvars; varid++) { for (int varid = 0; varid < nvars; varid++) {
bool is_filtered; bool is_filtered;
...@@ -216,6 +217,7 @@ static int cpy_variables(int in_exoid, int out_exoid, int in_large, int mesh_onl ...@@ -216,6 +217,7 @@ static int cpy_variables(int in_exoid, int out_exoid, int in_large, int mesh_onl
{ {
int recdimid; /* id of unlimited dimension */ int recdimid; /* id of unlimited dimension */
int nvars; /* number of variables */ int nvars; /* number of variables */
/* NOTE: This is incorrect for files containing groups */
EXCHECKI(nc_inq(in_exoid, NULL, &nvars, NULL, &recdimid)); EXCHECKI(nc_inq(in_exoid, NULL, &nvars, NULL, &recdimid));
for (int varid = 0; varid < nvars; varid++) { for (int varid = 0; varid < nvars; varid++) {
struct ncvar var; /* variable */ struct ncvar var; /* variable */
...@@ -259,10 +261,11 @@ static int cpy_dimension(int in_exoid, int out_exoid, int mesh_only) ...@@ -259,10 +261,11 @@ static int cpy_dimension(int in_exoid, int out_exoid, int mesh_only)
int ndims; /* number of dimensions */ int ndims; /* number of dimensions */
int recdimid; /* id of unlimited dimension */ int recdimid; /* id of unlimited dimension */
/* NOTE: This is incorrect for files containing groups */
EXCHECKI(nc_inq(in_exoid, &ndims, NULL, NULL, &recdimid)); EXCHECKI(nc_inq(in_exoid, &ndims, NULL, NULL, &recdimid));
for (int dimid = 0; dimid < ndims; dimid++) { for (int dimid = 0; dimid < ndims; dimid++) {
char dim_nm[NC_MAX_NAME + 1]; char dim_nm[EX_MAX_NAME + 1];
size_t dim_sz; size_t dim_sz;
EXCHECK(nc_inq_dim(in_exoid, dimid, dim_nm, &dim_sz)); EXCHECK(nc_inq_dim(in_exoid, dimid, dim_nm, &dim_sz));
...@@ -344,6 +347,7 @@ static int cpy_global_att(int in_exoid, int out_exoid) ...@@ -344,6 +347,7 @@ static int cpy_global_att(int in_exoid, int out_exoid)
struct ncatt att; /* attribute */ struct ncatt att; /* attribute */
int ngatts; int ngatts;
/* NOTE: This is incorrect for files containing groups */
EXCHECKI(nc_inq(in_exoid, NULL, NULL, &ngatts, NULL)); EXCHECKI(nc_inq(in_exoid, NULL, NULL, &ngatts, NULL));
/* copy global attributes */ /* copy global attributes */
...@@ -413,7 +417,7 @@ static int cpy_att(int in_id, int out_id, int var_in_id, int var_out_id) ...@@ -413,7 +417,7 @@ static int cpy_att(int in_id, int out_id, int var_in_id, int var_out_id)
nc_copy_att(in_id, var_in_id, att_nm, out_id, var_out_id); nc_copy_att(in_id, var_in_id, att_nm, out_id, var_out_id);
} }
return (EX_NOERR); return EX_NOERR;
} }
/*! \endcond */ /*! \endcond */
...@@ -510,7 +514,7 @@ static int cpy_var_def(int in_id, int out_id, int rec_dim_id, char *var_nm) ...@@ -510,7 +514,7 @@ static int cpy_var_def(int in_id, int out_id, int rec_dim_id, char *var_nm)
/* Get the dimension sizes and names */ /* Get the dimension sizes and names */
int dim_out_id[NC_MAX_VAR_DIMS]; int dim_out_id[NC_MAX_VAR_DIMS];
for (int idx = 0; idx < nbr_dim; idx++) { for (int idx = 0; idx < nbr_dim; idx++) {
char dim_nm[NC_MAX_NAME + 1]; char dim_nm[EX_MAX_NAME + 1];
size_t dim_sz; size_t dim_sz;
EXCHECKI(nc_inq_dim(in_id, dim_in_id[idx], dim_nm, &dim_sz)); EXCHECKI(nc_inq_dim(in_id, dim_in_id[idx], dim_nm, &dim_sz));
...@@ -718,11 +722,11 @@ static int cpy_var_val(int in_id, int out_id, char *var_nm) ...@@ -718,11 +722,11 @@ static int cpy_var_val(int in_id, int out_id, char *var_nm)
/* Free the space that held the variable */ /* Free the space that held the variable */
free(void_ptr); free(void_ptr);
return (EX_NOERR); return EX_NOERR;
err_ret: err_ret:
free(void_ptr); free(void_ptr);
return (EX_FATAL); return EX_FATAL;
} /* end cpy_var_val() */ } /* end cpy_var_val() */
...@@ -789,7 +793,7 @@ static int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large) ...@@ -789,7 +793,7 @@ static int cpy_coord_val(int in_id, int out_id, char *var_nm, int in_large)
/* Free the space that held the variable */ /* Free the space that held the variable */
free(void_ptr); free(void_ptr);
return (EX_NOERR); return EX_NOERR;
} /* end cpy_coord_val() */ } /* end cpy_coord_val() */
......
/* /*
* Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions * Copyright(C) 1999-2020, 2022, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -26,7 +26,7 @@ int ex_create_group(int parent_id, const char *group_name) ...@@ -26,7 +26,7 @@ int ex_create_group(int parent_id, const char *group_name)
EX_FUNC_LEAVE(EX_FATAL); EX_FUNC_LEAVE(EX_FATAL);
} }
if ((status = nc_redef(parent_id)) != NC_NOERR) { if ((status = exi_redef(parent_id, __func__)) != NC_NOERR) {
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", parent_id); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to put file id %d into define mode", parent_id);
ex_err_fn(exoid, __func__, errmsg, status); ex_err_fn(exoid, __func__, errmsg, status);
EX_FUNC_LEAVE(EX_FATAL); EX_FUNC_LEAVE(EX_FATAL);
......
...@@ -192,15 +192,31 @@ int ex_create_par_int(const char *path, int cmode, int *comp_ws, int *io_ws, MPI ...@@ -192,15 +192,31 @@ int ex_create_par_int(const char *path, int cmode, int *comp_ws, int *io_ws, MPI
} }
#endif #endif
#if NC_HAS_PNETCDF
bool i_created_info = false;
if (info == MPI_INFO_NULL) {
MPI_Info_create(&info);
i_created_info = true;
}
MPI_Info_set(info, "nc_header_align_size", "1048576");
#endif
/* There is an issue on some versions of mpi that limit the length of the path to <250 characters /* There is an issue on some versions of mpi that limit the length of the path to <250 characters
* Check for that here and use `path` if `canon_path` is >=250 characters... * Check for that here and use `path` if `canon_path` is >=250 characters...
*/ */
if (strlen(canon_path) >= 250) { if (strlen(canon_path) >= 250) {
status = nc_create_par(path, nc_mode, comm, info, &exoid); status = nc_create_par(path, nc_mode, comm, info, &exoid);
} }
else { else {
status = nc_create_par(canon_path, nc_mode, comm, info, &exoid); status = nc_create_par(canon_path, nc_mode, comm, info, &exoid);
} }
#if NC_HAS_PNETCDF
if (i_created_info) {
MPI_Info_free(&info);
}
#endif
if (status != NC_NOERR) { if (status != NC_NOERR) {
if (my_mode & EX_NETCDF4) { if (my_mode & EX_NETCDF4) {
#if NC_HAS_PARALLEL4 #if NC_HAS_PARALLEL4
......
/* /*
* Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -171,7 +171,6 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -171,7 +171,6 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
void_int *side_sets_elem_list, void_int *side_sets_node_list, void_int *side_sets_elem_list, void_int *side_sets_node_list,
void_int *side_sets_side_list) void_int *side_sets_side_list)
{ {
size_t i, j, k, n;
int num_side_sets, num_elem_blks; int num_side_sets, num_elem_blks;
int64_t tot_num_elem = 0, tot_num_ss_elem = 0, elem_num = 0, ndim; int64_t tot_num_elem = 0, tot_num_ss_elem = 0, elem_num = 0, ndim;
void_int *elem_blk_ids = NULL; void_int *elem_blk_ids = NULL;
...@@ -179,7 +178,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -179,7 +178,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
void_int *ss_elem_ndx = NULL; void_int *ss_elem_ndx = NULL;
void_int *ss_elem_node_ndx = NULL; void_int *ss_elem_node_ndx = NULL;
void_int *ss_parm_ndx = NULL; void_int *ss_parm_ndx = NULL;
size_t elem_ctr, node_ctr, elem_num_pos; int64_t elem_ctr, node_ctr, elem_num_pos;
int num_nodes_per_elem, num_node_per_side; int num_nodes_per_elem, num_node_per_side;
int *same_elem_type = NULL; int *same_elem_type = NULL;
...@@ -255,12 +254,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -255,12 +254,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
/* First count up # of elements in the side sets*/ /* First count up # of elements in the side sets*/
if (ints_64) { if (ints_64) {
for (i = 0; i < num_side_sets; i++) { for (int i = 0; i < num_side_sets; i++) {
tot_num_ss_elem += ((int64_t *)num_elem_per_set)[i]; tot_num_ss_elem += ((int64_t *)num_elem_per_set)[i];
} }
} }
else { else {
for (i = 0; i < num_side_sets; i++) { for (int i = 0; i < num_side_sets; i++) {
tot_num_ss_elem += ((int *)num_elem_per_set)[i]; tot_num_ss_elem += ((int *)num_elem_per_set)[i];
} }
} }
...@@ -279,7 +278,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -279,7 +278,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
if (int_size == sizeof(int64_t)) { if (int_size == sizeof(int64_t)) {
/* Sort side set element list into index array - non-destructive */ /* Sort side set element list into index array - non-destructive */
int64_t *elems = (int64_t *)ss_elem_ndx; int64_t *elems = (int64_t *)ss_elem_ndx;
for (i = 0; i < tot_num_ss_elem; i++) { for (int i = 0; i < tot_num_ss_elem; i++) {
elems[i] = i; /* init index array to current position */ elems[i] = i; /* init index array to current position */
} }
exi_iqsort64(side_sets_elem_list, elems, tot_num_ss_elem); exi_iqsort64(side_sets_elem_list, elems, tot_num_ss_elem);
...@@ -287,7 +286,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -287,7 +286,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
else { else {
/* Sort side set element list into index array - non-destructive */ /* Sort side set element list into index array - non-destructive */
int *elems = (int *)ss_elem_ndx; int *elems = (int *)ss_elem_ndx;
for (i = 0; i < tot_num_ss_elem; i++) { for (int i = 0; i < tot_num_ss_elem; i++) {
elems[i] = i; /* init index array to current position */ elems[i] = i; /* init index array to current position */
} }
exi_iqsort(side_sets_elem_list, elems, tot_num_ss_elem); exi_iqsort(side_sets_elem_list, elems, tot_num_ss_elem);
...@@ -325,7 +324,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -325,7 +324,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
goto cleanup; goto cleanup;
} }
elem_ctr = 0; elem_ctr = 0;
for (i = 0; i < num_elem_blks; i++) { for (int i = 0; i < num_elem_blks; i++) {
ex_entity_id id; ex_entity_id id;
if (ints_64) { if (ints_64) {
id = ((int64_t *)elem_blk_ids)[i]; id = ((int64_t *)elem_blk_ids)[i];
...@@ -383,9 +382,10 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -383,9 +382,10 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
same_elem_type[0] = true; same_elem_type[0] = true;
if (ints_64) { if (ints_64) {
elem_ctr = ((int64_t *)num_elem_per_set)[0]; elem_ctr = ((int64_t *)num_elem_per_set)[0];
for (i = 0, k = 0; i < tot_num_ss_elem; i++) { for (int64_t i = 0, k = 0; i < tot_num_ss_elem; i++) {
int64_t elem = ((int64_t *)side_sets_elem_list)[i]; int64_t elem = ((int64_t *)side_sets_elem_list)[i];
for (j = 0; j < num_elem_blks; j++) { int j = 0;
for (; j < num_elem_blks; j++) {
if (elem <= elem_blk_parms[j].elem_ctr) { if (elem <= elem_blk_parms[j].elem_ctr) {
break; break;
} }
...@@ -420,10 +420,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -420,10 +420,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
*/ */
node_ctr = 0; node_ctr = 0;
elem_ctr = ((int64_t *)num_elem_per_set)[0]; elem_ctr = ((int64_t *)num_elem_per_set)[0];
for (i = 0, k = 0; i < tot_num_ss_elem; i++) { int i = 0;
for (int k = 0; i < tot_num_ss_elem; i++) {
int64_t elem = ((int64_t *)side_sets_elem_list)[i]; int64_t elem = ((int64_t *)side_sets_elem_list)[i];
for (j = 0; j < num_elem_blks; j++) { int j = 0;
for (; j < num_elem_blks; j++) {
if (elem <= elem_blk_parms[j].elem_ctr) { if (elem <= elem_blk_parms[j].elem_ctr) {
break; break;
} }
...@@ -460,10 +462,11 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -460,10 +462,11 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
} }
else { else {
elem_ctr = ((int *)num_elem_per_set)[0]; elem_ctr = ((int *)num_elem_per_set)[0];
for (i = 0, k = 0; i < tot_num_ss_elem; i++) { for (int i = 0, k = 0; i < tot_num_ss_elem; i++) {
int elem = ((int *)side_sets_elem_list)[i]; int elem = ((int *)side_sets_elem_list)[i];
for (j = 0; j < num_elem_blks; j++) { int j = 0;
for (; j < num_elem_blks; j++) {
if (elem <= elem_blk_parms[j].elem_ctr) { if (elem <= elem_blk_parms[j].elem_ctr) {
break; break;
} }
...@@ -498,10 +501,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -498,10 +501,12 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
*/ */
node_ctr = 0; node_ctr = 0;
elem_ctr = ((int *)num_elem_per_set)[0]; elem_ctr = ((int *)num_elem_per_set)[0];
for (i = 0, k = 0; i < tot_num_ss_elem; i++) { int i = 0;
for (int k = 0; i < tot_num_ss_elem; i++) {
int elem = ((int *)side_sets_elem_list)[i]; int elem = ((int *)side_sets_elem_list)[i];
for (j = 0; j < num_elem_blks; j++) { int j = 0;
for (; j < num_elem_blks; j++) {
if (elem <= elem_blk_parms[j].elem_ctr) { if (elem <= elem_blk_parms[j].elem_ctr) {
break; break;
} }
...@@ -541,7 +546,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -541,7 +546,7 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
elem_ctr = 0; elem_ctr = 0;
for (j = 0; j < tot_num_ss_elem; j++) { for (int j = 0; j < tot_num_ss_elem; j++) {
int64_t elem; int64_t elem;
int64_t idx; int64_t idx;
int64_t ss_node0, ss_node1; int64_t ss_node0, ss_node1;
...@@ -617,7 +622,8 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n ...@@ -617,7 +622,8 @@ int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, void_int *num_n
num_nodes_per_elem = elem_blk_parms[p_ndx].num_nodes_per_elem; num_nodes_per_elem = elem_blk_parms[p_ndx].num_nodes_per_elem;
for (n = 0; n < num_nodes_per_elem; n++) { int n = 0;
for (; n < num_nodes_per_elem; n++) {
/* find node in connectivity array that matches first node in side set */ /* find node in connectivity array that matches first node in side set */
if (((int_size == sizeof(int64_t)) && if (((int_size == sizeof(int64_t)) &&
(ss_node0 == ((int64_t *)connect)[num_nodes_per_elem * (elem_num_pos) + n])) || (ss_node0 == ((int64_t *)connect)[num_nodes_per_elem * (elem_num_pos) + n])) ||
......
/* /*
* Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions * Copyright(C) 1999-2025 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -225,6 +225,7 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_ ...@@ -225,6 +225,7 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_
fprintf(stderr, " exerrval = %d\n", EX_ERR_NUM); fprintf(stderr, " exerrval = %d\n", EX_ERR_NUM);
fprintf(stderr, "\t%s\n", ex_strerror(EX_ERR_NUM)); fprintf(stderr, "\t%s\n", ex_strerror(EX_ERR_NUM));
fflush(stderr);
EX_FUNC_VOID(); EX_FUNC_VOID();
} }
...@@ -239,6 +240,7 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_ ...@@ -239,6 +240,7 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_
if (err_num == EX_NULLENTITY) { if (err_num == EX_NULLENTITY) {
if (exoptval & EX_NULLVERBOSE) { if (exoptval & EX_NULLVERBOSE) {
fprintf(stderr, "\nExodus Library Warning: [%s]\n\t%s\n", module_name, message); fprintf(stderr, "\nExodus Library Warning: [%s]\n\t%s\n", module_name, message);
fflush(stderr);
} }
} }
...@@ -262,8 +264,8 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_ ...@@ -262,8 +264,8 @@ void ex_err_fn(int exoid, const char *module_name, const char *message, int err_
fprintf(stderr, "\nExodus Library Warning/Error: [%s]\n\t%s\n", module_name, message); fprintf(stderr, "\nExodus Library Warning/Error: [%s]\n\t%s\n", module_name, message);
} }
fprintf(stderr, "\t%s\n", ex_strerror(err_num)); fprintf(stderr, "\t%s\n", ex_strerror(err_num));
fflush(stderr);
} }
fflush(stderr);
/* with netCDF 3.4, (fatal) system error codes are > 0; /* with netCDF 3.4, (fatal) system error codes are > 0;
so all EXODUS fatal error codes are > 0 */ so all EXODUS fatal error codes are > 0 */
...@@ -333,7 +335,8 @@ const char *ex_strerror(int err_num) ...@@ -333,7 +335,8 @@ const char *ex_strerror(int err_num)
case EX_MEMFAIL: return "Memory allocation failure"; case EX_MEMFAIL: return "Memory allocation failure";
case EX_BADFILEMODE: return "Bad file mode -- cannot specify both EX_READ and EX_WRITE"; case EX_BADFILEMODE: return "Bad file mode -- cannot specify both EX_READ and EX_WRITE";
case EX_BADFILEID: return "Bad file id. Could not find exodus file associated with file id."; case EX_BADFILEID: return "Bad file id. Could not find exodus file associated with file id.";
case EX_WRONGFILETYPE: return "Integer sizes must match for input and output file in ex_copy."; case EX_WRONGFILETYPE:
return "File does not exist or is not of a supported type (netcdf3, netcdf4, netcdf5).";
case EX_LOOKUPFAIL: case EX_LOOKUPFAIL:
return "Id lookup failed for specified entity type. Could not find entity with specified id."; return "Id lookup failed for specified entity type. Could not find entity with specified id.";
case EX_BADFILENAME: return "Empty or null filename specified."; case EX_BADFILENAME: return "Empty or null filename specified.";
...@@ -344,6 +347,8 @@ const char *ex_strerror(int err_num) ...@@ -344,6 +347,8 @@ const char *ex_strerror(int err_num)
case EX_INTERNAL: return "Internal logic error in exodus library."; case EX_INTERNAL: return "Internal logic error in exodus library.";
case EX_NOTROOTID: return "File id is not the root id; it is a subgroup id."; case EX_NOTROOTID: return "File id is not the root id; it is a subgroup id.";
case EX_NULLENTITY: return "Null entity found."; case EX_NULLENTITY: return "Null entity found.";
case EX_NOTFOUND: return "Could not find requested variable on database.";
case EX_INTSIZEMISMATCH: return "Integer sizes must match for input and output file in ex_copy.";
case EX_MSG: return "Message printed; no error implied."; case EX_MSG: return "Message printed; no error implied.";
default: return nc_strerror(err_num); default: return nc_strerror(err_num);
} }
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include "exodusII.h" // for ex_err, etc #include "exodusII.h" // for ex_err, etc
#include "exodusII_int.h" // for EX_FATAL, etc #include "exodusII_int.h" // for EX_FATAL, etc
#include <assert.h> #include <assert.h>
#include <math.h>
#define _GNU_SOURCE #define _GNU_SOURCE
#include <string.h> #include <string.h>
...@@ -43,19 +42,25 @@ static size_t my_strlcat(char *dst, const char *src, size_t maxlen) ...@@ -43,19 +42,25 @@ static size_t my_strlcat(char *dst, const char *src, size_t maxlen)
return dstlen + srclen; return dstlen + srclen;
} }
static int number_width(const size_t number) static int number_width(size_t number)
{ {
/* Could use `(int)floor(log10(number)) + 1`, but that requires math library... */
if (number == 0) { if (number == 0) {
return 1; return 1;
} }
int width = (int)floor(log10(number)) + 1; int count = 0;
return width; // Iterate till n has digits remaining
while (number != 0) {
number /= 10;
++count;
}
return count;
} }
static void verify_valid_component(int component, size_t cardinality, size_t suffix_size) static void verify_valid_component(int component, size_t cardinality, size_t suffix_size)
{ {
assert(cardinality == suffix_size); assert(cardinality == suffix_size);
assert(component - 1 < suffix_size); assert(component - 1 < (int)suffix_size);
} }
const char *ex_component_field_name(ex_field *field, int component[EX_MAX_FIELD_NESTING]) const char *ex_component_field_name(ex_field *field, int component[EX_MAX_FIELD_NESTING])
...@@ -71,7 +76,7 @@ const char *ex_component_field_name(ex_field *field, int component[EX_MAX_FIELD_ ...@@ -71,7 +76,7 @@ const char *ex_component_field_name(ex_field *field, int component[EX_MAX_FIELD_
} }
// Build up name incrementally which makes it easier to handle an empty component_separator... // Build up name incrementally which makes it easier to handle an empty component_separator...
sprintf(field_name, "%s", field->name); snprintf(field_name, EX_MAX_NAME + 1, "%s", field->name);
for (int i = 0; i < field->nesting; i++) { for (int i = 0; i < field->nesting; i++) {
if (field->component_separator[i]) { if (field->component_separator[i]) {
...@@ -327,8 +332,8 @@ const char *ex_field_component_suffix(ex_field *field, int nest_level, int compo ...@@ -327,8 +332,8 @@ const char *ex_field_component_suffix(ex_field *field, int nest_level, int compo
static char user_suffix[32]; static char user_suffix[32];
static char format[8]; static char format[8];
int width = number_width(field->cardinality[nest_level]); int width = number_width(field->cardinality[nest_level]);
sprintf(format, "%c%d%dd", '%', 0, width); snprintf(format, 8, "%c%d%dd", '%', 0, width);
sprintf(user_suffix, format, component); snprintf(user_suffix, 32, format, component);
return user_suffix; return user_suffix;
} }
...@@ -338,8 +343,8 @@ const char *ex_field_component_suffix(ex_field *field, int nest_level, int compo ...@@ -338,8 +343,8 @@ const char *ex_field_component_suffix(ex_field *field, int nest_level, int compo
static char user_suffix[32]; static char user_suffix[32];
static char format[8]; static char format[8];
int width = number_width(field->cardinality[nest_level]); int width = number_width(field->cardinality[nest_level]);
sprintf(format, "%c%d%dd", '%', 0, width); snprintf(format, 8, "%c%d%dd", '%', 0, width);
sprintf(user_suffix, format, component - 1); snprintf(user_suffix, 32, format, component - 1);
return user_suffix; return user_suffix;
} }
......
/* /*
* Copyright(C) 1999-2022 National Technology & Engineering Solutions * Copyright(C) 1999-2022, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -26,7 +26,7 @@ int ex_get_assemblies(int exoid, ex_assembly *assembly) ...@@ -26,7 +26,7 @@ int ex_get_assemblies(int exoid, ex_assembly *assembly)
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to inquire ASSEMBLY count in file id %d", snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to inquire ASSEMBLY count in file id %d",
exoid); exoid);
ex_err_fn(exoid, __func__, errmsg, num_assembly); ex_err_fn(exoid, __func__, errmsg, num_assembly);
return (EX_FATAL); return EX_FATAL;
} }
if (ex_int64_status(exoid) & EX_IDS_INT64_API) { if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
......
...@@ -113,7 +113,7 @@ int ex_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id) ...@@ -113,7 +113,7 @@ int ex_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id)
/* Get names of each attribute and see if it is an 'internal' name */ /* Get names of each attribute and see if it is an 'internal' name */
int count = att_count; int count = att_count;
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
char name[NC_MAX_NAME + 1]; char name[EX_MAX_NAME + 1];
int status; int status;
if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) { if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) {
char errmsg[MAX_ERR_LENGTH]; char errmsg[MAX_ERR_LENGTH];
...@@ -162,7 +162,7 @@ int ex_get_attribute_param(int exoid, ex_entity_type obj_type, ex_entity_id id, ...@@ -162,7 +162,7 @@ int ex_get_attribute_param(int exoid, ex_entity_type obj_type, ex_entity_id id,
*/ */
count = 0; count = 0;
for (int i = 0; i < att_count; i++) { for (int i = 0; i < att_count; i++) {
char name[NC_MAX_NAME + 1]; char name[EX_MAX_NAME + 1];
int status; int status;
if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) { if ((status = nc_inq_attname(exoid, varid, i, name)) != NC_NOERR) {
snprintf(errmsg, MAX_ERR_LENGTH, snprintf(errmsg, MAX_ERR_LENGTH,
......
/* /*
* Copyright(C) 1999-2020 National Technology & Engineering Solutions * Copyright(C) 1999-2020, 2024 National Technology & Engineering Solutions
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
* NTESS, the U.S. Government retains certain rights in this software. * NTESS, the U.S. Government retains certain rights in this software.
* *
...@@ -23,7 +23,7 @@ int ex_get_blobs(int exoid, ex_blob *blob) ...@@ -23,7 +23,7 @@ int ex_get_blobs(int exoid, ex_blob *blob)
char errmsg[MAX_ERR_LENGTH]; char errmsg[MAX_ERR_LENGTH];
snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to inquire BLOB count in file id %d", exoid); snprintf(errmsg, MAX_ERR_LENGTH, "ERROR: failed to inquire BLOB count in file id %d", exoid);
ex_err_fn(exoid, __func__, errmsg, num_blob); ex_err_fn(exoid, __func__, errmsg, num_blob);
return (EX_FATAL); return EX_FATAL;
} }
if (ex_int64_status(exoid) & EX_IDS_INT64_API) { if (ex_int64_status(exoid) & EX_IDS_INT64_API) {
......