Blå Biomasse
Blå Biomasse A/S iværksætter tiltag, hvor naturen selv, i form af fx muslinger, tang og ålegræs, kan fungere som effektive virkemidler til naturgenopretning i de danske farvande samt sikre øget biodiversitet.
Blå Biomasse A/S blev etableret i 2016 i samarbejde mellem Hedeselskabet og Thyborøn Invest A/S.
Naturgenopretning i de danske farvande
Vi arbejder fokuseret på at undersøge muligheder for og iværksætte tiltag, hvor naturen selv, i form af fx muslinger, kan fungere som effektive virkemidler til naturgenopretning i de danske farvande samt sikre øget biodiversitet.
Blå Biomasse arbejder bl.a. med udvikling af en højeffektiv og ansvarlig produktion af muslinger i Limfjorden baseret på naturens produktionspotentiale. Blåmuslinger udfylder to vigtige roller helt naturligt: De fungerer som filter i vores indre farvande, der kan rense op i overskuddet af næringsstoffer, der har ophobet sig gennem årtier – og som kilde til proteinrige fødevarer og til foder.
Error executing template "/Designs/Swift/Grid/Page/RowTemplates/Dalgas_Quote.cshtml" System.IO.IOException: There is not enough space on the disk. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count) at System.IO.FileStream.FlushWrite(Boolean calledFromFinalizer) at System.IO.FileStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.IO.StreamWriter.Dispose(Boolean disposing) at System.IO.TextWriter.Dispose() at System.IO.File.InternalWriteAllText(String path, String contents, Encoding encoding, Boolean checkHost) at RazorEngine.Roslyn.CSharp.RoslynCompilerServiceBase.CompileType(TypeContext context) at RazorEngine.Templating.RazorEngineCore.CreateTemplateType(ITemplateSource razorTemplate, Type modelType) at RazorEngine.Templating.RazorEngineCore.Compile(ITemplateKey key, Type modelType) at RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey key, Type modelType) at RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey key, Type modelType, Boolean compileOnCacheMiss) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using System 2 @using System.Collections.Generic 3 @using System.Linq 4 @using Dynamicweb.Content 5 @using Dynamicweb.Frontend 6 @using Dalgas.Custom.Services 7 @using Dalgas.Custom.ViewModels.UI 8 @using Dynamicweb.Core.Json 9 @using Dynamicweb.Ecommerce.ProductCatalog 10 @using Dynamicweb.Indexing.Querying 11 @using Dynamicweb.Indexing.Querying.Faceting 12 @using Dynamicweb.Indexing.Querying.Sorting 13 @using Dynamicweb.Modules 14 @using ParagraphService = Dalgas.Custom.Services.ParagraphService 15 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.GridRowViewModel> 16 17 @using System 18 @using System.Collections.Generic 19 @using System.Linq 20 @using Dalgas.Custom.ViewModels.UI 21 @using Dynamicweb.Content 22 @using Dynamicweb.Ecommerce.ProductCatalog 23 @using Dynamicweb.Frontend 24 @using ParagraphService = Dalgas.Custom.Services.ParagraphService 25 26 @*TODO: Move these functions onto the model *@ 27 28 @functions 29 { 30 31 public string GetSectionClassList(GridRowViewModel model, string overwriteTheme = "") 32 { 33 var returnValues = new List<string> 34 { 35 $"item_{model.Item.SystemName.ToLower()}" 36 }; 37 38 if (Services.Grids.GetGridRowById(model.Id).Sort == 1) 39 { 40 returnValues.Add("dalgas-section-first-on-page"); 41 } 42 43 var sectionBackgroundTheme = model.Item.GetItem("ColorScheme")?.GetString("ColorScheme") ?? string.Empty; 44 45 if (!string.IsNullOrEmpty(overwriteTheme)) 46 { 47 sectionBackgroundTheme = overwriteTheme; 48 } 49 50 // Add theme class if it exists 51 if (!string.IsNullOrWhiteSpace(sectionBackgroundTheme)) 52 { 53 if (sectionBackgroundTheme.Contains("default")) 54 { 55 returnValues.Add("theme theme-light"); 56 } 57 else 58 { 59 returnValues.Add($"theme {sectionBackgroundTheme.Replace(" ", "").Trim().ToLower()}"); 60 } 61 } 62 63 // Determine if top padding should be removed 64 65 string removeTopPadding = model.Item.GetItem("ColorScheme")?.GetString("RemoveTopPadding"); 66 67 returnValues.Add("pb-6"); 68 if (removeTopPadding != "enable") 69 { 70 returnValues.Add("pt-6"); 71 } 72 73 return string.Join(" ", returnValues); 74 } 75 76 } 77 78 79 @{ 80 IEnumerable<HeadingViewModel> headings = ParagraphService.Instance.GetHeadingsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Headings")); 81 string text = Model.Item.GetItem("Paragraph_Text")?.GetString("Text"); 82 string lead = Model.Item.GetItem("Paragraph_Text")?.GetString("Lead"); 83 IEnumerable<ButtonViewModel> buttons = ParagraphService.Instance.GetButtonsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Buttons")); 84 85 bool hasImage = Model.Item.GetItem("Paragraph_Image")?.GetFile("Image") != null; 86 bool hasText = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Text")); 87 bool hasLead = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Lead")); 88 bool hasHeading = headings.Any(); 89 bool hasButton = buttons.Any(); 90 91 var theme = Model.Item.GetItem("ColorScheme")?.GetString("ColorScheme"); 92 var fifthElementTheme = "fifth-element-color-" + Model.Item?.GetItem("ColorScheme")?.GetString("FifthElementColor"); 93 94 var sectionClassList = GetSectionClassList(Model); 95 96 var image = string.Empty; 97 var imageParameters = new Dictionary<string, object>(); 98 99 string layout = string.Empty; 100 Boolean enableFifthElement = false; 101 if (Model?.Item != null) 102 { 103 var paragraphLayout = Model.Item.GetItem("Paragraph_Layout"); 104 105 if (paragraphLayout != null) 106 { 107 layout = paragraphLayout.GetString("Layout"); 108 109 enableFifthElement = !string.IsNullOrEmpty(paragraphLayout.GetString("Layout_FifthElement")); 110 } 111 } 112 113 if (!string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Image")?.GetFile("Image")?.Path)) 114 { 115 image = Model.Item.GetItem("Paragraph_Image").GetFile("Image").Path; 116 imageParameters.Add("alt", Model.Item.GetItem("Paragraph_Image")?.GetString("ImageAltText")); 117 int xPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromLeft ?? 50; 118 int yPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromTop ?? 50; 119 string cssPosition = $"{xPos}% {yPos}%"; 120 imageParameters.Add("style", "object-position:" + cssPosition); 121 } 122 123 LinkViewModel imageLink = new LinkViewModel(); 124 if (Model.Item?.GetItem("Paragraph_Image")?.GetItem("Link") != null && !string.IsNullOrEmpty(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link").GetString("ButtonLink"))) 125 { 126 imageLink = ParagraphService.Instance.GetLinkByItem(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link")); 127 } 128 129 string fifthElementIconPath = "/Files/Templates/Designs/Swift/Assets/Images/DalgasFifthElements/"; 130 } 131 132 133 @{ 134 var fifthElementShape = Model.Item.GetItem("Paragraph_Layout")?.GetItem("FifthElementShape")?.GetString("FifthElement").ToLower(); 135 136 if (string.IsNullOrEmpty(fifthElementShape)) 137 { 138 fifthElementShape = "canopy"; 139 } 140 141 ClassList rowBleedClassList = new ClassList(""); 142 ClassList containerBleedClassList = new ClassList(""); 143 ClassList fifthElementClasslist = new ClassList(""); 144 ClassList textClasslist = new ClassList(""); 145 146 textClasslist.Add("pt-xxl-6"); 147 if (layout == "right") 148 { 149 containerBleedClassList.Add("me-lg-0 pe-lg-0"); 150 rowBleedClassList.Add("justify-content-end"); 151 fifthElementClasslist.Add("os-50"); 152 textClasslist.Add("offset-md-6"); 153 } 154 else if (layout == "left") 155 { 156 fifthElementClasslist.Add("oe-50 right-0"); 157 containerBleedClassList.Add("ms-lg-0 ps-lg-0"); 158 rowBleedClassList.Add("justify-content-start"); 159 } 160 161 // Call the function with the updated sectionClassList 162 sectionClassList = GetSectionClassList(Model, "theme-light"); 163 sectionClassList = sectionClassList.Replace("pt-6", string.Empty).Replace(" ", " ").Trim(); 164 165 string quote = Model.Item?.GetItem("Content")?.GetString("Text"); 166 string name = Model.Item?.GetItem("Content")?.GetString("Name"); 167 string titleAndCompany = Model.Item?.GetItem("Content")?.GetString("TitleAndCompany"); 168 } 169 170 <section id="section-@Model.Id" class="@sectionClassList" data-swift-gridrow> 171 <div class=""> 172 173 @if (!string.IsNullOrEmpty(text) || !string.IsNullOrEmpty(name) || !string.IsNullOrEmpty(titleAndCompany)) 174 { 175 <div class="container-xl @containerBleedClassList"> 176 <div class="row @rowBleedClassList"> 177 <div class="col-12 col-lg-11"> 178 <div class="row"> 179 <div class="col-12"> 180 181 <div class="theme @theme position-relative overflow-hidden align-content-end"> 182 183 <div class="row"> 184 <div class="js-content-container p-txt-container content-container col-12 col-lg-10 col-xl-9 col-xxxl-7 mx-auto p-4 p-lg-5 pt-6" style="z-index: 1"> 185 186 <div class="col-12 col-lg-7 @textClasslist"> 187 188 <p class="quote">"@quote"</p> 189 <h4 class="mb-2">@name</h4> 190 <p class="small">@titleAndCompany</p> 191 192 </div> 193 </div> 194 195 </div> 196 197 <figure class="ratio top-0 position-absolute h-100 mb-0 d-none d-lg-block"> 198 <div class="fifth-element w-100 h-100 @fifthElementClasslist @fifthElementTheme"> 199 @ReadFile(fifthElementIconPath + fifthElementShape + ".svg") 200 </div> 201 </figure> 202 203 </div> 204 205 </div> 206 </div> 207 </div> 208 </div> 209 </div> 210 } 211 else 212 { 213 if (Pageview.IsVisualEditorMode) 214 { 215 <div class="container-xl alert alert-danger" role="alert"> 216 This <strong>@Model.Item.SystemName</strong> is empty 217 </div> 218 } 219 } 220 </div> 221 </section> 222
FAQ om Blå Biomasse og muslingeopdræt
Nej, muslingerne lever udelukkende af de mikroalger, der allerede findes i farvandet.
Nej, vi tilfører intet til muslingerne. De lever kun af mikroalger, som flyder i vandet. Faktisk er de fleste muslingeanlæg i Limfjorden økologisk certificerede.
Kort fortalt nej. Da der ikke tilføres noget til muslinger udefra, kan muslingerne ikke forurene. Men mange muslinger koncentreret på et sted kan skabe andre udfordringer. Det kræver en længere forklaring.
Muslingerne filtrerer vandet for mikroalger, der indeholder kvælstof og fosfor. Det giver øget sigtbarhed i vandet både tæt ved og i en stor radius uden om opdrætsanlægget. Men en musling optager ikke alt i kroppen de spiser. Ca. 1/3 af det muslingen spiser optages i muslingen, mens de andre ca. 2/3 udskilles igen. Disse muslingefækalier synker til bunds under anlægget. Her vil der være en øget sedimentation og dermed mudder på bunden, men det betyder også nedsat sedimentation i resten af det vandområde, anlægget ligger i.
Samlet set gavner muslingerne således vandmiljøet, da muslingerne fjerner 1/3 af de næringsstoffer de spiser.
WSP har i 2024 udgivet en rapport om den effekt, som muslingeproduktion har på bundfaunaen. I den forbindelse er blandt andre Blå Biomasses anlæg undersøgt.
I rapporten konkluderes blandt andet, at muslingeopdræt med en biomasse på 1.000-1.600 tons per anlæg kan etableres i fjordområder som Venøsund og Jegindø med god gennemstrømning - uden at forringe bundfaunasamfund - og med positiv effekt på vandets klarhed.
Ja, muslingerne lever naturligt i de indre danske farvande. Når vi sætter Smart Farmnet ud i vandet, sørger vi blot for at give de mange små muslinger flere steder, hvor de kan sætte sig fast og vokse sig store.
Smart Farm er et system der består af lange PE-rør, hvorunder der hænger grovmaskede 3,5 m. dybe net. Her hægter muslingerne sig fast på.
Forskning og forsøg viser, at muslinger der vokser via ”Smart Farms” er en af de mest ansvarlige og økonomisk effektive måder at fjerne næringsstoffer i indre farvande på. Ud over at fjerne næringsstoffer i vandet, er det dokumenteret, at muslinger bidrager til øget sigtdybde, en forbedret vandkvalitet samt gendannelse af vigtige marine habitater.
Vi ser derfor et forretningsmæssigt potentiale i at producere proteinrige muslinger på ansvarlig vis – muslinger, der enten ender på spisebordet eller i foder.
Maj:
De vilde muslinger gyder i de danske farvande, bl.a. i Limfjorden. Æggene bliver befrugtet i vandet og udvikler sig til muslingelarver. De sætter sig på alle frie overflader som sten, både og bundgarnspæle – og også på vores opdrætsnet, hvor de lever af mikroalger i vandet.
Juni:
Larver bliver til små muslinger, som optager mikroalger. Disse mikroalger indeholder både kvælstof og fosfor – og det er de næringsstoffer, der presser vandmiljøet i de indre danske farvande. Når muslingerne optager mikroalgerne, renses vandet for kvælstof og fosfor. Muslingerne fungerer dermed som en form for naturligt filter.
Juli (frem til maj):
Muslingerne vokser sig større, og optaget af mikroalger fra vandet øges i takt med muslingernes vækst.
November (frem til maj):
Muslingerne er klar til høst. I alt tager udviklingen fra yngel til høstklar musling ca. 10 måneder. Efter høst anvendes muslingerne både som proteinrig fødevare og til foder.
Vi indsamler muslingerne på forskellige fartøjer.
I 2018 fik Blå Biomasse A/S bygget et nyt skib. En konkurrence blandt Hedeselskabets medlemmer gav mange gode bud på navnet til skibet. Vinderforslaget var "Enrico" efter Hedeselskabets stifter Enrico M. Dalgas.
Tal og fakta
- Blå Biomasse A/S har i alt 100 ha muslingeopdræt fordelt på 335 Smart Farm units i seks områder i Limfjorden
- En stor blåmusling filtrerer cirka 5-7 liter vand i timen
- Blå Biomasse A/S har en mulig årlig produktion på op til 7.000 tons muslinger
- En årlig produktion på 7.000 tons muslinger vil medvirke til at fjerne ca. 100 tons kvælstof og ca. 8 tons fosfor årligt
- De velfærdsøkonomiske omkostninger ved fjernelse af kvælstof er blevet værdisat til mellem 48 - 82 kr. for hvert kg kvælstof
- En årlig fjernelse af 100 tons kvælstof har en samfundsmæssig værdi på 5-8 mio. kr. pr. år
Blå Biomasse og FN's Verdensmål
FN's Verdensmål trådte i kraft den 1. januar 2016 og skal frem til 2030 sætte kurs mod en mere bæredygtig udvikling for mennesker og planeten. Arbejdet med blåmuslinger peger konkret ind i flere af delmålene i FN’s verdensmål.
- Delmål 2.4: Stop sult
- Delmål 8.4: Anstændige job og økonomisk vækst
- Delmål 12.2: Brug og håndter naturressourcer bæredygtugt
- Delmål 14.1: Livet i havet
- Delmål 17.6 og 17.7: Partnerskaber for handling
Vil du vide mere om Blå Biomasse?
Skriv eller ring til bestyrelsesformand i Blå Biomasse A/S, Klaus Astrup Nielsen.