Changeset 38280 for trunk/psModules/src/objects/models/fwhm.sh
- Timestamp:
- May 15, 2015, 1:56:42 PM (11 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/objects/models/fwhm.sh (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/models/fwhm.sh
r36857 r38280 110 110 $Zhm = 1.0 111 111 $FWHM = 2*sqrt(2) 112 echo $K : $Zhm : $FWHM112 fprintf "%4.2f, // %4.1f, %4.2f" $FWHM $K $Zhm 113 113 return 114 114 end … … 121 121 122 122 set f = $K*z + z^1.667 - 1.0 123 set dfdz = $K + z^0.667123 set dfdz = $K + 1.677*z^0.667 124 124 125 125 #lim -n 0 z f; clear; box; plot z f 126 126 #lim -n 1 z dfdz; clear; box; plot z dfdz 127 127 128 $nZ0 = 0 129 $nZ1 = 5 / $dz 130 131 $Zg = 0.5*(z[$nZ0] + z[$nZ1]) 132 $nZg = int($Zg / $dz) 133 $dZ = 1.0 134 135 for i 0 10 136 $Fg = f[$nZg] 137 $dFdz_g = dfdz[$nZg] 138 139 $dZ = $Fg / $dFdz_g 140 141 # echo $Zg $Fg $dZ $dFdz_g 142 143 $Zg -= $dZ 144 $Zg = max ($Zg , 0) 145 $nZg = int($Zg / $dz) 128 # these just need to bound the solution 129 $nZ0 = 0.5 / $dz 130 $nZ1 = 5.0 / $dz 131 132 $Zg = 0.5*(z[$nZ0] + z[$nZ1]) 133 $nZg = int($Zg / $dz) 134 $dZ = 1.0 135 136 for i 0 10 137 # interpolate between $nZg and $nZg + 1 138 $Fg = f[$nZg] + ($Zg - $nZg*$dz)*(f[$nZg+1] - f[$nZg])/$dz 139 $dFdz_g = dfdz[$nZg] + ($Zg - $nZg*$dz)*(dfdz[$nZg+1] - dfdz[$nZg])/$dz 140 141 # $Fg = f[$nZg] 142 # $dFdz_g = dfdz[$nZg] 143 144 $dZ = $Fg / $dFdz_g 145 146 # echo -no-return $Zg $Fg $dZ $dFdz_g 147 148 $Zg -= $dZ 149 150 $Zg = max ($Zg , 0) 151 $Zg = min ($Zg , z[-2]) 152 $nZg = int($Zg / $dz) 153 154 # echo ": $Zg $nZg" 146 155 end 147 156 # echo $Zg $Fg $dZ $dFdz_g … … 149 158 $FWHM = 2*sqrt(2*$Zg) 150 159 151 echo $K : $Zhm : $FWHM160 fprintf "%4.2f, // %4.1f, %4.2f" $FWHM $K $Zhm 152 161 end 153 162 … … 164 173 $Zhm = 1.0 165 174 $FWHM = 2*sqrt(2) 166 echo $K : $Zhm : $FWHM175 fprintf "%4.2f, // %4.1f, %4.2f" $FWHM $K $Zhm 167 176 return 168 177 end … … 175 184 176 185 set f = $K*z + z^2.25 - 1.0 177 set dfdz = $K + z^1.25186 set dfdz = $K + 2.25*z^1.25 178 187 179 188 #lim -n 0 z f; clear; box; plot z f … … 188 197 189 198 for i 0 10 190 $Fg = f[$nZg] 191 $dFdz_g = dfdz[$nZg] 199 # interpolate between $nZg and $nZg + 1 200 $Fg = f[$nZg] + ($Zg - $nZg*$dz)*(f[$nZg+1] - f[$nZg])/$dz 201 $dFdz_g = dfdz[$nZg] + ($Zg - $nZg*$dz)*(dfdz[$nZg+1] - dfdz[$nZg])/$dz 202 203 # $Fg = f[$nZg] 204 # $dFdz_g = dfdz[$nZg] 192 205 193 206 $dZ = $Fg / $dFdz_g … … 197 210 $Zg -= $dZ 198 211 $Zg = max ($Zg , 0) 212 $Zg = min ($Zg , z[-2]) 199 213 $nZg = int($Zg / $dz) 200 214 end … … 203 217 $FWHM = 2*sqrt(2*$Zg) 204 218 205 echo $K : $Zhm : $FWHM219 fprintf "%4.2f, // %4.1f, %4.2f" $FWHM $K $Zhm 206 220 end 207 221 208 222 macro fwhm.trend 223 if ($0 != 4) 224 echo "USAGE: fwhm.trend (model) (struct) (output)" 225 echo " model: pgauss, rgauss, ps1v1, qgauss" 226 break 227 end 209 228 210 229 delete fwhm_v k_v 211 230 212 for k 0 20 1.0 213 find.fwhm.qgauss $k 231 $SAVE = 0 232 if ($SAVE) exec rm -f $3 233 if ($SAVE) output $3 234 235 $minK = -1 236 $maxK = 20 237 $delK = 0.2 238 239 if ($SAVE) echo "# define FWHM_BIN $delK" 240 if ($SAVE) echo "# define MIN_FWHM_BIN $minK" 241 if ($SAVE) echo "# define N_FWHM_BIN {int(($maxK - $minK) / $delK) + 1}" 242 if ($SAVE) echo "static float $2[] = \{" 243 244 for k $minK $maxK $delK -incl 245 find.fwhm.$1 $k 214 246 concat $k k_v 215 247 concat $FWHM fwhm_v 216 248 end 217 end 218 249 if ($SAVE) echo "\}@" 250 if ($SAVE) output stdout 251 252 lim k_v fwhm_v; clear; box; plot k_v fwhm_v -pt 10 -sz 1.0 253 end 254
Note:
See TracChangeset
for help on using the changeset viewer.
