V3FIT
diagnostic_T.f
1 !*******************************************************************************
2 ! File diagnostic_T.f
3 ! Contains module diagnostic_T
4 ! Defines derived-types: diagnostic_desc
5 
6 !*******************************************************************************
7 ! MODULE diagnostic_T
8 ! (Diagnostic Type Definition, for the V3FIT code)
9 ! SECTION I. VARIABLE DECLARATIONS
10 ! SECTION II. DERIVED-TYPE DECLARATIONS
11 ! SECTION III. INTERFACE BLOCKS
12 ! SECTION IV. CONSTRUCTION SUBROUTINES
13 ! SECTION V. DESTRUCTION SUBROUTINES
14 ! SECTION VI. ASSIGNMENT SUBROUTINES
15 ! SECTION VII. OUTPUT SUBROUTINES
16 
17 ! SECTION XVI. COMMENTS FOR DIFFERENT REVISIONS
18 !*******************************************************************************
19  MODULE diagnostic_t
20 
21 !*******************************************************************************
22 ! SECTION I. VARIABLE DECLARATIONS
23 !*******************************************************************************
24 
25 !-------------------------------------------------------------------------------
26 ! Type declarations - lengths of reals, integers, and complexes.
27 ! Frequently used mathematical constants, lots of extra precision.
28 !-------------------------------------------------------------------------------
29  USE stel_kinds, only : rprec, cprec
30  USE stel_constants, only : pi, twopi, one, zero
31 
32 !-------------------------------------------------------------------------------
33 ! Use Statements for other structures, V3 Utilities
34 !-------------------------------------------------------------------------------
35  USE mddc_t
36  USE sxrch_t ! GJH 2009-01-20
37  USE ipch_t ! JDH 2012-03-15
38  USE thscte_t ! JDH 2011-10-23
39  USE extcurz_t ! GLT 10-sep-2012
40  USE v3_utilities
41 
42 !-------------------------------------------------------------------------------
43 ! Implicit None comes after USE statements, before other declarations
44 !-------------------------------------------------------------------------------
45  IMPLICIT NONE
46 
47 !-------------------------------------------------------------------------------
48 ! Make type declarations and constants Private, so there are no conflicts.
49 !-------------------------------------------------------------------------------
50  PRIVATE rprec, cprec, pi, twopi, one, zero
51 
52 !-------------------------------------------------------------------------------
53 ! Lengths of Character Variables
54 !-------------------------------------------------------------------------------
55  INTEGER, PARAMETER, PRIVATE :: type_len=10
56  INTEGER, PARAMETER, PRIVATE :: sn_len=30
57  INTEGER, PARAMETER, PRIVATE :: ln_len=80
58  INTEGER, PARAMETER, PRIVATE :: units_len=30
59 
60 !*******************************************************************************
61 ! SECTION II. DERIVED-TYPE DECLARATIONS
62 ! Diagnostic Description:
63 ! diagnostic_desc
64 ! Type of diagnostic specified by % d_type.
65 ! Allowable values of d_type:
66 ! mddc - Magnetic 'Diagnostic-Dot' Coil
67 !
68 !*******************************************************************************
69 !-------------------------------------------------------------------------------
70 ! Declare type diagnostic_desc
71 ! Common to all d_types
72 ! d_type character, type of diagnostic
73 ! s_name character, short name of diagnostic
74 ! l_name character, long name of diagnostic
75 ! units character, physical units that the data is measured in
76 ! sigma_default real, default value of the uncertainty in the data
77 !
78 ! Derived Types for various diagnostic types
79 ! mddc Magnetic Diagnostic Dot Coil
80 ! sxrch Soft X-Ray CHord
81 ! ipch Interferometry-Polarimetry CHord
82 ! thscte THomson SCattering TE
83 ! extcurz EXTernal CURrent along Z
84 !-------------------------------------------------------------------------------
86  CHARACTER (len=type_len) :: d_type
87  CHARACTER (len=sn_len) :: s_name
88  CHARACTER (len=ln_len) :: l_name
89  CHARACTER (len=units_len) :: units
90  REAL(rprec) :: sigma_default
91  TYPE (mddc_desc) :: mddc
92  TYPE (sxrch_desc) :: sxrch !GJH 2010-01-20
93  TYPE (ipch_desc) :: ipch ! JDH 2012-03-15
94  TYPE (thscte_desc) :: thscte ! JDH 2011-10-23
95  TYPE (extcurz_desc) :: extcurz ! GLT 10-sep-2012
96  END TYPE diagnostic_desc
97 
98 !*******************************************************************************
99 ! SECTION III. INTERFACE BLOCKS
100 !*******************************************************************************
101 !-------------------------------------------------------------------------------
102 ! Assignment for structures
103 !-------------------------------------------------------------------------------
104  INTERFACE ASSIGNMENT (=)
105  MODULE PROCEDURE diagnostic_desc_assign
106  END INTERFACE
107 
108 !-------------------------------------------------------------------------------
109 ! Generic construct
110 !-------------------------------------------------------------------------------
112  MODULE PROCEDURE diagnostic_desc_construct_mddc, &
113  & diagnostic_desc_construct_sxrch, &
114  & diagnostic_desc_construct_ipch, &
115  & diagnostic_desc_cnstrct_thscte, &
116  & diagnostic_desc_construct_extcurz
117  END INTERFACE
118 
119 !-------------------------------------------------------------------------------
120 ! Generic destroy
121 !-------------------------------------------------------------------------------
123  MODULE PROCEDURE diagnostic_desc_destroy
124  END INTERFACE
125 
126 !-------------------------------------------------------------------------------
127 ! Generic write
128 !-------------------------------------------------------------------------------
130  MODULE PROCEDURE diagnostic_desc_write
131  END INTERFACE
132 
133 !-------------------------------------------------------------------------------
134 ! Interface block for testing goes here.
135 !-------------------------------------------------------------------------------
136 
137  CONTAINS
138 !*******************************************************************************
139 ! SECTION IV. CONSTRUCTION SUBROUTINES
140 !*******************************************************************************
141 !-------------------------------------------------------------------------------
142 ! Construct a diagnostic_desc with mddc diagnostic
143 !
144 ! For d_type = 'mddc' (magnetic diagnostic-dot coil)
145 !-------------------------------------------------------------------------------
146  SUBROUTINE diagnostic_desc_construct_mddc(this,d_type,s_name, &
147  & l_name, units,sigma_default,mddc)
148 
149 ! NB.
150 ! The mddc argument is assigned to the 'this' component. Do NOT call this
151 ! subroutine with this % mddc as the mddc argument.
152 
153  IMPLICIT NONE
154 
155 ! Declare Arguments
156  TYPE (diagnostic_desc), INTENT(inout) :: this
157  CHARACTER (len=*), INTENT(in) :: d_type
158  CHARACTER (len=*), INTENT(in) :: s_name
159  CHARACTER (len=*), INTENT(in) :: l_name
160  CHARACTER (len=*), INTENT(in) :: units
161  REAL(rprec), INTENT(in) :: sigma_default
162  TYPE (mddc_desc), INTENT(in) :: mddc
163 
164 ! Declare local variables
165  CHARACTER(len=*), PARAMETER :: sub_name = &
166  & 'diagnostic_desc_construct_mddc: '
167 
168 ! Start of executable code
169 
170 ! Destroy the mddc component
171  CALL mddc_destroy(this % mddc)
172 
173 ! Scalar assignments
174  this % s_name = trim(adjustl(s_name))
175  this % l_name = trim(adjustl(l_name))
176  this % units = trim(adjustl(units))
177  this % sigma_default = sigma_default
178 
179 ! Different coding, depending on d_type
180  SELECT CASE (trim(adjustl(d_type)))
181  CASE ('mddc')
182  this % d_type = 'mddc'
183  this % mddc = mddc
184 
185  CASE DEFAULT
186  CALL err_fatal(sub_name // 'unrecognized d_type: ', &
187  & char=d_type)
188  END SELECT ! Different coding depending on d_type
189 
190 
191  END SUBROUTINE diagnostic_desc_construct_mddc
192 
193 !======================================================================
194  SUBROUTINE diagnostic_desc_construct_sxrch(this,d_type,s_name, &
195  & l_name, units,sigma_default,sxrch)
196 !-------------------------------------------------------------------------------
197 ! Construct a diagnostic_desc with sxrch diagnostic
198 !
199 ! For d_type = 'sxrch' (Soft X-Ray Chord diagnostic)
200 !
201 !-------------------------------------------------------------------------------
202 
203 ! The sxrch argument is assigned to the 'this' component. Do NOT call this
204 ! subroutine with this % sxrch as the mddc argument.
205 
206  IMPLICIT NONE
207 
208 ! Declare Arguments
209  TYPE (diagnostic_desc), INTENT(inout) :: this
210  CHARACTER (len=*), INTENT(in) :: d_type
211  CHARACTER (len=*), INTENT(in) :: s_name
212  CHARACTER (len=*), INTENT(in) :: l_name
213  CHARACTER (len=*), INTENT(in) :: units
214  REAL(rprec), INTENT(in) :: sigma_default
215  TYPE (sxrch_desc), INTENT(in) :: sxrch
216 
217 ! Declare local variables
218  CHARACTER(len=*), PARAMETER :: sub_name = &
219  & 'diagnostic_desc_construct_sxrch: '
220 
221 ! Start of executable code
222 
223 ! Destroy the sxrch component
224  CALL sxrch_desc_destroy(this % sxrch)
225 
226 ! Scalar assignments
227  this % s_name = trim(adjustl(s_name))
228  this % l_name = trim(adjustl(l_name))
229  this % units = trim(adjustl(units))
230  this % sigma_default = sigma_default
231 
232 ! Different coding, depending on d_type
233  SELECT CASE (trim(adjustl(d_type)))
234  CASE ('sxrch')
235  this % d_type = 'sxrch'
236  this % sxrch = sxrch
237 
238  CASE DEFAULT
239  CALL err_fatal(sub_name // 'unrecognized d_type: ', &
240  & char=d_type)
241  END SELECT ! Different coding depending on d_type
242 
243 
244  END SUBROUTINE diagnostic_desc_construct_sxrch
245 
246 !======================================================================
247 
248  SUBROUTINE diagnostic_desc_construct_extcurz(this,d_type, &
249  & s_name,l_name,units,sigma_default,extcurz,s0,u0)
250 
251  IMPLICIT NONE
252 
253  ! arguments
254  TYPE (diagnostic_desc), INTENT(inout) :: this
255  CHARACTER (len=*), INTENT(in) :: d_type
256  CHARACTER (len=*), INTENT(in) :: s_name
257  CHARACTER (len=*), INTENT(in) :: l_name
258  CHARACTER (len=*), INTENT(in) :: units
259  REAL(rprec), INTENT(in) :: sigma_default
260  TYPE (extcurz_desc), INTENT(in) :: extcurz
261  REAL(rprec), INTENT(in) :: s0, u0
262 
263  ! local variables
264  CHARACTER(len=*), PARAMETER :: sub_name = &
265  & 'diagnostic_desc_construct_extcurz: '
266 
267  ! destroy the extcurz component
268  CALL extcurz_desc_destroy(this % extcurz)
269 
270  ! scalar assignments
271  this % s_name = trim(adjustl(s_name))
272  this % l_name = trim(adjustl(l_name))
273  this % units = trim(adjustl(units))
274  this % sigma_default = sigma_default
275 
276  ! extcurz specific coding
277  SELECT CASE (trim(adjustl(d_type)))
278  CASE ('extcurz')
279  this % d_type = 'extcurz'
280  this % extcurz = extcurz
281  this % extcurz % s0 = s0
282  this % extcurz % u0 = u0
283  CASE DEFAULT
284  CALL err_fatal(sub_name // 'unrecognized d_type: ', &
285  & char=d_type)
286  END SELECT
287 
288  END SUBROUTINE diagnostic_desc_construct_extcurz
289 
290 !======================================================================
291  SUBROUTINE diagnostic_desc_construct_ipch(this,d_type,s_name, &
292  & l_name, units,sigma_default,ipch)
293 !-------------------------------------------------------------------------------
294 ! Construct a diagnostic_desc with ipch diagnostic
295 !
296 ! For d_type = 'ipch' (Interferometry-Polarimetry Chord diagnostic)
297 !
298 !-------------------------------------------------------------------------------
299 
300 ! The ipch argument is assigned to the 'this' component. Do NOT call this
301 ! subroutine with this % ipch as the ipch argument.
302 
303  IMPLICIT NONE
304 
305 ! Declare Arguments
306  TYPE (diagnostic_desc), INTENT(inout) :: this
307  CHARACTER (len=*), INTENT(in) :: d_type
308  CHARACTER (len=*), INTENT(in) :: s_name
309  CHARACTER (len=*), INTENT(in) :: l_name
310  CHARACTER (len=*), INTENT(in) :: units
311  REAL(rprec), INTENT(in) :: sigma_default
312  TYPE (ipch_desc), INTENT(in) :: ipch
313 
314 ! Declare local variables
315  CHARACTER(len=*), PARAMETER :: sub_name = &
316  & 'diagnostic_desc_construct_ipch: '
317 
318 ! Start of executable code
319 
320 ! Destroy the ipch component
321  CALL ipch_desc_destroy(this % ipch)
322 
323 ! Scalar assignments
324  this % s_name = trim(adjustl(s_name))
325  this % l_name = trim(adjustl(l_name))
326  this % units = trim(adjustl(units))
327  this % sigma_default = sigma_default
328 
329 ! Different coding, depending on d_type
330  SELECT CASE (trim(adjustl(d_type)))
331  CASE ('ipch')
332  this % d_type = 'ipch'
333  this % ipch = ipch
334 
335  CASE DEFAULT
336  CALL err_fatal(sub_name // 'unrecognized d_type: ', &
337  & char=d_type)
338  END SELECT ! Different coding depending on d_type
339 
340 
341  END SUBROUTINE diagnostic_desc_construct_ipch
342 
343 !======================================================================
344  SUBROUTINE diagnostic_desc_cnstrct_thscte(this,d_type,s_name, &
345  & l_name, units,sigma_default,thscte)
346 !-------------------------------------------------------------------------------
347 ! Construct a diagnostic_desc with thscte diagnostic
348 !
349 ! For d_type = 'thscte' (Thomson Scattering Te)
350 !
351 !-------------------------------------------------------------------------------
352 
353 ! The thscte argument is assigned to the 'this' component. Do NOT call this
354 ! subroutine with this % thscte as the mddc argument.
355 
356  IMPLICIT NONE
357 
358 ! Declare Arguments
359  TYPE (diagnostic_desc), INTENT(inout) :: this
360  CHARACTER (len=*), INTENT(in) :: d_type
361  CHARACTER (len=*), INTENT(in) :: s_name
362  CHARACTER (len=*), INTENT(in) :: l_name
363  CHARACTER (len=*), INTENT(in) :: units
364  REAL(rprec), INTENT(in) :: sigma_default
365  TYPE (thscte_desc), INTENT(in) :: thscte
366 
367 ! Declare local variables
368  CHARACTER(len=*), PARAMETER :: sub_name = &
369  & 'diagnostic_desc_cnstrct_thscte: '
370 
371 ! Start of executable code
372 
373 ! Destroy the thscte component
374  CALL thscte_desc_destroy(this % thscte)
375 
376 ! Scalar assignments
377  this % s_name = trim(adjustl(s_name))
378  this % l_name = trim(adjustl(l_name))
379  this % units = trim(adjustl(units))
380  this % sigma_default = sigma_default
381 
382 ! Different coding, depending on d_type
383  SELECT CASE (trim(adjustl(d_type)))
384  CASE ('thscte')
385  this % d_type = 'thscte'
386  this % thscte = thscte
387 
388  CASE DEFAULT
389  CALL err_fatal(sub_name // 'unrecognized d_type: ', &
390  & char=d_type)
391  END SELECT ! Different coding depending on d_type
392 
393 
394  END SUBROUTINE diagnostic_desc_cnstrct_thscte
395 
396 !*******************************************************************************
397 ! SECTION V. DESTRUCTION SUBROUTINES
398 !*******************************************************************************
399 !-------------------------------------------------------------------------------
400 ! Destroy a diagnostic_desc
401 !-------------------------------------------------------------------------------
402  SUBROUTINE diagnostic_desc_destroy(this)
403  IMPLICIT NONE
404 
405 ! Declare Arguments
406  TYPE (diagnostic_desc), INTENT(inout) :: this
407 
408 ! Declare local variables
409  CHARACTER(len=*), PARAMETER :: sub_name = &
410  & 'diagnostic_desc_destroy: '
411 
412 ! Start of executable code
413 
414 ! Get rid of all components
415  this % s_name = ' '
416  this % l_name = ' '
417  this % units = ' '
418 
419 ! Different coding, depending on d_type
420  SELECT CASE (trim(adjustl(this % d_type)))
421  CASE ('mddc')
422  this % d_type = ' '
423  CALL mddc_destroy(this % mddc)
424 
425  CASE ('sxrch') ! GJH 2010-01-20
426  this % d_type = ' '
427  CALL sxrch_desc_destroy(this % sxrch)
428 
429  CASE ('ipch') ! JDH 2012-03-16
430  this % d_type = ' '
431  CALL ipch_desc_destroy(this % ipch)
432 
433  CASE ('thscte')
434  this % d_type = ' '
435  CALL thscte_desc_destroy(this % thscte)
436 
437  CASE ('extcurz')
438  this % d_type = ' '
439  CALL extcurz_desc_destroy(this % extcurz)
440 
441  CASE DEFAULT
442  CALL err_fatal(sub_name // 'unrecognized d_type: ', &
443  & char=this % d_type)
444  END SELECT ! Different coding depending on d_type
445 
446  END SUBROUTINE diagnostic_desc_destroy
447 
448 !*******************************************************************************
449 ! SECTION VI. ASSIGNMENT SUBROUTINES
450 !*******************************************************************************
451 !-------------------------------------------------------------------------------
452 ! Assignment for diagnostic_desc
453 !-------------------------------------------------------------------------------
454  SUBROUTINE diagnostic_desc_assign(left,right)
455 
456 ! 12-11-04. Can't get by with intrinsic assignment, because intrinsic
457 ! assignment for the mdcoil component would give incorrect results.
458 
459  IMPLICIT NONE
460 
461 ! Declare Arguments
462  TYPE (diagnostic_desc), INTENT (inout) :: left
463  TYPE (diagnostic_desc), INTENT (in) :: right
464 
465 ! Declare temporary variables
466  CHARACTER(len=*), PARAMETER :: sub_name = &
467  & 'diagnostic_desc_assign: '
468 
469 ! Start of executable code
470  left % d_type = right % d_type
471  left % s_name = right % s_name
472  left % l_name = right % l_name
473  left % units = right % units
474  left % sigma_default = right % sigma_default
475  left % mddc = right % mddc
476  left % sxrch = right % sxrch ! GJH 2010-01-20
477  left % ipch = right % ipch ! JDH 2012-03-16
478  left % thscte = right % thscte ! JDH 2011-10-23
479  left % extcurz = right % extcurz ! GLT 10-sep-2012
480 
481  END SUBROUTINE diagnostic_desc_assign
482 
483 !*******************************************************************************
484 ! SECTION VII. OUTPUT SUBROUTINES
485 !*******************************************************************************
486 !-------------------------------------------------------------------------------
487 ! Write out the contents of a diagnostic_desc
488 !-------------------------------------------------------------------------------
489 
490  SUBROUTINE diagnostic_desc_write(this,identifier,unit,verbose)
491  IMPLICIT NONE
492 
493 ! Declare Arguments
494  TYPE (diagnostic_desc), INTENT (in) :: this
495  CHARACTER (len=*), INTENT(in), OPTIONAL :: identifier
496  INTEGER, INTENT(in), OPTIONAL :: unit
497  INTEGER, INTENT(in), OPTIONAL :: verbose
498 ! identifier character variable, also written out
499 ! unit I/O unit number to write to
500 ! verbose integer, to specify verbosity level of write
501 
502 ! Declare local variables and constants
503  INTEGER :: iv_default = 1
504  integer :: iv
505  INTEGER :: iou_default = 6
506  integer :: iou
507  CHARACTER (len=60) :: id
508 
509 ! Declare Format array modified GJH 2010-01-15
510  CHARACTER(len=*), PARAMETER, DIMENSION(10) :: fmt1 = (/ &
511  & '(" start diagnostic_desc write, called with id = ",a)', &
512  & '(" d_type = ",a) ', &
513  & '(" s_name = ",a) ', &
514  & '(" l_name = ",a) ', &
515  & '(" units = ",a) ', &
516  & '(" mddc s_name = ",a) ', &
517  & '(" sxrch s_name = ",a) ', &
518  & '(" ipch s_name = ",a) ', &
519  & '(" thscte s_name = ",a) ', &
520  & '(" end diagnostic_desc write, called with id = ",a) ' &
521  & /)
522 
523 ! start of executable code
524 ! Check for arguments present
525  IF (PRESENT(identifier)) THEN
526  id = identifier
527  ELSE
528  id = ' '
529  END IF
530 
531  IF (PRESENT(unit)) THEN
532  iou = unit
533  ELSE
534  iou = iou_default
535  END IF
536 
537  IF (PRESENT(verbose)) THEN
538  iv = verbose
539  ELSE
540  iv = iv_default
541  END IF
542 
543 ! Select Case of Verbosity Level
544  SELECT CASE(iv)
545  CASE( :0) ! VERY Terse
546  WRITE(iou,*) this % d_type
547  WRITE(iou,*) this % s_name
548  WRITE(iou,*) this % l_name
549  WRITE(iou,*) this % units
550  WRITE(iou,*) this % mddc % s_name
551  WRITE(iou,*) this % sxrch % chord_name ! GJH 2010-01-20
552  WRITE(iou,*) this % ipch % chord_name ! JDH 2012-03-16
553  WRITE(iou,*) this % thscte % chord_name ! JDH 2011-10-23
554 
555  CASE(1:) ! Default, more verbose
556  WRITE(iou,fmt1(1)) id
557  WRITE(iou,fmt1(2)) this % d_type
558  WRITE(iou,fmt1(3)) this % s_name
559  WRITE(iou,fmt1(4)) this % l_name
560  WRITE(iou,fmt1(5)) this % units
561  WRITE(iou,fmt1(6)) this % mddc % s_name
562  WRITE(iou,fmt1(7)) this % sxrch % chord_name ! GJH 2010-01-20
563  WRITE(iou,fmt1(8)) this % ipch % chord_name ! JDH 2012-03-16
564  WRITE(iou,fmt1(9)) this % thscte % chord_name ! JDH 2011-10-23
565  WRITE(iou,fmt1(10)) id
566 
567  END SELECT
568 
569  END SUBROUTINE diagnostic_desc_write
570 
571 !*******************************************************************************
572 ! SECTION XVI. COMMENTS FOR DIFFERENT REVISIONS
573 !*******************************************************************************
574 !
575 ! JDH 2007-06-11. Modified so that mddc_desc derived type is in diagnostic_desc
576 ! In preparation for different types of diagnostics
577 !
578 ! JDH 07-16-04. Modifying bsc.f to get diagnostic_mod.f
579 ! JDH 08-11-04. More modifications. File diagnostic_T.f
580 !
581 ! JDH 08-16-2004
582 ! Add comments for collection, _ptr
583 ! Think about n_data, and where it belongs
584 ! JDH 08-19-2004
585 ! Eliminated n_data as a component
586 ! JDH 08-23-2004
587 ! Cleaned up sigma logic a bit.
588 ! JDH 09-10-2004
589 ! Added mddc_type component
590 ! JDH 12-11-2004
591 ! Removed 'pointer' attribute from mdcoil component of diagnostic_desc.
592 ! Added l_mdcoil_def component to diagnostic_desc. Added subroutine
593 ! diagnostic_desc_assign.
594 !
595 ! JDH 2008-01-19 - Added => null() to pointer declarations
596 !
597 ! JDH 2008-01-21
598 ! SPH Jan 2008 eliminated iprec. Completed elimination.
599 ! Initialized STAT variables in diagnostic_data_destroy
600 !
601 ! JDH 2009-06-15
602 ! Eliminated diagnostic_data derived type - not needed.
603 !
604 ! JDH 2011-08-01
605 ! Refactor sxrc -> sxrch
606 !
607 ! JDH 2011-10-23
608 ! Add thscte
609 !
610 ! JDH 2012-03-16
611 ! Add ipch
612 !
613 ! JDH 2012-06-08
614 ! Change diagnostic_desc_construct_thscte to diagnostic_desc_cnstrct_thscte
615 ! as first form had 32 characters.
616 !
617 ! GLT 10-sep-2012
618 ! added coding for extcurz
619 !
620 
621  END MODULE diagnostic_t
extcurz
Represents a signal obtained by integrating around the magnetic field to get the current enclosed in ...
Definition: extcurz.f:15
diagnostic_t::diagnostic_construct
Definition: diagnostic_T.f:111
diagnostic_t::diagnostic_desc
Definition: diagnostic_T.f:85
diagnostic_t::diagnostic_write
Definition: diagnostic_T.f:129
diagnostic_t::diagnostic_destroy
Definition: diagnostic_T.f:122
mddc_t::mddc_destroy
Definition: mddc_T.f:198