pulseprogram 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203
  1. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  2. ;****************************************************************
  3. ;
  4. ; Copyright (c) 2001 - 2003
  5. ; Bruker BioSpin MRI GmbH
  6. ; D-76275 Ettlingen, Germany
  7. ;
  8. ; All Rights Reserved
  9. ;
  10. ; FLASH - a gradient echo imaging method
  11. ;
  12. ;****************************************************************
  13. ;
  14. ; d0 - TR padding
  15. ; d1 - T1 padding
  16. ; d2 - T2 padding
  17. ; d3 = PVM_RiseTime
  18. ; d4 = PVM_RampTime
  19. ; d8 = SCON / BLKTR_MAN (Amplifier preblanking)
  20. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include" 1
  21. ;****************************************************************
  22. ;
  23. ; $Source: /pv/CvsTree/pv/gen/src/prg/methManag/PPG/Attic/MRI.include,v $
  24. ;
  25. ; Copyright (c) 2006
  26. ; Bruker BioSpin MRI GmbH
  27. ; D-76275 Ettlingen, Germany
  28. ;
  29. ; All Rights Reserved
  30. ;
  31. ;;****************************************************************
  32. ;MRI.include
  33. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/Avance.incl" 1
  34. ;Avance3.incl
  35. ; for AV III
  36. ;
  37. ;avance-version (13/06/17)
  38. ;
  39. ;$CLASS=HighRes Incl
  40. ;$COMMENT=
  41. # 169 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/Avance.incl"
  42. ;$Id: Avance3.incl,v 1.9.6.1 2013/06/17 15:32:55 pfre Exp $
  43. # 14 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include" 2
  44. define delay aqq
  45. define delay deparx
  46. define delay derxadc
  47. define delay rdepa
  48. # 21 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  49. "aqq=dw*td"
  50. "rdepa=de-depa"
  51. "deparx=depa-derx"
  52. "derxadc=derx-deadc"
  53. ; contents of De2.incl - usage for different hardware versions to
  54. ; be checked - intermediate solution to support Jobs
  55. define delay rde1
  56. # 31 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  57. "rde1=de-de1"
  58. # 44 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  59. ; end of contents of De2.incl
  60. # 65 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  61. # 74 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  62. # 128 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  63. # 129 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  64. # 141 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MRI.include"
  65. # 20 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg" 2
  66. preset off
  67. define delay denab
  68. # 25 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  69. define list<phase> phaselist = {$RFPhaseList}
  70. define list<frequency> fq1list = {$ACQ_O1_list}
  71. "denab = d3 - de"
  72. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 1
  73. ;****************************************************************
  74. ;
  75. ; Copyright (c) 2003-2007
  76. ; Bruker BioSpin MRI GmbH
  77. ; D-76275 Ettlingen, Germany
  78. ;
  79. ; $Id: PrepModulesHead.mod,v 1.19 2012/01/20 10:19:48 wemch Exp $
  80. ;
  81. ; All Rights Reserved
  82. ;
  83. ; Declaration of pulseprogram parameters and subroutines for
  84. ; preparation modules
  85. ;
  86. ; Must be included after MRI.include!
  87. ;
  88. ;****************************************************************
  89. # 18 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod"
  90. ;**** Fat Suppression ****
  91. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FatSupDef.mod" 1
  92. ;****************************************************************
  93. ;
  94. ; Copyright (c) 2002-2007
  95. ; Bruker BioSpin MRI GmbH
  96. ; D-76275 Ettlingen, Germany
  97. ;
  98. ; $Id: FatSupDef.mod,v 1.7 2013/07/05 14:15:26 sako Exp $
  99. ;
  100. ; All Rights Reserved
  101. ;
  102. ; FatSupDef.mod : Declaration of Fat Suppression Subroutine
  103. ;
  104. ;****************************************************************
  105. if (PVM_FatSupPerform == Yes)
  106. {
  107. define pulse fatSupPul = {$PVM_FatSupRfLength}
  108. define list<frequency> fatSupList = {$PVM_FatSupFL}
  109. define delay fatSupRamp = {$PVM_FatSupRampTime}
  110. define delay fatSupAmp = {$PVM_FatSupAmpEnable}
  111. define delay fatSupGrad = {$PVM_FatSupGradWait}
  112. define delay fatSupSpoil = {$PVM_FatSupSpoilDur}
  113. # 25 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FatSupDef.mod"
  114. ; convert from ms to s
  115. "fatSupRamp = fatSupRamp / 1000"
  116. "fatSupAmp = fatSupAmp / 1000"
  117. "fatSupGrad = fatSupGrad / 1000"
  118. "fatSupSpoil = fatSupSpoil / 1000"
  119. }
  120. subroutine FatSup
  121. # 20 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  122. ;**** Flow Saturation ****
  123. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FlowSatDef.mod" 1
  124. ;****************************************************************
  125. ;
  126. ; Copyright (c) 2005-2007
  127. ; Bruker BioSpin MRI GmbH
  128. ; D-76275 Ettlingen, Germany
  129. ;
  130. ; $Id: FlowSatDef.mod,v 1.7 2013/06/04 10:11:30 sako Exp $
  131. ;
  132. ; All Rights Reserved
  133. ;
  134. ; FlowSatDef.mod: Declaration of subroutines for Flow Saturation
  135. ; call
  136. ; subr FlowSat()
  137. ; subr FlowSatInit()
  138. ; subr FlowSatInc()
  139. ;
  140. ;****************************************************************
  141. if(PVM_InFlowSatOnOff == 1)
  142. {
  143. define list<frequency> modlis4 = {$PVM_InFlowSatFL}
  144. define list<grad_scalar> flowSatGrad={$PVM_InFlowSatGrad}
  145. define delay SfD0 = {$PVM_SfD0}
  146. define delay SfD1 = {$PVM_SfD1}
  147. define delay SfD2 = {$PVM_SfD2}
  148. define pulse SfP0 = {$PVM_SfP0}
  149. define loopcounter SfLp0 = {$PVM_SfLp0}
  150. }
  151. subroutine FlowSat
  152. subroutine FlowSatInc
  153. subroutine FlowSatInit
  154. # 24 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  155. ;**** Inversion Pulse ****
  156. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/InvPulseDef.mod" 1
  157. ;****************************************************************
  158. ;
  159. ; Copyright (c) 2002-2007
  160. ; Bruker BioSpin MRI GmbH
  161. ; D-76275 Ettlingen, Germany
  162. ;
  163. ; $Id: InvPulseDef.mod,v 1.2 2010/12/15 10:52:31 mah Exp $
  164. ;
  165. ; All Rights Reserved
  166. ;
  167. ; InvPulseDef.mod : Declaration of Inversion Pulse subroutine
  168. ;
  169. ; call
  170. ; subr InvPulse()
  171. ;
  172. ;****************************************************************
  173. ;
  174. ; PVM_InvRFPulseArr :
  175. ;
  176. ; sp22 TPQQ[14].name : PVM_InvRFPulsePropertyArr[0].Filename
  177. ;
  178. ; PVM_IpP0 : PVM_InvRFPulseArr[0].PulseLength
  179. ;
  180. ; PVM_IpD2 : PVM_InvPulseDelay[0]
  181. ; PVM_IpD3 : PVM_InvPulseSpoilTime[0]
  182. ; PVM_IpD1 : CONFIG_amplifier _enable
  183. ; PVM_IpD0 : PVM_RampTime
  184. ;
  185. if(PVM_InvPulseOnOff == 1)
  186. {
  187. define list<frequency> modlis2= {$PVM_InvPulseOffsetHz}
  188. define delay IpD0 = {$PVM_IpD0}
  189. define delay IpD1 = {$PVM_IpD1}
  190. define delay IpD2 = {$PVM_IpD2}
  191. define delay IpD3 = {$PVM_IpD3}
  192. define pulse IpP0 = {$PVM_IpP0}
  193. }
  194. subroutine InvPulse
  195. # 28 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  196. ;**** Magnetisation Transfer ****
  197. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MagTransDef.mod" 1
  198. ;****************************************************************
  199. ; $Source: /pv/CvsTree/pv/gen/src/prg/methManag/PPG/Attic/MagTransDef.mod,v $
  200. ;
  201. ; Copyright (c) 2005-2007
  202. ; Bruker BioSpin MRI GmbH
  203. ; D-76275 Ettlingen, Germany
  204. ;
  205. ; All Rights Reserved
  206. ;
  207. ; MagTransDef.mod: Declaration of subroutine for Magnetization
  208. ; transfer
  209. ; call
  210. ; subr MagTrans()
  211. ;
  212. ; $Id: MagTransDef.mod,v 1.6.2.1 2015/03/24 14:30:00 sako Exp $
  213. ;****************************************************************
  214. ;**** Magnetisation Transfer Module ****
  215. if(PVM_MagTransOnOff)
  216. {
  217. define list<frequency> modlis3 = {$PVM_MagTransFL}
  218. define delay MtD0 = {$PVM_MtD0}
  219. define delay MtD1 = {$PVM_MtD1}
  220. define delay MtD2 = {$PVM_MtD2}
  221. define delay MtD3 = {$PVM_MtD3}
  222. # 28 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MagTransDef.mod"
  223. define pulse MtP0 = {$PVM_MtP0}
  224. define loopcounter MtLp0 = {$PVM_MtLp0}
  225. }
  226. subroutine MagTrans
  227. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  228. ;**** Saturation Pulse ****
  229. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/SatPulseDef.mod" 1
  230. ;****************************************************************
  231. ;
  232. ; Copyright (c) 2002-2003
  233. ; Bruker BioSpin MRI GmbH
  234. ; D-76275 Ettlingen, Germany
  235. ;
  236. ; $Id: SatPulseDef.mod,v 1.3 2010/12/15 10:52:31 mah Exp $
  237. ;
  238. ; All Rights Reserved
  239. ;
  240. ; SatPulseDef.mod : Declaration of Saturation Pulse subroutines
  241. ; call
  242. ; subr SatPulse()
  243. ;
  244. ;****************************************************************
  245. ;
  246. ; PVM_SatRFPulseArr :
  247. ;
  248. ; sp28 DPQQ[12].name : PVM_SatRFPulsePropertyArr[0].Filename
  249. ; sp29 DPQQ[13].name : PVM_SatRFPulsePropertyArr[1].Filename
  250. ; sp30 DPQQ[14].name : PVM_SatRFPulsePropertyArr[2].Filename
  251. ; sp31 DPQQ[15].name : PVM_SatRFPulsePropertyArr[3].Filename
  252. ;
  253. ; PVM_SpP0 : PVM_SatRFPulseArr[0].PulseLength
  254. ; PVM_SpP1 : PVM_SatRFPulseArr[1].PulseLength
  255. ; PVM_SpP2 : PVM_SatRFPulseArr[2].PulseLength
  256. ; PVM_SpP3 : PVM_SatRFPulseArr[3].PulseLength
  257. ;
  258. ; PVM_SpD2 : PVM_SatPulseDelay1[0]
  259. ; PVM_SpD6 : PVM_SatPulseSpoilTime[0]
  260. ; PVM_SpD10 : PVM_SatPulseDelay2[0]
  261. ; PVM_SpD3 : PVM_SatPulseSpoilTime[1]
  262. ; PVM_SpD7 : PVM_SatPulseDelay1[1]
  263. ; PVM_SpD11 : PVM_SatPulseDelay2[1]
  264. ; PVM_SpD4 : PVM_SatPulseDelay1[2]
  265. ; PVM_SpD8 : PVM_SatPulseSpoilTime[2]
  266. ; PVM_SpD12 : PVM_SatPulseDelay2[2]
  267. ; PVM_SpD5 : PVM_SatPulseDelay1[3]
  268. ; PVM_SpD9 : PVM_SatPulseSpoilTime[3]
  269. ; PVM_SpD13 : PVM_SatPulseDelay2[3]
  270. ;
  271. if(PVM_SatPulseOnOff == 1)
  272. {
  273. define list<frequency> modlis7 = {$PVM_SatPulseOffsetHz}
  274. define delay SpD0 = {$PVM_SpD0}
  275. define delay SpD1 = {$PVM_SpD1}
  276. define delay SpD2 = {$PVM_SpD2}
  277. define delay SpD3 = {$PVM_SpD3}
  278. define delay SpD4 = {$PVM_SpD4}
  279. define delay SpD5 = {$PVM_SpD5}
  280. define delay SpD6 = {$PVM_SpD6}
  281. define delay SpD7 = {$PVM_SpD7}
  282. define delay SpD8 = {$PVM_SpD8}
  283. define delay SpD9 = {$PVM_SpD9}
  284. define delay SpD10 = {$PVM_SpD10}
  285. define delay SpD11 = {$PVM_SpD11}
  286. define delay SpD12 = {$PVM_SpD12}
  287. define delay SpD13 = {$PVM_SpD13}
  288. define pulse SpP0 = {$PVM_SpP0}
  289. define pulse SpP1 = {$PVM_SpP1}
  290. define pulse SpP2 = {$PVM_SpP2}
  291. define pulse SpP3 = {$PVM_SpP3}
  292. # 66 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/SatPulseDef.mod"
  293. }
  294. subroutine SatPulse
  295. # 36 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  296. ;*** FOV Saturation ***
  297. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FovSatDef.mod" 1
  298. ;****************************************************************
  299. ;
  300. ; Copyright (c) 2002-2007
  301. ; Bruker BioSpin MRI GmbH
  302. ; D-76275 Ettlingen, Germany
  303. ;
  304. ; $Id: FovSatDef.mod,v 1.8 2013/08/06 08:09:43 sako Exp $
  305. ;
  306. ; All Rights Reserved
  307. ;
  308. ; FovSat.mod : Declaration of FOV Saturation subroutine
  309. ; call: subr FovSat()
  310. ;
  311. ;****************************************************************
  312. if (PVM_FovSatOnOff == On)
  313. {
  314. define pulse fovSatPul = {$PVM_FovSatRfLength}
  315. define list<frequency> fovSatList = {$PVM_FovSatFL}
  316. define delay fovSatRamp = {$PVM_FovSatRampTime}
  317. define delay fovSatAmp = {$PVM_FovSatAmpEnable}
  318. define delay fovSatGrad = {$PVM_FovSatGradWait}
  319. define delay fovSatSpoil = {$PVM_FovSatSpoilDur}
  320. # 27 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FovSatDef.mod"
  321. ; convert from ms to s
  322. "fovSatRamp = fovSatRamp / 1000"
  323. "fovSatAmp = fovSatAmp / 1000"
  324. "fovSatGrad = fovSatGrad / 1000"
  325. "fovSatSpoil = fovSatSpoil / 1000"
  326. }
  327. subroutine FovSat
  328. # 53 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FovSatDef.mod"
  329. ; backwards compatibility
  330. subroutine SatSlices
  331. # 40 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  332. ;**** Black Blood ****
  333. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/BlBloodDef.mod" 1
  334. ;****************************************************************
  335. ;
  336. ; Copyright (c) 2007
  337. ; Bruker BioSpin MRI GmbH
  338. ; D-76275 Ettlingen, Germany
  339. ;
  340. ; $Id: BlBloodDef.mod,v 1.4 2013/06/04 10:11:30 sako Exp $
  341. ;
  342. ; All Rights Reserved
  343. ;
  344. ; BlBloodDef.mod : Declaration of Black blood subroutine
  345. ;
  346. ; call
  347. ; subr BlBlood(ph0) : Black blood preparation with RF phaselist
  348. ; ph0
  349. ;
  350. ;****************************************************************
  351. if(PVM_BlBloodOnOff)
  352. {
  353. define list<frequency> modlis8 = {$PVM_BlBloodFL}
  354. define delay BlbD0 = {$PVM_BlbD0}
  355. define delay BlbD1 = {$PVM_BlbD1}
  356. define delay BlbD2 = {$PVM_BlbD2}
  357. define delay BlbD3 = {$PVM_BlbD3}
  358. define pulse BlbP0 = {$PVM_BlbP0}
  359. }
  360. subroutine BlBlood
  361. # 44 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  362. ;**** Trigger ****
  363. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerDef.mod" 1
  364. ;****************************************************************
  365. ;
  366. ; Copyright (c) 1998-2003
  367. ; Bruker BioSpin MRI GmbH
  368. ; D-76275 Ettlingen, Germany
  369. ;
  370. ; All Rights Reserved
  371. ;
  372. ; TriggerDef.mod - Trigger Module
  373. ;
  374. ;****************************************************************
  375. if (PVM_TriggerModule == On)
  376. {
  377. define delay trigDur = {$PVM_TriggerDur}
  378. define delay trigDel = {$PVM_TriggerDelay}
  379. ; convert from ms to s
  380. "trigDur = trigDur / 1000"
  381. "trigDel = trigDel / 1000"
  382. }
  383. subroutine Trigger
  384. subroutine TriggerPhase
  385. subroutine TriggerSlice
  386. # 48 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  387. ;**** Trigger Out ****
  388. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerOutDef.mod" 1
  389. ;****************************************************************
  390. ;
  391. ; Copyright (c) 2003
  392. ; Bruker BioSpin MRI GmbH
  393. ; D-76275 Ettlingen, Germany
  394. ;
  395. ; All Rights Reserved
  396. ; $Id: TriggerOutDef.mod,v 1.2 2013/07/05 14:15:26 sako Exp $
  397. ;****************************************************************
  398. if (PVM_TriggerOutOnOff == On)
  399. {
  400. define delay trigOutDur = {$PVM_TriggerOutDur}
  401. define delay trigOutDel = {$PVM_TriggerOutDelay}
  402. ; convert from ms to s
  403. "trigOutDur = trigOutDur / 1000"
  404. "trigOutDel = trigOutDel / 1000"
  405. }
  406. subroutine TriggerOut
  407. subroutine TriggerOutStart
  408. subroutine TriggerOutSlice
  409. subroutine TriggerOutVolume
  410. # 52 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  411. ;**** Outer Volume Suppression ****
  412. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/WsOvsDef.mod" 1
  413. ;****************************************************************
  414. ;
  415. ; Copyright (c) 2005-2007
  416. ; Bruker BioSpin MRI GmbH
  417. ; D-76275 Ettlingen, Germany
  418. ;
  419. ; $Id: WsOvsDef.mod,v 1.6 2013/07/08 08:33:32 josh Exp $
  420. ;
  421. ; All Rights Reserved
  422. ;
  423. ; WsOvsDef.mod: Declaration of water suppression and Outer
  424. ; volume suppression subroutines
  425. ;
  426. ; call
  427. ; subr Ovs(ph0) ; execution of OVS with ph0 phaselist
  428. ;
  429. ; subr WsOvs(ph0,ph1) : execution of OVS with ph0 and WS with ph1
  430. ; phaselist
  431. ;****************************************************************
  432. ;**** OuterVolumeSuppression ****
  433. if(PVM_OvsOnOff == 1)
  434. {
  435. define list<frequency> Ovslist={$PVM_OvsFrequencyList}
  436. define delay OvsD0 = {$PVM_OvsD0}
  437. define delay OvsD1 = {$PVM_OvsD1}
  438. define pulse OvsP0 = {$PVM_OvsP0}
  439. }
  440. subroutine Ovs
  441. # 59 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/WsOvsDef.mod"
  442. ;*** WaterSuppression Module with OVS ****
  443. if (PVM_WsMode)
  444. {
  445. define list<frequency> Wslist={$PVM_WsOffsetHz}
  446. define pulse WsP0 = {$PVM_WsP0}
  447. define pulse WsP1 = {$PVM_WsP1}
  448. define pulse WsP2 = {$PVM_WsP2}
  449. define delay WsNp0
  450. "WsNp0 = WsP0"
  451. define delay WsNp1
  452. "WsNp1 = WsP1"
  453. define delay WsNp2
  454. "WsNp2 = WsP2"
  455. define list<delay> ChD1={$PVM_ChppgD1}
  456. define list<delay> ChD2={$PVM_ChppgD2}
  457. define list<delay> VpD1={$PVM_VpppgD1}
  458. define list<delay> VpD2={$PVM_VpppgD2}
  459. # 79 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/WsOvsDef.mod"
  460. }
  461. subroutine WsOvsMain
  462. subroutine WsOvs
  463. subroutine Ws
  464. # 56 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  465. ;**** Solvent Suppression module ****
  466. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/WsSatDef.mod" 1
  467. ;******************************************************************
  468. ;
  469. ; Copyright (c) 2002-2007
  470. ; Bruker BioSpin MRI GmbH
  471. ; D-76275 Ettlingen, Germany
  472. ;
  473. ; $Id: WsSatDef.mod,v 1.11 2013/08/23 08:37:06 josh Exp $
  474. ;
  475. ; All Rights Reserved
  476. ;
  477. ; WsSatDef.mod - Declaration of water suppression and FOV saturation
  478. ; subroutines
  479. ; call
  480. ; subr WsSat(ph0) : execution of WS with ph0 phaselist and
  481. ; FOV saturation (as passed as argument)
  482. ;
  483. ;*******************************************************************
  484. ; Definitions for WsPpgParams are included in WsOvsDef.mod
  485. subroutine WsSatMain
  486. subroutine WsSat
  487. # 60 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  488. ;**** Selective Inversion Recovery ****
  489. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/SelSliceIrDef.mod" 1
  490. ;****************************************************************
  491. ;
  492. ; Copyright (c) 2007
  493. ; Bruker BioSpin MRI GmbH
  494. ; D-76275 Ettlingen, Germany
  495. ;
  496. ; $Id: SelSliceIrDef.mod,v 1.5 2013/06/04 10:11:30 sako Exp $
  497. ;
  498. ; All Rights Reserved
  499. ;
  500. ; SelSliceIrDef.mod : declaration of slice Selective Inversion
  501. ; Recovery subroutine
  502. ; call SliceSelIr()
  503. ;
  504. ;
  505. ;****************************************************************
  506. if(PVM_SelIrOnOff)
  507. {
  508. define list<frequency> IrFL = {$PVM_SelIrFL}
  509. define delay IrD0 = {$PVM_SelIrD0}
  510. define delay IrD1 = {$PVM_SelIrD1}
  511. define delay IrD2 = {$PVM_SelIrD2}
  512. define delay IrD3 = {$PVM_SelIrD3}
  513. define delay IrD4 = {$PVM_SelIrD4}
  514. # 28 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/SelSliceIrDef.mod"
  515. define pulse IrP0 = {$PVM_SelIrP0}
  516. define loopcounter IrL0 = {$PVM_SelIrL0}
  517. }
  518. subroutine SliceSelIr
  519. # 64 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  520. ;**** Tagging ****
  521. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TagDef.mod" 1
  522. ;****************************************************************
  523. ;
  524. ; Copyright (c) 2007
  525. ; Bruker BioSpin MRI GmbH
  526. ; D-76275 Ettlingen, Germany
  527. ;
  528. ; $Id: TagDef.mod,v 1.6 2013/06/05 12:55:35 sako Exp $
  529. ;
  530. ; All Rights Reserved
  531. ;
  532. ; TagDef.mod : Declaration of tagging subroutine
  533. ; call
  534. ; subr Tagging()
  535. ;
  536. ;****************************************************************
  537. if(PVM_TaggingOnOff)
  538. {
  539. define list<frequency> taggfreq={$PVM_TaggingFL}
  540. define delay TaggD0 = {$PVM_TaggingD0}
  541. define delay TaggD1 = {$PVM_TaggingD1}
  542. define delay TaggD2 = {$PVM_TaggingD2}
  543. define delay TaggD3 = {$PVM_TaggingD3}
  544. define delay TaggD4 = {$PVM_TaggingD4}
  545. define delay TaggD5 = {$PVM_TaggingD5}
  546. # 28 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TagDef.mod"
  547. define pulse TaggP0 = {$PVM_TaggingP0}
  548. define loopcounter TaggL0 = {$PVM_TaggingLp0}
  549. }
  550. subroutine Tagging
  551. # 68 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  552. ;**** Noe ****
  553. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/NoeDef.mod" 1
  554. ;****************************************************************
  555. ;
  556. ; Copyright (c) 2007
  557. ; Bruker BioSpin MRI GmbH
  558. ; D-76275 Ettlingen, Germany
  559. ;
  560. ; $Id: NoeDef.mod,v 1.1 2007/07/02 14:26:00 mawi Exp $
  561. ;
  562. ; All Rights Reserved
  563. ;
  564. ; NoeDef.mod: Declaration of Nuclear Overhouser Enhancement
  565. ; subroutine
  566. ; call
  567. ; subr Noe()
  568. ;
  569. ;****************************************************************
  570. if(PVM_NoeOnOff == On)
  571. {
  572. define delay NoeD0 = {$PVM_NoeD0}
  573. define delay NoeD1 = {$PVM_NoeD1}
  574. }
  575. subroutine Noe
  576. # 72 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  577. ;**** Evolution ****
  578. # 1 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/EvolutionDef.mod" 1
  579. ;****************************************************************
  580. ;
  581. ; Copyright (c) 1998-2003
  582. ; Bruker BioSpin MRI GmbH
  583. ; D-76275 Ettlingen, Germany
  584. ;
  585. ; All Rights Reserved
  586. ;
  587. ; EvolutionDef.mod - Evolution Module
  588. ;
  589. ;****************************************************************
  590. if (PVM_EvolutionOnOff == On)
  591. {
  592. define delay evolDel = {$PVM_EvolutionDelay}
  593. define list<delay> evolTime = {$PVM_EvolutionTime}
  594. }
  595. subroutine Evolution
  596. # 76 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/PrepModulesHead.mod" 2
  597. # 30 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg" 2
  598. subr FlowSatInit
  599. ;EXEC_begin FlowSatInit FlowSatInit()
  600. # 55 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  601. if(PVM_InFlowSatOnOff == 1)
  602. {
  603. 40u modlis4.res
  604. 10u flowSatGrad.res
  605. }
  606. ;EXEC_end FlowSatInit
  607. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  608. # 34 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  609. dccorr \n \n if (CONFIG_preemp_type == GREAT_60) \n { \n if (CONFIG_instrument_type != Avance_III) \n { \n 500m setnmr0|34|33|32 \n } \n else \n { \n 200u setnmr0|34|33|32 \n } \n } \n if (CONFIG_preemp_type == DPP_with_SW_Blanking) \n {\n 10u ctrlgrad 0 \n 10u grad{(0)|(0)|(0) } \n 200u setnmr0|34|33|32 \n }\n if (CONFIG_preemp_type == DPP) \n { \n 10u groff \n }
  610. # 39 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  611. grad_zero_for_gs <ACQ_spatial_phase_1, ACQ_spatial_phase_2>
  612. 10u recph ph1
  613. start, 10u fq8(receive):f1
  614. # 45 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  615. if(PVM_BlBloodOnOff)
  616. {
  617. subr TriggerPhase
  618. ;EXEC_begin TriggerPhase TriggerPhase()
  619. # 45 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerDef.mod"
  620. if (PVM_TriggerMode == per_PhaseStep)
  621. {
  622. ;EXEC_begin Trigger Trigger()
  623. # 23 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerDef.mod"
  624. if (PVM_TriggerModule == On)
  625. {
  626. trigDur setnmr3|6
  627. if (CONFIG_instrument_type == Avance_III)
  628. {
  629. trigDur trignl1
  630. trigDur trigpe3
  631. }
  632. else
  633. {
  634. trigDur
  635. trigDur trigpl1
  636. }
  637. trigDur setnmr3^6
  638. trigDel
  639. }
  640. ;EXEC_end Trigger
  641. }
  642. ;EXEC_end TriggerPhase
  643. # 47 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  644. }
  645. subr BlBlood
  646. ;EXEC_begin BlBlood BlBlood(phase ph0)
  647. # 30 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/BlBloodDef.mod"
  648. if(PVM_BlBloodOnOff)
  649. {
  650. 10u modlis8:f1
  651. 10u
  652. BlbD3 gatepulse 1
  653. (BlbP0:sp46 ph0):f1
  654. BlbD2 modlis8.inc grad_ramp{0, 0, PVM_BlbGrad}
  655. 10u
  656. 10u modlis8:f1
  657. 10u
  658. BlbD3 gatepulse 1
  659. (BlbP0:sp46 ph0):f1
  660. BlbD2 grad_off
  661. BlbD1 modlis8.inc grad_ramp{0, 0, PVM_BlBloodSpoilAmp}
  662. BlbD0 grad_off
  663. }
  664. ;EXEC_end BlBlood
  665. # 49 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  666. subr TriggerPhase
  667. ;EXEC_begin TriggerPhase TriggerPhase()
  668. # 45 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerDef.mod"
  669. if (PVM_TriggerMode == per_PhaseStep)
  670. {
  671. ;EXEC_begin Trigger Trigger()
  672. # 23 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerDef.mod"
  673. if (PVM_TriggerModule == On)
  674. {
  675. trigDur setnmr3|6
  676. if (CONFIG_instrument_type == Avance_III)
  677. {
  678. trigDur trignl1
  679. trigDur trigpe3
  680. }
  681. else
  682. {
  683. trigDur
  684. trigDur trigpl1
  685. }
  686. trigDur setnmr3^6
  687. trigDel
  688. }
  689. ;EXEC_end Trigger
  690. }
  691. ;EXEC_end TriggerPhase
  692. # 51 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  693. subr SliceSelIr
  694. ;EXEC_begin SliceSelIr SliceSelIr()
  695. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/SelSliceIrDef.mod"
  696. if(PVM_SelIrOnOff == On)
  697. {
  698. 50u IrFL.res
  699. irloop19, 10u IrFL :f1
  700. IrD4 grad_ramp{0, 0, PVM_SelIrGradAmp*100}
  701. IrD3 gatepulse 1
  702. (IrP0:sp42 ph0):f1
  703. IrD4 grad_off
  704. IrD0 grad_matrix.inc IrFL.inc
  705. lo to irloop19 times IrL0
  706. IrD2 grad_ramp{0, 0, PVM_SelIrSpoilAmp}
  707. IrD4 grad_off IrFL.res
  708. IrD1 grad_matrix.res
  709. }
  710. ;EXEC_end SliceSelIr
  711. # 52 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  712. subr Tagging
  713. ;EXEC_begin Tagging Tagging()
  714. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TagDef.mod"
  715. if(PVM_TaggingOnOff)
  716. {
  717. 1u taggfreq.res
  718. if(PVM_TaggingMode == DANTE)
  719. {
  720. 10u taggfreq:f1
  721. TaggD4 grad_ramp{PVM_TaggingGradAmp1, PVM_TaggingGradAmp2,0}
  722. TaggD5 gatepulse 1
  723. (TaggP0:sp45):f1
  724. tag120,TaggD2
  725. (TaggP0:sp45):f1
  726. lo to tag120 times TaggL0
  727. TaggD4 grad_off
  728. if(PVM_TaggingDir == Tagging_grid)
  729. {
  730. TaggD1
  731. taggfreq.inc
  732. 10u taggfreq:f1
  733. TaggD4 grad_ramp{PVM_TaggingGradAmp3,PVM_TaggingGradAmp4,0}
  734. (TaggP0:sp45):f1
  735. tag221,TaggD2
  736. (TaggP0:sp45):f1
  737. lo to tag221 times TaggL0
  738. TaggD4 grad_off
  739. }
  740. }
  741. if(PVM_TaggingMode == SPAMM)
  742. {
  743. 10u taggfreq:f1
  744. TaggD5 gatepulse 1
  745. (TaggP0:sp45):f1
  746. tag322,TaggD2 grad_ramp{PVM_TaggingGradAmp1,PVM_TaggingGradAmp2,0}
  747. TaggD4 grad_off
  748. (TaggP0:sp45):f1
  749. lo to tag322 times TaggL0
  750. if(PVM_TaggingDir == Tagging_grid)
  751. {
  752. taggfreq.inc
  753. 10u taggfreq:f1
  754. (TaggP0:sp45):f1
  755. tag423,TaggD2 grad_ramp{PVM_TaggingGradAmp3,PVM_TaggingGradAmp4,0}
  756. TaggD4 grad_off
  757. (TaggP0:sp45):f1
  758. lo to tag423 times TaggL0
  759. }
  760. }
  761. 10u
  762. TaggD3 grad_ramp{PVM_TaggingSpoilAmp,0,0}
  763. TaggD4 grad_off
  764. TaggD0
  765. }
  766. ;EXEC_end Tagging
  767. # 54 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  768. # 56 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  769. ;----------------------------------start of the main loop ----------
  770. slice, 5u
  771. subr TriggerSlice
  772. ;EXEC_begin TriggerSlice TriggerSlice()
  773. # 53 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerDef.mod"
  774. if (PVM_TriggerMode == per_Slice)
  775. {
  776. ;EXEC_begin Trigger Trigger()
  777. # 23 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/TriggerDef.mod"
  778. if (PVM_TriggerModule == On)
  779. {
  780. trigDur setnmr3|6
  781. if (CONFIG_instrument_type == Avance_III)
  782. {
  783. trigDur trignl1
  784. trigDur trigpe3
  785. }
  786. else
  787. {
  788. trigDur
  789. trigDur trigpl1
  790. }
  791. trigDur setnmr3^6
  792. trigDel
  793. }
  794. ;EXEC_end Trigger
  795. }
  796. ;EXEC_end TriggerSlice
  797. # 58 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  798. ;----------------------------------handle dummy scans --------------
  799. if( l5 >= 1) ;dummy scans
  800. {
  801. dummy, 30u
  802. ;----------------------------------preparation modules -------------
  803. subr FlowSat
  804. ;EXEC_begin FlowSat FlowSat()
  805. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  806. if(PVM_InFlowSatOnOff == 1)
  807. {
  808. flow124, SfD0 modlis4:f1 grad_ramp{0, 0, flowSatGrad*100}
  809. SfD1 gatepulse 1
  810. (SfP0:sp44):f1
  811. SfD2 grad_ramp{0, 0, PVM_InFlowSatSpoilGrad}
  812. SfD0 grad_off
  813. }
  814. ;EXEC_end FlowSat
  815. # 65 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  816. subr FovSat
  817. ;EXEC_begin FovSat FovSat()
  818. # 34 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FovSatDef.mod"
  819. if (PVM_FovSatOnOff == On)
  820. {
  821. PVM_FovSatGrad.res
  822. fovSatList.res
  823. fov25, fovSatRamp grad_ramp<object_coord>{PVM_FovSatGrad[]}
  824. fovSatAmp fovSatList:f1 gatepulse 1
  825. (fovSatPul :sp41):f1
  826. fovSatSpoil fovSatList.inc grad_ramp{0, 0, PVM_FovSatSpoilAmp}
  827. PVM_FovSatGrad.inc
  828. lo to fov25 times PVM_FovSatNSlices
  829. fovSatRamp grad_off
  830. fovSatGrad
  831. }
  832. ;EXEC_end FovSat
  833. # 66 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  834. subr MagTrans
  835. ;EXEC_begin MagTrans MagTrans()
  836. # 33 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MagTransDef.mod"
  837. if(PVM_MagTransOnOff)
  838. {
  839. 50u modlis3.res
  840. MtD1
  841. mtc26,MtD2 modlis3:f1 gatepulse 1
  842. MtP0:sp43:f1
  843. lo to mtc26 times MtLp0
  844. MtD3 grad_ramp{0, 0, PVM_MagTransSpoiler}
  845. MtD0 groff
  846. 100u
  847. }
  848. ;EXEC_end MagTrans
  849. # 67 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  850. subr FatSup
  851. ;EXEC_begin FatSup FatSup()
  852. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FatSupDef.mod"
  853. if (PVM_FatSupPerform == Yes)
  854. {
  855. fatSupAmp fatSupList:f1 gatepulse 1
  856. (fatSupPul :sp40):f1
  857. fatSupSpoil grad_shape {0, 0, PVM_FatSupSpoilAmp}
  858. fatSupRamp grad_off
  859. fatSupGrad
  860. }
  861. ;EXEC_end FatSup
  862. # 68 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  863. d6 grad_ramp{0, 0, g9}
  864. ;----------------------------------slice selection------------------
  865. d3 grad_ramp{0, 0, g0} fq1list:f1
  866. d8 gatepulse 1
  867. (p0:sp0 phaselist):f1
  868. d4 grad_off
  869. ;--------------------slice rephase, read dephase, phase encoding----
  870. d10 grad_ramp{g2, ACQ_spatial_phase_1*g3, g1+ACQ_spatial_phase_2*g4}
  871. d2 grad_off
  872. ;----------------------------------frequency encoding---------------
  873. d3 grad_ramp{g5, 0, 0}
  874. aqq
  875. ;----------------------------------read spoiler + phase encoding----
  876. d11 grad_ramp{g6, ACQ_spatial_phase_1*g7, ACQ_spatial_phase_2*g8} ; 2nd and 3rd dims
  877. d12 grad_ramp{g6, 0, 0}
  878. d3 grad_off
  879. d0
  880. 1u phaselist.inc ;phase list for RF spoiling
  881. lo to dummy times l5
  882. }
  883. # 91 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  884. acquisition, 10u
  885. 20u reload B0
  886. ;----------------------------------preparation modules -------------
  887. subr FlowSat
  888. ;EXEC_begin FlowSat FlowSat()
  889. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  890. if(PVM_InFlowSatOnOff == 1)
  891. {
  892. flow127, SfD0 modlis4:f1 grad_ramp{0, 0, flowSatGrad*100}
  893. SfD1 gatepulse 1
  894. (SfP0:sp44):f1
  895. SfD2 grad_ramp{0, 0, PVM_InFlowSatSpoilGrad}
  896. SfD0 grad_off
  897. }
  898. ;EXEC_end FlowSat
  899. # 94 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  900. subr FovSat
  901. ;EXEC_begin FovSat FovSat()
  902. # 34 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FovSatDef.mod"
  903. if (PVM_FovSatOnOff == On)
  904. {
  905. PVM_FovSatGrad.res
  906. fovSatList.res
  907. fov28, fovSatRamp grad_ramp<object_coord>{PVM_FovSatGrad[]}
  908. fovSatAmp fovSatList:f1 gatepulse 1
  909. (fovSatPul :sp41):f1
  910. fovSatSpoil fovSatList.inc grad_ramp{0, 0, PVM_FovSatSpoilAmp}
  911. PVM_FovSatGrad.inc
  912. lo to fov28 times PVM_FovSatNSlices
  913. fovSatRamp grad_off
  914. fovSatGrad
  915. }
  916. ;EXEC_end FovSat
  917. # 95 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  918. subr MagTrans
  919. ;EXEC_begin MagTrans MagTrans()
  920. # 33 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/MagTransDef.mod"
  921. if(PVM_MagTransOnOff)
  922. {
  923. 50u modlis3.res
  924. MtD1
  925. mtc29,MtD2 modlis3:f1 gatepulse 1
  926. MtP0:sp43:f1
  927. lo to mtc29 times MtLp0
  928. MtD3 grad_ramp{0, 0, PVM_MagTransSpoiler}
  929. MtD0 groff
  930. 100u
  931. }
  932. ;EXEC_end MagTrans
  933. # 96 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  934. subr FatSup
  935. ;EXEC_begin FatSup FatSup()
  936. # 32 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FatSupDef.mod"
  937. if (PVM_FatSupPerform == Yes)
  938. {
  939. fatSupAmp fatSupList:f1 gatepulse 1
  940. (fatSupPul :sp40):f1
  941. fatSupSpoil grad_shape {0, 0, PVM_FatSupSpoilAmp}
  942. fatSupRamp grad_off
  943. fatSupGrad
  944. }
  945. ;EXEC_end FatSup
  946. # 97 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  947. d6 grad_ramp{0, 0, g9}
  948. ;----------------------------------slice selection------------------
  949. d3 grad_ramp{0, 0, g0} fq1list:f1
  950. d8 gatepulse 1
  951. (p0:sp0 phaselist):f1
  952. d4 grad_off
  953. ;--------------------slice rephase, read dephase, phase encoding----
  954. d10 grad_ramp{g2, ACQ_spatial_phase_1*g3, g1+ACQ_spatial_phase_2*g4}
  955. d2 grad_off
  956. ;----------------------------------frequency encoding---------------
  957. denab grad_ramp{g5, 0, 0}
  958. rdepa \n deparx adc syrec fqatofqb:f1 \n derxadc phaselist:r \n deadc ;ph1 is used (see recph)
  959. aqq cpdngs17:f1
  960. ;----------------------------------read spoiler + phase encoding----
  961. d11 grad_ramp{g6, ACQ_spatial_phase_1*g7, ACQ_spatial_phase_2*g8} ; 2nd and 3rd dims
  962. d12 grad_ramp{g6, 0, 0}
  963. d3 grad_off
  964. d0 eoscnp
  965. 1u phaselist.inc ;phase list for RF spoiling
  966. ;----------------------------------2d loop--------------------------
  967. ACQ_spatial_phase_1.inc
  968. lo to acquisition times l1
  969. ;------------------------slice and movie loop-----------------------
  970. if(NI > 1)
  971. {
  972. subr FlowSatInc
  973. ;EXEC_begin FlowSatInc FlowSatInc()
  974. # 45 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FlowSatDef.mod"
  975. if(PVM_InFlowSatOnOff == 1)
  976. {
  977. 5u modlis4.inc
  978. }
  979. ;EXEC_end FlowSatInc
  980. # 124 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  981. 2.5u grad_matrix.inc fq1list.inc
  982. lo to start times NI
  983. }
  984. ;----------------------------------averaging loop-------------------
  985. if(NA > 1)
  986. {
  987. lo to start times NA
  988. }
  989. d20
  990. ;----------------------------------3d loop--------------------------
  991. ACQ_spatial_phase_2.inc
  992. lo to start times l2
  993. 2.5u
  994. lo to start times NAE
  995. 2.5u
  996. subr Evolution
  997. ;EXEC_begin Evolution Evolution()
  998. # 19 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/EvolutionDef.mod"
  999. if (PVM_EvolutionOnOff == On)
  1000. {
  1001. if (PVM_EvolutionMode == Variable_Delay)
  1002. {
  1003. evolTime
  1004. evolTime.inc
  1005. }
  1006. else
  1007. {
  1008. evolDel
  1009. }
  1010. }
  1011. ;EXEC_end Evolution
  1012. # 140 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1013. 2.5u
  1014. lo to start times NR
  1015. if (ACQ_scan_type != Scan_Experiment) \n{ \n goto start \n}
  1016. exit
  1017. # 147 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"
  1018. ph0 = 0
  1019. ph1 = 0
  1020. # 153 "/opt/PV6.0.1/exp/stan/nmr/lists/pp/FLASHAngio.ppg"