From b40f8a31034ecd5eaef6cde9ef17112d7d113e47 Mon Sep 17 00:00:00 2001
From: Antonia Frank <antonia.frank@epfl.ch>
Date: Fri, 11 Oct 2024 12:44:51 +0200
Subject: [PATCH] Add bfields to gdat request fields

---
 matlab/TCV/gdat_tcv.m             | 51 +++++++++++++++++++++++++++++++
 matlab/TCV/tcv_requests_mapping.m |  5 +++
 2 files changed, 56 insertions(+)

diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index 95877123..f89a3fd7 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -866,6 +866,57 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       gdat_data.gdat_params.time_out = [];
     end
 
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   case {'bfields'}
+     params_eff = gdat_data.gdat_params;
+
+     if params_eff.liuqe == 1
+       % load LIUQE data
+       [L,LY] = mds2meq(gdat_data.shot,'LIUQE.M',[],'ifield',true); % flag to allow field computation
+       LY = meqreprocess(L,LY); % compute fields etc, since not directly loaded from mds2meq
+
+       datapath = 'Outputs from [L,LY]=mds2meq(gdat_data.shot,''LIUQE.M'',[],''ifield'',true); LY = meqreprocess(L,LY);';
+       gdat_data.data_fullpath = datapath;
+
+       % radial magnetic field
+       gdat_data.Br.data = LY.Brx;
+       gdat_data.Br.units = 'T';
+       gdat_data.Br.dim = {L.zx,L.rx,LY.t};
+       gdat_data.Br.dimunits = {'m','m','s'};
+       gdat_data.Br.t = LY.t;
+       gdat_data.Br.x = {L.zx,L.rx};
+       gdat_data.Br.data_fullpath = datapath;
+       gdat_data.Br.label = 'Radial magnetic field map in (R,Z)';
+
+       % vertical magnetic field
+       gdat_data.Bz.data = LY.Bzx;
+       gdat_data.Bz.units = 'T';
+       gdat_data.Bz.dim = {L.zx,L.rx,LY.t};
+       gdat_data.Bz.dimunits = {'m','m','s'};
+       gdat_data.Bz.t = LY.t;
+       gdat_data.Bz.x = {L.zx,L.rx};
+       gdat_data.Bz.data_fullpath = datapath;
+       gdat_data.Bz.label = 'Vertical magnetic field map in (R,Z)';
+
+       % toroidal magnetic field
+       gdat_data.Btor.data = LY.Btx;
+       gdat_data.Btor.units = 'T';
+       gdat_data.Btor.dim = {L.zx,L.rx,LY.t};
+       gdat_data.Btor.dimunits = {'m','m','s'};
+       gdat_data.Btor.t = LY.t;
+       gdat_data.Btor.x = {L.zx,L.rx};
+       gdat_data.Btor.data_fullpath = datapath;
+       gdat_data.Btor.label = 'Toroidal magnetic field map in (R,Z)';
+
+     else
+
+       warning('Can only load 2d B-field maps from LIUQE.M so far')
+       gdat_data.Btor = [];
+       gdat_data.Br   = [];
+       gdat_data.Bz   = [];
+
+     end
+
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    case {'betan', 'beta_tor_norm'}
     % 100*beta / |Ip[MA] * B0[T]| * a[m]
diff --git a/matlab/TCV/tcv_requests_mapping.m b/matlab/TCV/tcv_requests_mapping.m
index 5cb59693..cbae8c28 100644
--- a/matlab/TCV/tcv_requests_mapping.m
+++ b/matlab/TCV/tcv_requests_mapping.m
@@ -69,6 +69,11 @@ switch lower(data_request)
   mapping.label = 'B_0';
   mapping.method = 'switchcase';
   mapping.expression = '';
+ case 'bfields'
+  mapping.timedim = 1;
+  mapping.label = 'bfields';
+  mapping.method = 'switchcase';
+  mapping.expression = '';
  case {'beta', 'beta_tor'}
   mapping.timedim = 1;
   mapping.label = '\beta';
-- 
GitLab