Rotational Echo Adiabatic Passage DOuble Resonance, SIMPSON 4.1.1 fitting program
This SIMPSON fitting program extracts the value of the heteronuclear dipole coupling D from reapdorPAl,1.fid.
spinsys {
channels 31P 27Al
nuclei 31P 27Al
dipole 1 2 -439 0 0 0
quadrupole 2 2 2.8e6 0 0 0 0
}
par {
variable index 1
np 32
spin_rate 10000
proton_frequency 500e6
start_operator I1x
detect_operator I1p
method direct
crystal_file rep320
gamma_angles 25
sw spin_rate/2
variable tsw 1e6/sw
verbose 0
variable rfx 50000
variable rfy 50000
variable t180x 0.5e6/rfx
variable tadia 0.3e6/spin_rate
variable tr1 0.5e6/spin_rate-t180x
variable tr2 0.5e6/spin_rate-0.5*t180x-0.5*tadia
}
proc pulseq {} {
global par
reset
delay $par(tr1)
pulse $par(t180x) $par(rfx) x 0 x
delay $par(tr1)
pulse $par(t180x) $par(rfx) y 0 x
store 1
reset
acq
delay $par(tr1)
pulse $par(t180x) $par(rfx) x 0 x
delay $par(tr2)
pulse $par(tadia) 0 x $par(rfy) x
delay $par(tr2)
pulse $par(t180x) $par(rfx) x 0 x
delay $par(tr1)
pulse $par(t180x) $par(rfx) y 0 x
store 2
acq -x
for {set i 2} {$i < $par(np)} {incr i} {
reset
prop 1
prop 2
prop 1
store 2
acq -x
}
}
proc progress {} {
global par
if ![info exists par(progress)] { set par(progress) -1 }
incr par(progress)
set str {"* " \
" * " \
" * " \
" *" \
" * " \
" * "}
return [lindex $str [expr $par(progress)%6]]
}
lappend ::auto_path ./opt
package require opt
proc rms {{save 0}} {
global par
# simulate REAPDOR curve
set f [fsimpson [list \
[list dipole_1_2_aniso $opt::dipole12]]]
# scale REAPDOR curve
fautoscale $f $par(exp) -re
set rms [frms $f $par(exp) -re]
if {$save == 1} {
puts [format " \[%s\] %10.3f" \
FINAL $rms]
# write simulated REAPDOR curve to disc
fsave $f $par(name),$par(index).fid
} else {
puts [format " \[%s\] %10.3f %10.3f\015" \
[progress] $opt::dipole12 $rms]
}
flush stdout
funload $f
return $rms
}
proc main {} {
global par mn
set par(exp) [fload reapdorPAl,1.fid]
opt::function rms
puts " Progress dipole12 rms"
opt::newpar dipole12 -200 -20 -1 -1500
opt::minimize 1.0e-6
rms 1
}
