text:
Subscribe to Our Blog
Receive updates from our team as we share application notes, customer spotlights, educational tools, spectroscopy how-to's, and more.
Several cannabinoids were detected at parts-per-million (ppm) levels with surface enhanced Raman spectroscopy (SERS).
The cannabinoid profile of cannabis-based products must be determined to support label claims and assure product quality. Traditionally, HPLC-MS measurements reveal THC, THCA, CBD, and CBDA quantities, as well as trace cannabinoids such as CBG and CBGA.1 However, HPLC-MS has certain drawbacks that can be avoided with other techniques such as Raman spectroscopy, which offers sensitivity, selectivity, reduced instrument size, non-destructive sampling, and simple implementation. In this study, we utilize SERS, a variant of Raman spectroscopy, to enable trace level detection of these cannabinoids.
The following analytical grade standards were diluted to 10 ppm in their respective solvents: cannabidiol (CBD), cannabidiolic acid (CBDA), tetrahydrocannabinol (THC), tetrahydrocannabinolic acid (THCA), cannabigerol (CBG), and cannabigerolic acid (CBGA).
Microliter volumes were pipetted into colloidal solutions of gold nanoparticles, and measured with the Ocean Optics QE Pro-Raman+ spectrometer, at 3 seconds integration time, after interrogation with a 785 nm laser at 350 mW laser power.
The SERS spectra of each cannabinoid are presented in Figure 1. Even though there are only slight structural differences between these cannabinoid molecules (i.e., THC and THCA differ by a carboxylic acid group, and THC and CBD differ by a hydroxyl group), the SERS spectra show stark differences due to certain functional groups giving different Raman shifts.
Figure 1: SERS spectra of 10 ppm (a) CBDA, (b) CBD, (c) CBGA, (d) CBG, (e) THCA, and (f) THC.
We present a method to detect trace levels of cannabinoids that utilizes the unique optical properties of gold nanoparticles coupled with surface enhanced Raman spectroscopy
 Yu, B. Ge, M., Li, P., Xie, Q., and Yang, L. Talanta 2019, 191, 1–10.


text:
The Varying Permeability Model: A Decompression Razor
The Varying Permeability Model: A Decompression Razor
BY DR. ERIC MAIKEN
DETAILS OF THE VPM
Microscopic bubble nuclei have been observed in many types of aqueous (water-containing) media under equilibrium conditions. The VPM therefore presumes that even prior to beginning a dive, with the non-equilibrium cycle of compression and decompression, these nuclei also exist in a diver's tissues. VPM decompression procedures are designed to eliminate bubbles that grow from these seed nuclei as well as gas that is dissolved in the diver's tissues. The term "Variable Permeability" refers to the different responses of bubble nuclei to pressurizations encountered on dives deeper than approximately 9 ATA, compared to shallower dives. On deep dives, nuclei are thought to become impermeable to the flow of gas, and the VPM generates more conservative tables for these deeper dives. The VPM postulates that as a diver ascends, nuclei larger than a specific "critical" size, which is related to the maximum dive depth, descent rate, and breathing mix, will grow upon decompression. The VPM aims to minimize the total volume of these growing bubbles by keeping the external pressure large (through deep stops), and by keeping the inspired inert gas partial pressures low during decompression. The VPM uses an iterative procedure to refine decompression schedules. In each iteration step, a new ascent schedule is calculated. The total decompression time is fed back into the calculation to revise the critical gradients, and a more liberal schedule is produced at each step. This process repeats until the decompression time converges to a length that corresponds to the formation of the maximal allowable amount of free gas bubbles. The total decompression time depends on the contributions of the magnitude of the growth gradient and the time that the gradient acts to drive bubble growth. After a short dive, the tissues will off-gas rapidly to circulation. Hence, because the time that the gradient G acts is small, the magnitude of G can be increased in each VPM iteration to allow shorter and shallower stops. So, for short or no deco dives, the first and last iterations produce substantially different ascent schedules.
A divergence of the VPM from conventional calculations is in the details of how a diver's ascent is controlled. Rather than setting predefined limits (like M-values) on the maximum pressure ratio between gas dissolved in tissues and ambient pressure, ascents are limited by gradients that depend on specific details of a particular dive, which include factors such as depth, gas mix, and descent rate. The objective is to control the volume of gas that evolves in the body due to the inevitable formation of bubbles. As long as this volume is kept smaller than a certain "critical volume," it is presumed that a diver's body has the ability to tolerate the bubbles. If the volume of bubbles exceeds the critical volume, then the diver is at risk of developing DCI.VPM decompression computations handle the inand out-gassing of dissolved gas in a set of compartments the same way as standard dissolved gas algorithms. However, the VPM does not associate individual compartments with specific organs or tissues in the body. Parallel compartments with exponential half-times ranging from minutes to hours are used to model the body's range of time scales governing the uptake and elimination of dissolved inert gas. This is simply a method for replacing the complex reality of human metabolism under pressure with a tractable set of metrics that span the space of the body's response time scales to pressurization and depressurization. There has been a tendency for vendors of commercial decompression software to market a large set (say, more than 16) of compartments as an enhancement to their products. This dubious exercise is counter to the responsible modeler's objective of minimizing the free parameters that relate a system's responses to measurable inputs. Whether you abide by Ocam's razor, Hogarth, or K.I.S.S., a deco modeler's guiding principle should be to eliminate arbitrary and unnecessary parameters. Towards these ends, the VPM differs from conventional dissolved gas algorithms by replacing the ascent-limiting matrix of M, or a-b values, with only five constants for mixed gas single dives, and seven for repetitive dives. These quantities correspond to measurable physical and physiological quantities, and are used to limit ascents by specifying critical over pressure gradients. In contrast to conventional M-values, which have no direct physical interpretation, gradients are related to linear gas transport and to the rate of bubble-growth via the diffusion equation.
BENCHMARKING THE VPM
If an ascent made with a closed oxygen window is compared to an ascent made with high ppO2 deco mixes, then not only are the stops with high ppO2 mix shortened, but so also are the preceding deeper stop times for the low ppO2 ascent. There is no analogy to this effect in a supersaturation calculation (where only the stop times when the mix is breathed are reduced). This is an artifact of the iterative procedure used in the VPM model. Because the dissolved inert gas will wash out faster when high ppO2 mixes are used in shallow stops, the total deco time is reduced-- thereby reducing all of the stop times. Practically, it is prudent to plan deco only for gas supplies that can be guaranteed to be with the diver during ascent.Oxygen toxicity must be preeminent in dive planning. A DCI incident is inconvenient, whereas a toxicity-hit is final. Within toxicity limits, it's best to open the O2 window as wide as possible and as early as possible in the ascent (keep ppO2 high). However, given a limited number of stage gases, and short deep stop times, remember that because the volume of bubbles depends on growth time, one shouldn't sacrifice high ppO2 on the longer shallow stops for an early switch. Inert gas management is also important, withÊlong decompression dives favoring high helium content in decompression mixes to take advantage of the fast desaturation rate and deep no deco saturation depth.
MIXED GAS AND THE VPM
Extension of the VPM algorithm to Trimix (or multi-inert-gas) diving was done by fractioning the inand out-gassing of inert gases in compartments as originally described by H. Keller, who was responsible for the algorithms employed by A. Bühlmann. Weighted critical ascent gradients are formed from the partial pressures of the inert gases, and a numerical method is employed to keep the sum of the helium and nitrogen partial pressures less than the critical gradient. Although this is a conventional procedure for modeling multiple inert gasses, the physiological and physical basis of this technique is somewhat dubious because both helium and nitrogen diffuse into bubbles independently--yet the rates of transfer of each gas are coupled through the dependence of bubble pressure on bubble volume.
YOU ARE THE FUTURE OF THE VPM
With the ready availability of technical details of VPM algorithms, open source code, and freeware decompression programs, divers have essential information available to them to make judgments and modifications on this new set of decompression procedures. The VPM model is considered by many diving practitioners of deep-stop-driven ascents to be a more robust and accurate analog to physiological processes occurring within the body compared to conventional methods. After all, if you can't decompress Jello™, how can you expect to ascend from a frontier level dive? Further benefits, including greatly shortened ascent times, as well as cleaner decompressions, potentially arise from VPM-based methods. This holds true especially in cases where dives are made far beyond the tested limits of conventional procedures, where the grounding of the VPM in basic scientific observations provides leverage for extrapolation. Deep stops and the related VPM modeling continue to peak the interest of technical divers everywhere. As individuals continue their quest to obtain a reasonable approximation of decompression procedures, one can hope that continued explorations offer a sound, repeatable, and trouble-free calculation scheme. Nonetheless, in this early stage of deployment of the VPM, caution is the word. It is advisable to plan dives for ample deco and only rely on the enhanced safety of initial deep stops or theoretically shorter ascent times for insurance. For example, in the case that a direct ascent to the surface is required due to a hazardous operational situation or other emergency, you have a built-in safety backup through making an optimal ascent every step of the way home.
(1) D.E. Yount, D.C. Hoffman, On the Use of a Bubble Formation Model to Calculate Diving Tables. Aviation, Space, and Environmental Medicine, February 1986. (2) D.E. Yount, E.B. Maiken, E.C. Baker, Implications of the Varying Permeability Model for Reverse Dive Profiles, AAUS, January, 2000. _URL_ (3) D.E. Yount, E.B. Maiken, E.C. Baker, A New VPM Algorithm for Repetitive Dives, UHMS, June, 2000. _URL_ VPM_Repetitive_Poster.ppt
Copyright ©2004 Global Underwater Explorers.
All rights reserved.

source: HuggingFaceFW/fineweb-edu


Roma Music & Emotion Image 1
Roma Music & Emotion
In Roma Music and Emotion, author Filippo Bonini Baraldi forges a much-needed theory of music, emotion, and empathy from an anthropological perspective, addressing the failure of the prevailing psychological theories on music and emotion to account for non-western musical cultures.
Bonini Baraldi, having spent years among the Hungarian Roma of rural Transylvania, presents compelling ethnographic descriptions of their weddings, funerals, community celebrations, and intimate family gatherings. Based on extensive field research and informed by hypotheses drawn from the cognitive sciences, the anthropology of art, and aesthetics, Roma Music and Emotion analyzes why Roma musicians cry along with music and how they arouse specific feelings in their audiences.
Translated by Margaret Rigaud, and with a Foreword by Steven Feld, Roma Music and Emotion makes an important ethnomusicological contribution to theoretical discussions of the relationship between music and emotion.


text:
How to Prune Sugar Maple Trees. Sugar maple trees are a beautiful addition to any home lawn. Pruning the sugar maple trees will help them to maintain a proper shape and thrive for years to come. These trees can grow to a height of 60 to 75 feet, according to the Arbor Day foundation website. Do not plant sugar maple trees in a confined area, as...
Sugar maple trees are a beautiful addition to any home lawn. Pruning the sugar maple trees will help them to maintain a proper shape and thrive for years to come. These trees can grow to a height of 60 to 75 feet, according to the Arbor Day foundation website. Do not plant sugar maple trees in a confined area, as their spread is approximately 40 to 50 feet. These trees do well in USDA hardiness zones 3 through 8 and do not tolerate soil where salt is a problem. The green leaves turn bright yellow, red or burnt orange in the autumn months.
Things You'll Need
Long-handled pruning shears
Remove asymmetrical limbs or dead branches from a young sugar maple tree. Sugar maples require little trimming of healthy branches in the first few years. You may choose to remove lower branches to raise the crown of the tree for aesthetic value, but the tree really does not need major pruning until it is 10 to 15 years old.
Prune your sugar maple tree during the autumn or late winter months when it is dormant, suggests the Online Gardener website.
Check periodically for diseased limbs and cut them down. Inspect your trees after heavy winds and thunderstorms for broken branches or damaged limbs. Pay particular attention to the state of the tree before the sap starts to run in the spring months.
Trim small branches just above the collar of the tree. This is where the bark is extra thick near the junction of the branches.
Trim branches that grow toward the center of the tree or limbs that rub against each other.
Remove any branches that grow in a downward fashion; cutting away these limbs will help the air circulation in the center of the tree and prevent branches from rubbing against the bark, creating openings and allowing disease to enter.
Lift the crown of the tree by removing lower branches that are densely populated; these can prevent the tree from getting proper air circulation. If you have difficulty mowing underneath the tree, remove the lower branches.
Avoid pruning the leader branch of the tree; this is the central base of the sugar maple tree and is vital to the health of the tree. Trim branches that extend beyond the natural oval shape of the sugar maple. Never cut off more than one-third of the limb, as this may damage the tree.
Check out these related posts

source: m-a-p/FineFineWeb


Performance: speed up creation of ASP.NET DataSet objects
During some recent performance tuning work, I took a look at a method
that was taking around 450 ms. The primary task of the function was to
build a relatively large DataSet object, with around 350 rows and over
110 columns. Sure, that's over 38,500 cells, but 450 ms seemed extreme.
As a first step, I tried commenting out the actual logic that decided
what went into each and every cell and just sticking in the word "hello"
38,500 times. To my surprise, it hardly made a dent in the performance.
So, I took it a step further, and tried not putting in any data at all.
Sure enough, time fell down to close to zero!
How could copying the same string in over eat so much performance time?
Googling around didn't turn up much, but I started poking around in the
DataSet object and discovered that it had a lot of power that I had
never used. It's able to keep track of what rows have been modified,
what needed to be updated back in a database, etc. Clearly there was a
significant amount of logic behind it. With this in mind, I looked back
at exactly how we were creating the rows, and I spotted something
suspicious:
DataRow newRow = dataTable.NewRow();
dataTable.Rows.Add(newRow);
newRow[col1] = value1;
newRow[col2] = value2;
...
We were creating the row, adding it to the table, and then putting in
the values. When I was thinking of the DataSet as a glorified,
serializable hashtable, this shouldn't matter much. However, since it
was clearly doing some sophisticated state management, could modifying a
row after it was in the table be much more expensive than before it was
in the table? Perhaps the DataSet was working hard to keep track of all
the modifications we were doing on the theory that we might need it.
I tried making the simple change of moving step of adding the row until
after it was populated with data:
DataRow newRow = dataTable.NewRow();
newRow[col1] = value1;
newRow[col2] = value2;
...
dataTable.Rows.Add(newRow);
Boom! Construction time dropped down to close to zero. Clearly, that
small detail really mattered.
So, lesson learned: don't add the row to a DataSet until it is
populated.
This entry was posted in Uncategorized and tagged , , . Bookmark the permalink.
One Response to Performance: speed up creation of ASP.NET DataSet objects
Leave a Reply
Fill in your details below or click an icon to log in:
WordPress.com Logo
You are commenting using your WordPress.com account. Log Out / Change )
Twitter picture
You are commenting using your Twitter account. Log Out / Change )
Facebook photo
You are commenting using your Facebook account. Log Out / Change )
Google+ photo
You are commenting using your Google+ account. Log Out / Change )
Connecting to %s


text:
Use a PAPA Pump to 'Store Water Sustainably' and replace Mains Water
Drought or low rainfall conditions force Communities around the world to use expensive fuel sources to pump water further, impose water use limitations and abstract from already low watercourses causing damage to the environment.
But how can Local and National Governments find inexpensive, low maintenance systems which can capture and sustainably pump water long distances when there is excess water available and not when drought conditions strike…?
IMPROVE LONG TERM WATER RESILIENCE- STORE WATER SUSTAINABLY
SOLUTION- PAPA Pump offers a low cost, proven zero energy pumping systems for capturing flood water from land drains and streams or rivers.
PAPA Pumps can be activated ONLY when there is flood water flowing over a dangerous 'high water mark' in any watercourse.
Many 100's of PAPA Pumps are already working globally start pumping potentially damaging flood water away from 'at risk' streams to storage for treatment and reuse.
In this image, when in flood, several PAPA Pumps can automatically start operation to capture flood water and allow it to be used, replacing valuable mains water as well as reducing flood impacts downstream.
Dozens of these Pump installations could cost effectively move millions of litres of water in networks or multiple or individual pumps operating noiselessly.
The Pumps can move water many kilometers away from flooded areas of any catchment, allowing dynamic sharing with areas not 'at risk' and wider storage infrastructure
REDUCE CARBON AND FINANCIAL COSTS- REPLACE MAINS WATER SUSTAINABLY
Once the flood water has been pumped away from 'at-risk' areas, communities can use it any number of ways. With simple treatment, this water can even replace many uses which expensive Mains Water is currently used for.
PAPA Pumps can move water long distances for toilet flushing, vehicle washing and general horticultural use - so less water needs to be abstracted in drought or expensively treated mains water can be replaced.
The PAPA pump system offers minimal maintenance with only one moving part. Installed in remote areas, the Pump system can operate in all weathers with simple installation and good debris tolerance.
Here a perfect use of flood water is being pumped from dangerously overflowing rivers and streams for storage and use in summer on this green roof.
CALL TO ACTION
Join the PAPA PUMP Campaign to 'Store and Save Water '
If you are a national environmental agency or Water Utility, contact PAPA Ltd for water storage design and implementation options. PAPA Ltd can answer your installation questions and offers whole life management guidance.
- Proven, long life product and system design
- Anonymous, zero visual impact systems which operate with no noise
- Suited for DIY or large scale installations
- Can pump long distances to cover wide catchment areas
Download the Brochure or click below to see other ways the Pump can save water and energy


Museums, Monuments and Sites
Refine search
Number of results: 1238
 1. Aliança Underground Museum
 Museums and Palaces
 Aliança Underground Museum
 Telephone: +351 234 732 000/45
 Fax: +351 234 732 005
 E-mail: _EMAIL_
 Website: _URL_
 2. Archaeology
 Anta Capela de Pavia
 Dolmen Chapel of PaviaThe Dolmen Chapel of Pavia, dedicated to S. Dinis (17th c.) is one of the megalithic portuguese monuments adapted to the christian cult. In this case, the chamber was transformed into the nave of the chapel.
 3. Archaeology
 Anta Capela de São Brissos
 Chapel of São Brissos CromlechMegalithic funerary monument that has been adapted into a Christian chapel.
 4. Archaeology
 Anta do Barrocal
 Barrocal CromlechCromlech with vestiges of a polygonal chamber and a covering stone slab still found on site. It is located around 200 metres SW from the Monte do Barrocal hilltop farm.
 5. Anta do Olival da Pêga
 Anta do Olival da Pêga
 6. Anta do Olival de Monte Velho
 Anta do Olival de Monte Velho
 Olival de Monte Velho CromlechOne of the stone supports is broken in half and the upper half has fallen inside the chamber.
 7. Anta do Penedo Gordo
 Anta do Penedo Gordo
 Penedo Gordo CromlechA megalithic monument with an average-sized corridor, presenting vestiges of a burial mound, in particular on the Southern side. The polygonal chamber is composed by nine stone supports and the corridor by four stone supports on (...)
 8. Archaeology
 Anta dos Coureleiros
 Coureleiros CromlechThere are five cromlechs located in Coureleiros. This is one of the largest units. Its official scientific designation is "Anta dos Coureleiros II".
 9. Archaeology
 Anta Grande do Zambujeiro de Valverde
 Dolmen of Zambujeiro in ValverdeIt is the biggest dolmen known in the Iberian Peninsula. The area is 50 m of diameter and it is composed by the chamber, 6 metres high, and a long passage to the exterior. The passage grave it is classified as a (...)
 10. Archaeology
 Antela da Cruz Vermelha
 Located in the Corno Bico Protected Area, the Antela da Cruz Vermelha (Red Cross Dolmen) has been dated to around 2,500 BC. Circular in form, the Dolmen is made up of a large boulder with a headstone with an engraved cross, painted in red. Part of a (...)
Advanced search
Planning See your selected contents and create your own Plan or Brochure
Forgotten your password?
Login using social networks
Login using social networks


text:
R Creative Collective (RCC), is a Charlotte, NC based 501(c)3 non-profit. Our mission is to use the transformative power of creativity to spread peace, give hope, support recovery, and connect communities.
By providing a variety of accessible, peer-driven programs centered on creativity, we promote social-inclusion, empowerment, and employ sustainable health & wellness solutions.
Our programs work with a wide range of communities including: those affected by substance use and mental health disorders, at-risk youth, the elderly, refugees and immigrants, and the general public.
- We are a peer run and volunteer supported organization. - We believe that everyone has a creative side. - We believe that recovery (read: healing, learning, growing) is an ongoing process that everyone experiences in life. - We are creators with deep roots in substance use and mental health recovery and advocacy. - We are invested in creating spaces of acceptance, community, and transformation. - We offer a variety of workshops where your mind can relax and engage creatively.
Join us in having fun, meeting like-minded people, and unleashing your inner creative!


What does Boxing Day have to do with boxing?
Slang definitions & phrases for grunch
 1. Boring (1960s+ Teenagers)
 2. grungy (1960s+ Teenagers)
 1. A dull, tedious person; nerd, pill
 2. Slovenliness; sloppiness (1960s+ Teenagers)
 3. Something nasty: Those globs of guitar grunge get me off every time (1960s+ Teenagers)
 4. A style of dress featuring mismatched and rumpled garments, mostly suggesting lumberjacks, appearing to have been bought at thrift shops and donned at random, and favored by grunge rock musicians: ''Stuff We Hate'' grunge as high fashion/ Garth's wardrobe is mostly grunge (1990s+)
 5. A kind of rock music originally associated with Seattle, wa: Nirvana and Pearl Jam are two of the best grunge bands (1990s+)
Copyright (C) 2007 by HarperCollins Publishers.
Cite This Source
Word of the Day
Word Value for grunch
Scrabble Words With Friends
Nearby words for grunch


text:
You're either A, B or somewhere in-between.
Person A takes the do it now approach and gets things done as they arise or sets time aside to do it in the future.
Person B takes the do nothing approach, also known as the do it later approach, think of a procrastinator. Person B does nothing when things arise even if they know that they could do it now.
They put things off until they're short of time and then wonder why their heart is palpitating (I've been Person B many times).
But there comes a time when you have to do some self-reflection to understand what is and isn't working. Ask yourself 'What can I do to make things in my life run smoother?'
I think reevaluating the approach you take in life is the equivalent of a keystone habit (one habit that has a domino effect where you end up changing a bunch of habits as a result of changing one).
A person that takes the do nothing approach is more likely to be overwhelmed, unorganised, tense, stressed, less productive and be achieving much less than they're capable of.
If you're able to identify with Person B, you might feel like it's too hard to change your ways. But there's a beautiful thing called neuroplasticity that allows your brain to change.
Once you make a commitment to to your own development, it just takes practice.

source: openbmb/Ultra-FineWeb


DF2014:Date palm
From Dwarf Fortress Wiki
(Redirected from DF2014:Date)
Jump to navigation Jump to search
Date palm
Urist likes date palms for their fruit.
Wet Dry
Deciduous No
Density 820
Max trunk height 8
Max trunk diameter 1
Trunk branching 0
Heavy branch radius 1
Branch radius 2
Root radius 3
Heavy branch density 0
Branch density 0
Root density 5
Wood Date palm wood
Fruit Date
Flower Date palm flower stalk
Alcohol Date wine
Flower Properties
Edible Yes
Cookable Yes
Fruit Properties
Edible Yes
Cookable Yes
Seed Properties
Edible No
Wikipedia article
This article is about the current version of DF.
Date palms are one of the many genera of trees found above ground. Like the vast majority of above ground trees, date palm wood is brown and produces brown products.
Date palms bear dates that can be harvested by setting up a gathering zone. They can be eaten raw, cooked, or brewed into date wine. The flower stalks can also be harvested in the spring, but can only be eaten or cooked. Due to their narrow profile and the height that they grow to, date palms may not be worth harvesting unless nothing else is available.
Some dwarves like date palms for their fruit.
Admired for its fruit.
"Date palm" in other Languages Books-aj.svg aj ashton 01.svg
Dwarven: dëm kulin
Elvish: iÿi mimi
Goblin: xenak luböm
Human: begu esme


text:
An initiative of the National Council for Workforce Education, the Sustainability Education and Economic Development Center (SEED) supports community colleges and their partners with curriculum and resources to transform educational programs for a sustainable future.
Northeast Organic Farming Association (NOFA) Organic Land Care Accreditation and Education Resources
With the mission to transfer organic agriculture practices to landscapes, NOFA has created its own 5-day accreditation course to become an Organic Land Care Professional (AOLCP) with a pledge to adhere to NOFA standards for Organic Land Care.
As the Sustainability, Education and Economic Development (SEED) Center is a FREE initiative offered by the National Council for Workforce Education, we strive to provide our users with up-to-date information and materials. We encourage you to submit resources or open-source curriculum for possible posting on the SEED Center website.
Note: SEED is managed by a team of higher education experts who vet and curate resources and curriculum. Thus, not all submitted materials will appear on the website.
2023 SEED Center website updates funded by Lumina Foundation


Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free.
I want to parse the text line from the Wavefront OBJ file. Currently I am interested in "V" and "F" types only. My algorithm is as follows:
 1. check if line is not nil (otherwise step 2 would fail)
 2. drop comment after "#" and trim spaces
 3. drop prefix "v " or "f "
 4. split string to the list of elements where each element
 1. is split to the list if it is symbol like |34/76/23|
 2. is converted from the list: I take one element only, the first by default
 3. or coerced to the given type if it is atomic number already.
Here is the code:
(defun parse-line (line prefix &key (type 'single-float))
 (declare (optimize (debug 3)))
 (labels ((rfs (what)
 (read-from-string (concatenate 'string "(" what ")")))
 (unpack (str &key (char #\/) (n 0))
 (let ((*readtable* (copy-readtable)))
 (when char ;; we make the given char a delimiter (space)
 (set-syntax-from-char char #\Space))
 (typecase str
 ;; string -> list of possibly symbols.
 ;; all elements are preserved by (map). nil's are dropped
 (string (delete-if #'null
 (map 'list
 #'unpack
 (rfs str))))
 ;; symbol -> list of values
 (symbol (unpack (rfs (symbol-name str))))
 ;; list -> value (only the requested one)
 (list (unpack (nth n str)))
 ;; value -> just coerce to type
 (number (coerce str type))))))
 (and line
 (setf line (string-trim '(#\Space #\Tab)
 (subseq line 0 (position #\# line))))
 (< (length prefix) (length line))
 (string= line prefix :end1 (length prefix) :end2 (length prefix))
 (setf line (subseq line (length prefix)))
 (let ((value (unpack line :char nil)))
 (case (length value)
 (3 value)
 (4 (values (subseq value 0 3) ;; split quad 0-1-2-3 on tri 0-1-2 + tri 0-2-3
 (list (nth 0 value)
 (nth 2 value)
 (nth 3 value)))))))))
Step four (label "unpack") is kind of recursive. It is one function and can call itself three times.
Anyway, this solution seems to be clunky.
My question is: how should one solve this task with shorter and clearer code?
share|improve this question
1
How to make the code more lispy? More parentheses, of course. Also, global search and replace 's' with 'th' – Rafe Kettler Jan 26 '11 at 7:04
1 Answer 1
up vote 4 down vote accepted
I would approach this in a more structured manner.
You want to parse an obj file into some sort of data structure:
(defun parse-obj-file (filespec)
 ;; todo
 )
You need to think about how the data structure returned should look. For now, let us return a list of two lists, one of the vertices, one of the faces. The parser will go through each line, determine whether it is either a vertex or a face, and then collect it into the appropriate list:
(defun parse-obj-file (filespec)
 (with-open-file (in-stream filespec
 :direction :input)
 (loop for line = (read-line in-stream nil)
 while line
 when (cl-ppcre:scan "^v " line)
 collect (parse-vertex line) into vertices
 when (cl-ppcre:scan "^f " line)
 collect (parse-face line) into faces
 finally (return (list vertices faces)))))
I used the cl-ppcre library here, but you could also use mismatch or search. You will then need to define parse-vertex and parse-face, for which cl-ppcre:split should come in quite handy.
It would perhaps also be useful to define classes for vertices and faces.
Update: This is how I would approach vertices:
(defclass vertex ()
 ((x :accessor x :initarg :x)
 (y :accessor y :initarg :y)
 (z :accessor z :initarg :z)
 (w :accessor w :initarg :w)))
(defun parse-vertex (line)
 (destructuring-bind (label x y z &optional w)
 (cl-ppcre:split "\\s+" (remove-comment line))
 (declare (ignorable label))
 (make-instance 'vertex
 :x (parse-number x)
 :y (parse-number y)
 :z (parse-number z)
 :w (parse-number w))))
Parse-number is from the parse-number library. It is better than using read.
Update 2: (Sorry for making this a run-on story; I have to interlace some work.) A face consists of a list of face-points.
(defclass face-point ()
 ((vertex-index :accessor vertex-index :initarg :vertex-index)
 (texture-coordinate :accessor texture-coordinate
 :initarg :texture-coordinate)
 (normal :accessor normal :initarg :normal)))
(defun parse-face (line)
 (destructuring-bind (label &rest face-points)
 (cl-ppcre:split "\\s+" (remove-comment line))
 (declare (ignorable label))
 (mapcar #'parse-face-point face-points)))
(defun parse-face-point (string)
 (destructuring-bind (vertex-index &optional texture-coordinate normal)
 (cl-ppcre:split "/" string)
 (make-instance 'face-point
 :vertex-index vertex-index
 :texture-coordinate texture-coordinate
 :normal normal)))
Remove-comment simply throws away everything after the first #:
(defun remove-comment (line)
 (subseq line 0 (position #\# line)))
share|improve this answer

Thank you for your answer! Unfortunately, I cannot show here in comments my legacy code. So I just mention, that I started with (removecomment...) function, but then decided, that treating #\# as #\) is easier. – avp Jan 26 '11 at 13:33

@avp: The Lisp reader should be used to read Lisp code. Massaging your input to be readable is a rather convoluted approach. – Svante Jan 26 '11 at 18:50

But if it makes the code smaller and easier to understand? (And I assume the file format is correct, too. – avp Jan 27 '11 at 13:13

@avp: No, it does not make it easier to understand. You do several conversions of strings to symbols, strings to lists, symbols to strings, and finally perhaps strings to numbers, all while mucking around with the readtable, instead of simply splitting your input and parsing the parts. – Svante Jan 27 '11 at 15:06
Your Answer

discard
By posting your answer, you agree to the privacy policy and terms of service.
Not the answer you're looking for? Browse other questions tagged or ask your own question.


text:
Skip to Main Content
Compact polarimetry is a technique that allows construction of pseudo quad-pol information from dual-polarization synthetic aperture radar (SAR) systems. Compact polarimetry showed promise of being able to reduce the complexity, cost, mass, and data rate of a SAR system while attempting to maintain many capabilities of a fully polarimetric system. In this paper, we study different transmit/receive configurations to determine which polarimetric configurations allow for superior reconstruction of the fully polarimetric data. We discuss modifications of the original reconstruction algorithm proposed by Souyris , which show potential to better reconstruct fully polarimetric data.


text:
More SMBs Investing In Data Security, CRM: Study
SMBs are largely leveraging data and information security and are demonstrating great interest in CRM software, according to the latest research by business software resource Capterra. The survey predicts 68 percent of SMBs are currently leveraging data and information security in 14 industries conducted by Capterra partner company Gartner.
Tirena Dingeldein, senior analyst and content manager at Capterra, gives a heads up to all SMBs to use such technologies. "The SMB community must commit to 100 percent participation in security management in order to stop data breaches. Hackers are increasingly becoming sophisticated in their attacks, and it is well past time to invest in a data management or information security solution," she said.
A percentage of almost 73 say that they find CRM software to be extremely critical to their organization.
CRM software is the way successful businesses nurture their customers and open up their sales funnel. Without a CRM, small businesses risk time and resources used to build customer relationships, Dingeldein said.
According to the recent findings, 59 percent of SMBs Gartner interviewed are using cloud computing today.
The report also highlights signs that an SMB is ripe for a cloud offering:
The SMB's budget for maintaining systems in-house is increasing beyond what has been normal in previous years. More time is spent waiting for data to populate than is spent using it for work. The SMB's existing data filing system has outgrown that which its in-house solution can handle.
There is a tint of interest in planning, evaluation or is already in place among 38 percent of participants, for the adoption of blockchain. More than 50% respondents believe that blockchain is a not good source for conducting business but is beneficial.
Blockchain may not be a necessary requirement right now, but it should also not be discounted for future consideration. It is predicted that blockchain will have a significant impact on small businesses in the next 10 years, she said.
Similarly, 269 participants are using, planning to use or evaluating chatbots, with 28 percent of those saying the technology isn't necessary to conduct business. Also, the report mentions that it is important to keep an eye on blockchain just to be prepared for the future.
- Talent Shortage, A Key Concern For Organizations: Gartner
- Virtual Assistants On The Rise In the workplace: Gartner
- What Makes The Smart Home Market So Lucrative In India
- How Emotional Intelligence Can Help CIOs In Decision Making
- Would Cyber Serenity Soon Be A Thing Of The Past?
- More AI, IoT Based Attacks To Surface Next Year: Symantec
- Leveraging Blockchain To Boost Cybersecurity In Fintech
- Every CISO's Security Mantra In The Cloud Environment
- Study Sees Huge Digital Transformation Gap In The Enterprise
- How Enterprises Can Secure Their Journey To The Cloud


text:
The correct answer to this problem is given by the binomial coefficient
which reaches a maximum of 252 for k = 5. The number of committees of k members equals the number of committees of (10 - k) members, because any committee of k members defines a unique group of (10 - k) non-members.
Answering this question without computation involves mentally constructing committees of k members and evaluating their number by the ease with which they come to mind. Committees of few members such as 2, are easier than committees of many members, such as 8. The simplest scheme for the construction of committees is a partition of the group into disjoint sets. It is easy to construct five disjoint committees of 2 members, but impossible to generate even two disjoint committees of 8 members. So, using imaginability alone, the small committees will seem far more numerous than larger committees, whereas in fact there is a bell-shaped function.


LASS Audio Tutorials
LASS Audio Tutorials
Welcome to the LASS Audio Tutorials section. This section has audio tutorials that could be considered "naked demos" where nothing else is playing but LASS accompanied by dialog that explains what you are hearing.
Spiccato Cellos and the A.R.T script explained
(also see tutorial video)
This demo highlights LASS's unique A.R.T script that gives you the ultimate control over fast rhythmic patterns and accents. The demo is at 155 bpm to showcase the precision of the short articulations even with the larger stringed instruments. Hold down the sustain pedal and play a note…and you will hear A.R.T. You can read more about this amazing tool in the LASS User Guide.
LASS's Layered Real Legato Exposed
This demo explains the "layered" approach to a realistic strings sound by showcasing all the different divisis and how they interact together. These naked examples really let you hear the detailed sound of LASS.
Violas Improvised
This audio clip demonstrates LASS's violas as well as how easy it is to elicit expressive legato lines with improvised performances. Featured are the first chair, divisi ensemble A, B and C violin section. Also, CC83 (the controller that commands the speed of the portamentos and glissandos) is discussed.
LASS Sordino Patches
This demo reveals the expressive range of the LASS's sordino (muted strings) articulation (both divisi and combined).
Faster Legato Phrases
This simple demo illustrates LASS's ability to achieve wonderfully expressive legato lines at faster tempos. A simple melody is played by the violin's first chair and all the other violin divisi ensembles and then they are all played together as a cohesive section. Note how all the different violin sections "sing" the melody differently.
LASS Trills
The Trill script is a very simple script that eliminates a lot of midi-mockup headaches. Instead of having to figure out whether you need to play whole or half-note trills in the key you are in, just play the appropriate Key Switch for the key you are in and LASS's Trill script does the rest!! Note the dynamic range, clarity and detail of these trills.


text:
CDE Faculty Search Presentation: Dr. Laxmi Pant
Date and Time
Landscape Architecture building, Room 143
Presentation by Dr. Laxmi Pant, candidate for a faculty position in Capacity Development and Extension in the School of Environmental Design and Rural Development.
"Capacity Development for Agricultural and Rural Innovation: Rethinking Research, Teaching and Extension in a Changing World"
All are welcome and encouraged to attend.
About the candidate:
Laxmi Prasad Pant is Adjunct Professor with Associated Graduate Faculty Status at the University of Guelph. Laxmi's research focuses specifically on capacity development for agricultural and rural innovation. His research has appeared in the Journal of Agricultural Education and Extension, Journal of Rural Studies, Technological Forecasting and Social Change, Current Opinion in Environmental Sustainability, Regional Environmental Change, and Agroecology and Sustainable Food Systems.
Laxmi holds a PhD from the University of Guelph's Rural Studies program. He maintains his current affiliation with the University of Guelph while also working at different universities. He conducted postdoctoral research and collaborated on faculty projects at the University of Waterloo and Queen's University. Laxmi also collaborated with faculties at Arizona State University in the USA, the University of Manchester in the UK and the United Nations University in The Netherlands.
Laxmi has taught at the University of Guelph and the University of Waterloo for undergraduate and graduate courses, online, in-class and blended, in the following areas: rural extension, communication, capacity development, community development, international development, and research methods. Before coming to academia, he worked as an extension facilitator engaging smallholder farmers in participatory research and development, such as farmers' field schools, agroecosystem analysis, and on-farm trials. His first exposure to the public extension was listening to a popular farm radio show when he was growing up on a two-acre subsistence farm in the Himalayas.


text: This 2013 Article IV Consultation highlights that economic output in Aruba remains 12 percent below its pre-crisis level, with recovery slower than others in the Caribbean region. The non-oil current account (CA) balance, which mostly reflects developments in the tourism sector, has improved since mid-2000 reaching a balanced position in 2012. The overall CA balance, however, after being in surplus for years, showed volatilities in recent years reflecting oil-sector developments. In 2012, it recorded a surplus of 5 percent of GDP. In 2013, real output is projected to grow by 11/4 percent. Robust tourism growth and some pickup in consumption from projected deflation will support the subdued near-term recovery.


text:
Garden Kneelers, Pads and Seats
When you're out gardening, it can often mean spending a long time working at ground level with gardening tools. While there are plenty of gardening supplies out there, but only garden kneelers, pads and seats save you the discomfort of bending down or kneeling on the ground to work away.
What Are the Different Types of Garden Kneelers?
While their roles are similar, there are various different types of kneeling garden supplies, including:
- Kneeling Pads and Mats: Rather than kneeling on firm surfaces, foam garden kneeling mats and pads offer cushioning and comfort while gardening.
- Garden Seats: These lightweight seats often are able to be folded into a kneeling pad as well, allowing you to garden in whatever way suits you and providing a useful piece of outdoor furniture.
What Types of Kneeling Pads and Mats Are There?
Designed to cushion your knees from the ground, kneeling pads can be used in several ways, like:
- Garden Kneeling Mat: This flat foam mat simply rests on the ground and is quick and easy to use.
- Garden Knee Pads: Rather than move a mat around or slip off it, garden knee pads allow you to wear pads on your knees, attached by a strap around your leg.


text:
Hinde (1904) records muunda of "Ulu dialect" (spoken then from Machakos to coastal area) and mundani of "Nganyawa dialect" (spoken then in Kitui District) of Kamba as equivalents of English garden, listing also "Jogowini dialect" of Kikuyu muganda as their equivalent.
- ^ Hinde, Hildegarde (1904). Vocabularies of the Kamba and Kikuyu languages of East Africa, pp. 26–27. Cambridge: Cambridge University Press.
- ^ Whiteley, W.H. and M.G. Muli (1962). Practical Introduction to Kamba, pp. 46, 162. London: Oxford University Press.


text:
Vegetative Meaning and Definition in Dictionary
Definitions from Wordnet 2.0
- composed of vegetation or plants; "regions rich in vegetal products"; "vegetational cover"; "the decaying vegetative layer covering a forest floor"
- (of reproduction) characterized by asexual processes
- used of involuntary bodily functions; "vegetative functions such as digestion or growth or circulation"
- of or relating to an activity that is passive and monotonous; "a dull vegetative lifestyle"
Would you like to add your own explaination to this word 'Vegetative'?
Wikipedia Meaning and Definition on 'Vegetative'
- Vegetative: Vegetative describes vegetation. Vegetative may also refer to: Vegetative reproduction, a type of asexual reproduction for plants Persistent vegetative
- Vegetative reproduction: For vegetative reproduction of animals and fungi, see Budding. Vegetative reproduction (vegetative propagation, vegetative multiplication
- Vegetative Sculpture I: (2012). "Vegetative Sculpture I (sculpture)". Inventory of American Sculpture. Smithsonian Institution. Retrieved 27 December 2012. "Vegetative Sculpture
- Persistent vegetative state: syndrome. After four weeks in a vegetative state (VS), the patient is classified as in a persistent (or 'continuing') vegetative state. This diagnosis is classified
- Vegetative symptoms: be confused with Vegetative state. Vegetative symptoms are disturbances of a person's functions necessary to maintain life (vegetative functions). These
- Permanent vegetative cover: Permanent vegetative cover refers to trees, perennial bunchgrasses and grasslands, legumes, and shrubs with an expected life span of at least 5 years.
- Vegetative treatment system: and a Vegetative Treatment Area (VTA), all these components when used together are considered a Vegetative Treatment System. A Vegetative Treatment
- Vegetative phase change: Vegetative phase change is the juvenile-to-adult transition in plants. This transition is most prolonged and pronounced in woody species. Manipulating


text:
Necker animals - Stout Iguana
- By Richard Branson -
- Dec 16, 2011
Another great endangered species restoration success story! The Stout Iguana was again driven to extinction by human consumption in all neighbouring Caribbean islands by 1930 except for Anegada where the last remaining population existed happily until the introduction of wild livestock in 1970. This had catastrophic results on their population due to the increase in competition for food and the livestocks hoofs destroying the Iguanas nests.
In the early 80s, several Iguanas were taken to Guana Island and subsequently Necker Island in attempt to save the dwindling population and since then we are proud to have a population similar or quite possibly greater than that of their native Anegada at approximately 150-200 individuals.
The photo is of a juvenile measuring approximately eight inches while the adults grow to just over 6ft and look like mini-dinosaurs! The juveniles are more photogenic due to the distinct stripes or chevrons along their backs which fade as they age.
Photo by Charlie Smith
By Richard Branson. Founder of Virgin Group


text:
Step Up Your USP 788 Compliance Game
Why Use Aura for Assessing Particulate Contamination?
- Achieve more accurate results with minimal amounts of sample (as little as 5 μL per test) so that multiple measurements can be made and averaged.
- Achieve higher throughput for testing lots of candidates or conditions
- Gather comprehensive data and insight into aggregate particles – size, morphology, counts, distribution
- Get insights quickly with rapid analysis time of 1 minute per sample
- Benefit from a wide working range: measures particles from 1 μm to 5 mm with high reproducibility
- Image particles without the interference of buffer or matrix for higher sensitivity
- Quantitate non-homogeneous particle populations (size, density, morphology)
- Detect changes as a function of stress and solution conditions
- Enjoy a user-friendly software interface
Detect Inorganic Contaminants
See the Unseen—Experience High-Contrast Particle Imaging Like Never Before
BMI breathes new life into membrane microscopy, replacing the tedious USP 788 subvisible particle lot release method, with modern robotics and automated imaging to generate accurate particle counts and sizing.
Built exclusively on Aura, this innovative technology can perform particle characterization on up to 96 samples in a single run using as little as 25 µL per sample.
BMI is also insensitive to solution refractive index, enabling reliable measurement of translucent protein aggregates.
The end result: USP788-compliant subvisible particle data, eliminating the need for LO and providing better insight into particulate contamination.
Granular Insights in Every Sample
Quantifying particle counts of historic USP size bins (>10 μm, >25 μm) is integral for accurate analysis, but being able to characterize particles <10 μm as well as determine if particles are intrinsic is just as essential.
With Aura's SIMI and FMM technology combined with BMI's refractive index capabilities, you can now gain a deeper understanding of samples to identify protein or non-protein contents along with intrinsic or extrinsic elements—something that traditional flow-based particle analyzers could not provide. This allows for greater protection against costly recalls due to unseen particulate contamination.


text:
A (food) forest takes root in a (food) desert
How do you make a food desert bloom? The range of solutions to these urban areas without ready access to fresh food has included full-service grocery stores, farmers markets, and even small urban farms. All of these answers, of course, require someone (usually from outside the community) to make produce available. What if there was a way for food desert residents to just gather their own fresh food?
Residents of Syracuse, New York's south side are focusing on just that question, and attempting to answer it with the establishment of a permaculture-based forest garden outside of the new Rahma Free Health Clinic. Different from other forms of gardening, a forest garden, or food forest, is established with perennial plants that support one another. A seven-layer, multi-tiered system ensures that the whole system gets what it needs in terms of nutrients and water, and sustains itself over the long term. This particular forest garden is being designed and built by The Alchemical Nursery, a local permaculture organization; you can take a look at the plans they've developed for the space.
The location of the forest garden is no accident: it's designed to support the clinic in advocating for healthy lifestyles within this impoverished community. But the food grown won't be limited to clinic patients – any member of the community can come to the garden (once established) to pick berries and other edibles.
Of course, such an effort requires some funding (though not a ton), so the involved organizations have launched a crowdfunding project on Indiegogo. They've got 17 days left to raise just over $1000; if you're inspired by the work they're doing, consider kicking in a few bucks.
Got experience with permaculture or urban food deserts? Let us know what you think of this effort.
MORE FROM SUSTAINABLOG:
Image credit: Screen capture from Rahma Forest Garden Trailer video


text:
Conservatives are Sending Mixed Signals on Bulk Water Sales – An Interview with Mark Holland
OTTAWA, ON, May 8 – In an interview on water.ca, Liberal MP (Ajax-Pickering) Mark Holland said that the export of bulk water in any fashion, including diversions and removals, is not acceptable. Canada is very fortunate to have great amounts of water, but they should not be taken for granted, especially in the context of climate change and the uncertain effects it will have on our environment. Bulk water exports are dangerous to our environment and natural ecology. Of great concern to Mr. Holland and to his party, are the recent meetings held under the North American Prosperity Partnership where bulk water sales were being discussed. According to Mr. Holland, in delegating government bureaucrats to this meeting, the Conservatives are sending a mixed signal which threatens our very sovereignty over Canadian water resources. The fact that these meetings were held behind closed doors, did not include other parties and were not made public is also very disturbing.
It would be wise and prudent, according to Mr. Holland, to have a National Water Policy not only to reiterate our opposition to bulk water sales, but also in terms of our domestic consumption and the impact of global warming on our water resources.
Other topics discussed during the interview include the need to give Canadian cities the powers and resources they need to manage issues such as infrastructure renewal; and the absolute importance of dealing with the horrible water problems in native communities.
For a more detailed account of this interview, you are invited to log onto water.ca where all interviews are posted in their entirety.
Water.ca is an online information service dedicated to the preservation of Canada's water. The site also features an interactive map pinpointing all water advisories across the country, and a Red Button Service to alert communities faced with a water crisis.
For further information: Matt Armstrong, _PHONE_, _EMAIL_


matched parentheses. Check the expression for correct parenthesizing, for example:
#if ((A) + (B) /* oops -- a missing ), I think */
#define ADDED
#endif
(123) misplaced "?" or ":"; previous operator is "*"
(Preprocessor)
A colon operator has been encountered in a #if expression that does not match up
with a corresponding ? operator, for example:
#if XXX : YYY
/* did you mean:
#if COND ? XXX : YYY */
(124) illegal character "*" in #if
(Preprocessor)
There is a character in a #if expression that has no business being there. Valid characters are the letters, digits and those comprising the acceptable operators, for
example:
#if YYY /* what are these characters doing here? */
int m;
#endif
DS52053B-page 380
 2012 Microchip Technology Inc.
Error and Warning Messages
(125) illegal character (* decimal) in #if
(Preprocessor)
There is a non-printable character in a #if expression that has no business being
there. Valid characters are the letters, digits and those comprising the acceptable
operators, for example:
#if ^S YYY
int m;
#endif
/* what is this control characters doing here? */
(126) strings can't be used in #if
(Preprocessor)
The preprocessor does not allow the use of strings in #if expressions, for example:
/* no string operations allowed by the preprocessor */
#if MESSAGE > "hello"
#define DEBUG
#endif
(127) bad syntax for defined() in #[el]if
(Preprocessor)
The defined() pseudo-function in a preprocessor expression requires its argument
to be a single name. The name must start with a letter and should be enclosed in
parentheses, for example:
/* oops -- defined expects a name, not an expression */
#if defined(a&b)
input = read();
#endif
(128) illegal operator in #if
(Preprocessor)
A #if expression has an illegal operator. Check for correct syntax, for example:
#if FOO = 6
/* oops -- should that be: #if FOO == 5 ? */
(129) unexpected "\" in #if
(Preprocessor)
The backslash is incorrect in the #if statement, for example:
#if FOO == \34
#define BIG
#endif
(130) unknown type "*" in #[el]if sizeof()
(Preprocessor)
An unknown type was used in a preprocessor sizeof(). The preprocessor can only
evaluate sizeof() with basic types, or pointers to basic types, for example:
#if sizeof(unt) == 2
i = 0xFFFF;
#endif
/* should be: #if sizeof(int) == 2 */
(131) illegal type combination in #[el]if sizeof()
(Preprocessor)
The preprocessor found an illegal type combination in the argument to sizeof() in a
#if expression, for example:
/* To sign, or not to sign, that is the error. */
#if sizeof(signed unsigned int) == 2
i = 0xFFFF;
#endif
 2012 Microchip Technology Inc.
DS52053B-page 381
MPLAB® XC8 C Compiler User's Guide
(132) no type specified in #[el]if sizeof()
(Preprocessor)
Sizeof() was used in a preprocessor #if expression, but no type was specified. The
argument to sizeof() in a preprocessor expression must be a valid simple type, or
pointer to a simple type, for example:
#if sizeof()
i = 0;
#endif
/* oops -- size of what? */
(133) unknown type code (0x*) in #[el]if sizeof()
(Preprocessor)
The preprocessor has made an internal error in evaluating a sizeof() expression.
Check for a malformed type specifier. This is an internal error. Contact Microchip
Technical Support with details.
(134) syntax error in #[el]if sizeof()
(Preprocessor)
The preprocessor found a syntax error in the argument to sizeof in a #if expression.
Probable causes are mismatched parentheses and similar things, for example:
#if sizeof(int == 2)
i = 0xFFFF;
#endif
// oops - should be: #if sizeof(int) == 2
(135) unknown operator (*) in #if
(Preprocessor)
The preprocessor has tried to evaluate an expression with an operator it does not
understand. This is an internal error. Contact Microchip Technical Support with details.
(137) strange character "*" after ##
(Preprocessor)
A character has been seen after the token catenation operator ## that is neither a letter
nor a digit. Since the result of this operator must be a legal token, the operands must
be tokens containing only letters and digits, for example:
/* the ' character will not lead to a valid token */
#define cc(a, b) a ## 'b
(138) strange character (*) after ##
(Preprocessor)
An unprintable character has been seen after the token catenation operator ## that is
neither a letter nor a digit. Since the result of this operator must be a legal token, the
operands must be tokens containing only letters and digits, for example:
/* the ' character will not lead to a valid token */
#define cc(a, b) a ## 'b
(139) end of file in comment
(Preprocessor)
End of file was encountered inside a comment. Check for a missing closing comment
flag, for example:
/* Here the comment begins. I'm not sure where I end, though
}
(140) can't open * file "*": *
(Driver, Preprocessor, Code Generator, Assembler)
The command file specified could not be opened for reading. Confirm the spelling and
path of the file specified on the command line, for example:
xc8 @communds
should that be:
xc8 @commands
DS52053B-page 382
 2012 Microchip Technology Inc.
Error and Warning Messages
(141) can't open * file "*": *
(Any)
An output file could not be created. Confirm the spelling and path of the file specified
on the command line.
(144) too many nested #if blocks
(Preprocessor)
#if , #ifdef etc. blocks may only be nested to a maximum of 32.
(146) #include filename too long
(Preprocessor)
A filename constructed while looking for an include file has exceeded the length of an
internal buffer. Since this buffer is 4096 bytes long, this is unlikely to happen.
(147) too many #include directories specified
(Preprocessor)
A maximum of 7 directories may be specified for the preprocessor to search for include
files. The number of directories specified with the driver is too great.
(148) too many arguments for preprocessor macro
(Preprocessor)
A macro may only have up to 31 parameters, as per the C Standard.
(149) preprocessor macro work area overflow
(Preprocessor)
The total length of a macro expansion has exceeded the size of an internal table. This
table is normally 32768 bytes long. Thus any macro expansion must not expand into a
total of more than 32K bytes.
(150) illegal "__" preprocessor macro "*"
(Preprocessor)
This is an internal compiler error. Contact Microchip Technical Support with details.
(151) too many arguments in preprocessor macro expansion
(Preprocessor)
There were too many arguments supplied in a macro invocation. The maximum number allowed is 31.
(152) bad dp/nargs in openpar(): c = *
(Preprocessor)
This is an internal compiler error. Contact Microchip Technical Support with details.
(153) out of space in preprocessor macro * argument expansion
(Preprocessor)
A macro argument has exceeded the length of an internal buffer. This buffer is normally
4096 bytes long.
(155) work buffer overflow concatenating "*"
(Preprocessor)
This is an internal compiler error. Contact Microchip Technical Support with details.
(156) work buffer "*" overflow
(Preprocessor)
This is an internal compiler error. Contact Microchip Technical Support with details.
(157) can't allocate * bytes of memory
(Code Generator, Assembler)
This is an internal compiler error. Contact Microchip Technical Support with details.
(158) invalid disable in preprocessor macro "*"
(Preprocessor)
This is an internal compiler error. Contact Microchip Technical Support with details.
(159) too


What is Foolsaurus?
Reserve replacement ratio
The reserve replacement ratio is the amount of new reserves found compared to the amount of oil produced.
Expanded Definition
Exploration and production companies use this to measure how new discoveries exceed (or fall short of) production. Let's say that for every barrel produced, a company wants to increase reserves by 1.5 (replacing the barrel produced plus another half a barrel). If the ratio falls below 1 : 1, then the company is using up its reserves. Percentages are also used to express this; if the number falls below 100%, then the company is using up its reserves.


text:
Sparse files – what, why, and how
23 May 2008 14 Comments
Sparse files are basically just like any other file except that blocks that only contain zeros (i.e., nothing) are not actually stored on disk. This means you can have an apparently 16G file – with 16G of "data" – only taking up 1G of space on disk.
This can be particularly useful in situations where the full disk may never be completely used. One such situation would be virtual machines. If a virtual machine never fills the disk entirely, then a certain amount of the disk will never have anything but zeros in it – permitting the saving of disk space by using a sparse file.
The operating system (which supports sparse files) knows that the block "exists" but is null, so it provides the zero-filled block out of thin air. As soon as the block contains data, the data is written to disk in the appropriate way and the file on disk grows.
There are problems with using sparse files. The most egregious would be that any utility that does not recognize or utilize sparse files can replicate the entire file on disk, so that a 500M sparse file could suddenly balloon to 6G. Even utilities that can work with sparse files must be told to do so, so this trap is easy to fall into.
Another problem is that everything about disk management is based on how many sectors or blocks are used – and the disk size reported for a sparse file is the full size of the file (not the actual number of blocks on disk). This also means that any utilities that work solely with blocks on disk (e.g., du) will report different amounts than other utilities.
Yet another problem is whether backup programs recognize or preserve sparse files. A backup program that does not recognize (and store) sparse files may well be quite oversized. A restore of this flawed backup – or indeed, a restore that does not recognize properly backed up sparse files – will balloon in size as mentioned before. In a worst case, there would not be enough room on disk to restore the data, if the sparse file expands enough to fill the disk.
To get the ls command to report actual on-disk sizes (instead of just the file size typically reported) use these options:
# ls -ls
8 -rw-r--r-- 1 root root 2003 Aug 14 2006 anaconda-ks.cfg
68 -rw-r--r-- 1 root root 59663 Aug 14 2006 install.log
8 -rw-r--r-- 1 root root 3317 Aug 14 2006 install.log.syslog
12 -rw------- 1 root root 10164 Oct 25 2006 mbox
The blocks used are in the left side column; the bytes used are in their usual column just before the date. In this case, all of the files are using appropriate number of blocks – that is, none of these files are sparse.
Creating a sparse file basically amounts to a simple process: create a file, and seek to the desired end of the file. This can be done at the command line with a command like (to create a 1M sparse file):
dd if=/dev/zero of=sparse-file bs=1 count=1 seek=1024k
Here is an example, run on HP-UX:
# dd if=/dev/zero of=sparse bs=1 count=1 seek=1024k
1+0 records in
1+0 records out
# ls -ls sparse*
2 -rw-r--r-- 1 root sys _PHONE_ May 22 12:58 sparse
Looking at HP-UX (and perhaps other environments), there does not appear to be a wide amount of support for sparse files in the typical utilities (such as tar, cp, cpio, etc.), even as the operating system itself will dutifully create sparse files.
However, GNU cp supports the –sparse option. By default, GNU cp attempts to detect sparse files and recreates them as warranted. A file can be copied into a sparse format using –sparse=always, or into a nonsparse format using –sparse=never. The default, alluded to earlier, is –sparse=auto.
GNU tar uses the –sparse option (or the equivalent -S option) to make tar store sparse files appropriately.
GNU cpio supports the –sparse option, which operates similarly: any suitable length of zeros is recorded as a "empty" and the file is stored or created as a sparse file.
The command rsync, while not a GNU project, does support sparse files. The option –sparse (or -S) will attempt to handle sparse files efficiently, that is, not creating file blocks full of only zeros.
It appears that utilities pax, scp, sftp, and ftp do not in general support sparse files. Using such a utility, then, would make a sparse file balloon in size.
Given this utility support for sparse files, the best native environment is proably Linux or MacOS X, or other open platform. More specifically, any platform where the GNU utilities are available, along rsync.
Recognizing a sparse file can be done at the command line with the previously mentioned ls -ls command. To see a sparse file (right down to the block level), one way would be to write a C program (or other language) to start at the end of the file, and truncate the file one block shorter – if the file on disk becomes shorter, then that block was on disk; if not, then it was a sparse block. Of course, any block that contains data is on disk; it is only blocks with zeros with which there is any question as to whether it is on disk or not. Jonathan Corbet had an article in December of 2007 in the Linux Weekly News that described a method that the Solaris ZFS developers had proposed, and posed the question as to whether Linux should support similar system calls that will seek to the next hole or the next set of data in a file.


text:
Food as a window to our past
Redesigned summer course explores society while cooking recipes in the lab
A History course with a lab component? Others have tried it, and this summer, for the first time, the Faculty of Arts will offer their own unique take on history with Food Histories (HIST 3760).
Dr. Sarah Elvins has reimagined her course to incorporate a weekly kitchen lab component for the first time. "Adding the lab portion to the course allows for a more interactive experience. In the kitchen, we will cook and, of course, eat, as well as explore historic recipes, ingredients, tools, and technology," explains Elvins.
Food Histories takes students back in time to investigate the U.S.'s distinct and varied food culture. The course will delve into themes including regional food, Indigenous experiences, immigration, industrialization and agriculture, the rise of advertising and convenience foods, technology, and the evolution of 'home' cooking.
Elvins adds, "Food can be so much more than just nutrition, the latest gadget, or the hippest Instagram photo. Food history helps us to explore society: class, gender, technology, communication – even cultural, social, and political implications – through what we ate and how we prepared it."
Elvins hopes this unique experiential learning course is both enriching and fun for students. "Studying the past helps us to better understand our experience today. This course educates us on traditional historical topics through the lens of food and now with the weekly kitchen lab, helps make history a hands-on experience." The course will be of interest to a broad audience including those in anthropology, sociology, food science, marketing, entrepreneurship, or human nutrition.
HIST 3760, Food Histories will be offered in summer session, June 4-26, Monday to Friday, 10:45 am- 12:45 pm. Course prerequisite is 6 credit hours of 1000 or 2000 History or special permission from the instructor.


text:
Framework Planning of a Provincial Information Management Platform for Energy Resource Analysis and Forecast Based on Diversified Data Acquisition
The information system with function of data acquisition and processing could be an essential foundation of decision making and planning for government on energy resource management in China. However, some existing barriers have impeded the usage of data, such as inefficiency mode of data reporting and transmission, sluggishness of data collection and summarization, deficiency of data standardization and serious information asymmetry. In this paper, a framework planning of an info management platform in provincial level is proposed for energy resource condition analysis and prediction. The various types of data from industries of electrical power, coal, petroleum and others such as bio-gas is acquired and analyzed based on certain data processing methods. And the related systems of statistic index, early warning index, monitoring index and unit GDP energy consumption statistic index and evaluation are established. The proposed platform can support info service to government or related department, help keep the balance and stabilization of energy supply.
Qunjie Xu, Hui Li and Qiaoxia Li
L. Ma et al., "Framework Planning of a Provincial Information Management Platform for Energy Resource Analysis and Forecast Based on Diversified Data Acquisition", Advanced Materials Research, Vols. 869-870, pp. 495-503, 2014


How do I get a library card?
Library cards are available free to residents of Iowa. Library cards are issued immediately if you have current photo identification and verifying proof of current Iowa residential address at the time of application. A post office box is not sufficient proof of residency. Mail may be used as proof of address if it has been postmarked within 30 days of the current date.
Show All Answers
1. Where is the Newton Public Library?
2. How do I get a library card?
3. Does the library offer wi-fi access?


function angle = tetrahedron_dihedral_angles ( tetra ) %*****************************************************************************80 % %% tetrahedron_dihedral_angles() computes dihedral angles of a tetrahedron. % % Licensing: % % This code is distributed under the MIT license. % % Modified: % % 08 July 2009 % % Author: % % John Burkardt % % Input: % % real TETRA(3,4), the vertices of the tetrahedron, % which can be labeled as A, B, C and D. % % Output: % % real ANGLE(6), the dihedral angles along the % axes AB, AC, AD, BC, BD and CD, respectively. % ab(1:3,1) = tetra(1:3,2) - tetra(1:3,1); ac(1:3,1) = tetra(1:3,3) - tetra(1:3,1); ad(1:3,1) = tetra(1:3,4) - tetra(1:3,1); bc(1:3,1) = tetra(1:3,3) - tetra(1:3,2); bd(1:3,1) = tetra(1:3,4) - tetra(1:3,2); abc_normal = r8vec_cross_product_3d ( ac, ab ); abd_normal = r8vec_cross_product_3d ( ab, ad ); acd_normal = r8vec_cross_product_3d ( ad, ac ); bcd_normal = r8vec_cross_product_3d ( bc, bd ); angle(1) = r8vec_angle_3d ( abc_normal, abd_normal ); angle(2) = r8vec_angle_3d ( abc_normal, acd_normal ); angle(3) = r8vec_angle_3d ( abd_normal, acd_normal ); angle(4) = r8vec_angle_3d ( abc_normal, bcd_normal ); angle(5) = r8vec_angle_3d ( abd_normal, bcd_normal ); angle(6) = r8vec_angle_3d ( acd_normal, bcd_normal ); angle(1:6) = pi - angle(1:6); return end


text:
It is important to stay updated with current affairs and international events. This article discusses India's ambition to host the Olympics in 2036 and the potential benefits and challenges associated with it.
Prime Minister Narendra Modi announced that India is interested in hosting the 2036 edition of the Olympics.
India also expressed interest in hosting the Youth Olympics as a precursor.
The announcement signifies India's desire to shed the negative image from the 2010 Delhi Commonwealth Games.
The ratification of the host city for 2036 will take time, but India's interest showcases its global ambitions.
Hosting the Olympics can give India a vantage position in the shifting world order and enhance its political legitimacy.
India aims to benefit from the success at the Asian Games and win double-digit medals at Paris 2024.
Conducting mega events like the Olympics is a huge challenge due to high costs, as seen in Rio 2016 and Tokyo 2020.
The financial burden for Tokyo 2020 was $15.4 billion, more than double the initial estimate.
Victoria, Australia, withdrew from hosting the 2026 Commonwealth Games due to mounting expenditure.
The IOC now asks potential organizers to present projects that fit their economic, social, and environmental realities.
India's success will depend on how it balances its aspirations with the complexities of hosting such events.
The importance of managing water wisely in the context of food and nutrition security. It highlights the challenges faced by countries due to climate extremes and the impact of water availability on agriculture. It also mentions the need for innovative and collaborative approaches to improve water management and conservation.
The theme for World Food Day this year is 'Water is Life, Water is Food'
Availability of water has become critical due to increasing climate extremes
Countries face challenges such as drought, floods, unseasonal rains, and dry spells
The UN's food agencies stress the need for innovative and collaborative approaches to manage water resources
Water availability affects food and nutrition security
60% of India's net sown area is rainfed, contributing to 40% of total food production
Rainfed agriculture depends on water availability and variations in rain and soil moisture can affect food security
There is a need to promote technologies and practices to make rainfed production more resilient and sustainable
Sustainable water management is critical for addressing food and nutrition security threats
Irrigated agriculture accounts for 72% of global freshwater withdrawals and can have damaging effects on ecosystems.
Freshwater supplies and ecosystems have been degraded due to poor water management, misuse, pollution, and the climate crisis.
Small-scale farmers, who make up more than 80% of farmers globally, are particularly vulnerable to climate shocks and land degradation.
Extreme weather events and water availability variability are negatively impacting agricultural production and changing growing seasons.
The Government of India has assessed the impact of climate change on crop yields in 2050 and 2080 scenarios.
Without adaptation measures, rice yields are projected to decrease by 20% in 2050 and 47% in 2080 for rainfed rice, and by 3.5% in 2050 and 5% in 2080 for irrigated rice.
Wheat yields are projected to decrease by 19.3% in 2050 and 40% in 2080, while kharif maize yields could decline by 18% and 23%.
Climate change without adequate adaptation measures reduces crop yields and lowers the nutritional quality of produce.
The FAO is piloting a crop forecasting framework and model in Andhra Pradesh, Karnataka, Himachal Pradesh, and Maharashtra to aid rainfed farmers in making informed decisions for food security.
The WFP supports irrigation projects to make agriculture more resilient and help farmers grow high-value crops.
In 2021, 8.7 million people across 49 countries benefited from the WFP's support for irrigation.
IFAD supports Indian States in leveraging the Mahatma Gandhi National Rural Employment Guarantee Act scheme for micro-irrigation infrastructure.
The FAO supports sustainable transformation of agrifood systems and climate-smart agriculture practices to improve water-use efficiency.
The FAO supported the farmer water school program in Uttar Pradesh and the Andhra Pradesh Farmer Managed Groundwater Systems project.
IFAD has set ambitious targets to mitigate climate change and help farmers adapt to weather conditions
IFAD-supported projects in Maharashtra, Odisha, Uttarakhand, Nagaland, and Mizoram incorporate climate-resilient seed varieties and train farmers in climate-sensitive agricultural practices
The WFP is collaborating with the Government of Odisha to develop solutions for smallholder farmers, focusing on women
The goal is to enhance resilience through solar technologies, establish community-based climate advisory services, and promote a millet-value chain that reduces water usage and improves nutrition
Political commitment and concrete investment are needed to achieve global food and nutrition security
Policies and investments should promote innovative technologies, sustainable irrigation and water management strategies, reducing the climate footprint of agriculture, improving sanitation and drinking water supplies, and strengthening institutional arrangements for sustainable water regulations.
The UN's food agencies collaborate with the Government of India and State governments on various innovative projects.
Some of these projects include Solar 4 Resilience, Secure Fishing, and the revival of millets.
The aim of these projects is to promote renewable energy, ensure food security, and improve nutrition.


text:
the tuning effect has less time to enhance slow-speed engine's operation.
It is important to note that an exhaust system can only be optimized over a small rpm band, typically 1,500 to 2,000 rpm. Therefore, be sure to tune the pipe diameter and length to the engine's most critical rpm band. In the case of a drag racing engine, this band should fall between peak torque rpm and peak horsepower rpm. With due diligence, you can tune a header pipe to the middle of the rpm band to achieve the highest average power.
For a lower-rpm street engine, it is normally best to tune pipe dimensions to peak torque rpm. Larger diameters and shorter length header pipes optimize high-rpm operation, while smaller diameters and longer pipe lengths favor low-end power.
Stepped Header Pipes
Various exhaust systems are designed with a stepped-header pipe. A stepped header includes the placement of pipediameter differentials in the pipe. The differentials are referred to as steps. Stepped headers are divided into two or more pipe sections (usually two or three) with each successive section at least 1/8-inch larger than the previous section.
Exhaust port shape and valve size are crucial for determining the optimum size differential and location ofsteps in a header pipe.
Although a stepped header generates more low-pressure waves than a non-stepped design, its waves are weaker. Steps help maintain a higher average gas velocity over the total length of header pipe. A stepped header won't necessarily make more power than a non-stepped pipe, but it can broaden the engine's torque curve by widening the scavenging wave's effect, which increases the time of negative depression.
This can result in a win-win situation: High torque at low rpm while maintaining high horsepower at high rpm. Since the engine views a stepped header as a tapered pipe, the greater the number of steps in a length of pipe, the greater the taper angle and the stronger the pressure waves. But as the pipe angle increases, the rpm band it affects gets narrower. On the otherm hand, a longer pipe with fewer steps results in a narrower angle, thereby widening the working rpm range but lessening the strength of the pressure wave. Stepped headers are most beneficial when used on large-displacement and/or high-rpm engines.
A reverse cone is fitted to a collector to augment, extend and smooth out the peak horsepower band. A reverse cone can improve top-end power without compromising low-end torque. This pipe includes heat shields to retain the show-chrome look.
A cam with a long overlap can benefit from a pipe design that produces a wide exhaust-scavenging wave because a greater portion of the overlap period is effectively covered. A stepped header is an excellent design for this application as long as the pipe taper is not too steep. Conversely, if the scavenging wave is too narrow, the overlap period will not be covered effectively and performance will be reduced. Increasing the amount of time the scavenging wave covers the overlap period tends to broaden the tuned rpm band. Combiningm a relatively wide scavenging wave with a short overlap or generating a wider wave with a long overlap are two ways to broaden the rpm band over which the exhaust system is effective.
V-Twin engine builders have various philosophies for stepped headers. Some favor equal length sections for a stepped pipe while others prefer unequal lengths. Still others achieve good results by making the first section 10 to 12-inches long, and then splitting the remainder of the header into equal length sections. Some tuners base the length of the first stepped section on valve diameter. Moreover, the location of the bend in the header immediately after exiting the port and the design of the bike's frame can dictate the length of the first step.
Most stock Harley mufflers are relatively small for aesthetic reasons, and include a healthy dose of internal baffling to satisfy EPA noise limitations. As a result, airflow is restricted and so is power. Large, touring model Harleys ship with large volume mufflers and a crossover pipe. This large interconnected design produces a few extra ponies over the Dyna/Softail models with smaller volume mufflers.
Adequate muffler volume for the engine displacement is important for keeping exhaust backpressure low at high rpm. Generally, muffler volume should be roughly 10 times the cylinder volume to make good high rpm power. However, horsepower is also a factor because the more horsepower an engine makes, the more exhaust flow it generates.
In other words, as engine airflow increases exhaust gas volumeor also increases. With increased exhaust gas volume, muffler airflow and volume must also be increased. For example, assume we have two 113 cubic inch engines, one producing 100 horsepower and another producing 125 horsepower. A muffler that barely provides adequate airflow for the 100 horsepower engine will surely be inadequate for making good top-end power with the 125 horsepower engine.
Large engines require a muffler with a large main body, free-flowing baffle and unobstructed exit. Since large mufflers do not look aesthetically pleasing on a V-Twin, it is difficult to make a pipe for a large-displacement engine that satisfies both aesthetics and performance. The easiest and least costly method for improving exhaust system performance is to modify the system.
Most 2-into-2 systems are tunable by modifying the internal baffles. Modifying baffles, especially those used in small-volume mufflers, can improve power. Increasing the number and/or size of holes in the baffles or shortening the baffles reduces backpressure and helps top-end power. However, remember that increasing flow too much can reduce bottom-end torque. Furthermore, tunable 2-into-1 systems offer a clear advantage over non-tunable collector systems, especially if engine displacement is large.
2-Into-1 Collector Systems
A 2-into-1 exhaust system terminates both header pipes into a tapered merge collector, which includes baffling that acts as a muffler. Some collector systems for the V-Twin are designed with replaceable baffles, which allows the tuner to select a baffle offering the optimum amount of airflow and backpressure for the application.
Since collector systems tend to increase torque below peak torque rpm, they typically improve low and midrange power. Highrpm race engines, such as Top Fuel motors, generally do not use a collector because the engines do not drop below peak torque rpm.
Early model Screamin' Eagle pipe by SuperTrapp Industries includes a series of diffusion discs at the pipe's end for tuning purposes. Between 15 and 23 discs are often used with various end-cap designs. Within limits, installing more discs increases airflow, sound and performance.
Optimum collector design requires cut-and-try testing, so there is no one size fits all solution. However, in general, the longer and smaller the diameter of the merge collector, the lower the point where peak torque rpm will occur. A long slow-tapering collector effectively spreads the reflected wave over a wider rpm band. Spreading the wave essentially tricks the engine into thinking the header pipes are longer than they actually are. On the other hand, a short and wide-angle collector creates the strongest return pressure wave but works over a smaller rpm range. Additionally, the merge angles of the header pipes and the internal design of the collector can have an influence on power production.
A slow-flowing port typically allows excessive amounts of exhaust gases to backup in the port and re-enter the combustion chamber (called reversion). The exhaust gases dilute the intake charge and ruin carburetion and throttle response. An anti-reversionary (AR) flange is often installed in a header pipe where the pipe intersects with the exhaust port. This feature helps when the exhaust port is inefficient and slow flowing. Essentially, an AR flange shrouds the port, thereby catching much of the back-flowing exhaust, which improves performance, particularly at low rpm.
Some exhaust ports are designed with a miss-match at the bottom of the exhaust header pipe. The miss-match functions in the same fashion as an AR flange by reducing exhaust backflow. The mismatch creates a ledge at the bottom of the port that stops reversionary exhaust gases from backing into the combustion chamber.
Stepped headers are divided into two or more sections, with each section being a minimum of 1/8-inch larger in diameter than the previous section. Stepped headers produce more but weaker low-pressure waves, which broadens the engine's torque curve by widening the scavenging wave's effect.
Key exhaust system considerations include pipe diameter and length. Both pipe variables should be optimized based on engine displacement, rpm band, cam timing, and application. If a collector is used, its diameter and length also must be considered. Bike weight, gear ratios, and the number of gears along with the application also enter into the equation for optimum exhaust design.
Header diameter (inside diameter) is typically the most important factor in exhaust system design because it sets the torque curve. Increasing diameter generally improves top-end power at the expense of low-end torque. Changing pipe length will move the torque curve either up or down the rpm scale. A shorter pipe favors top-end horsepower while a longer pipe caters toward low-end torque.
Some engine builders have found great power numbers using an exhaust system that appears contradictory to known rules: long large-diameter or short small-diameter header pipes. However, these designs can offer the best of both worlds-great low end torque and top-end horsepower. Straight pipes typically improve power above roughly 4,000 rpm, which is great for an engine that never drops below this rpm. However, at low rpm, straight pipes generally create big dips in the torque curve, reduce throttle response, and make jetting difficult.
2-into-2 straight pipes can improve top-end performance at the expense of low and midrange torque. Performance and


text:
AffiliationUniversity of Bedfordshire
University of Porto
Water Resources - CSIR
University of Cape Town
MetadataShow full item record
AbstractIn this paper, authors discuss the current methods used for surface water monitoring and the gaps left in monitoring in context of a low resourced area. Water quality monitoring is a complex problem that can only be tackled through a systemic application of a transdisciplinary approach. This paper suggests use of a variety of innovative solutions adapted to the local conditions encouraging the prospect of sustainability. The approach relies on an emphasis on environmental and water quality for human life that will contribute to: 1) improved capacity building of local actors, including the role of women; 2) increased economic and social well-being at local and regional levels; and 3) protect natural capital in the region. This article reviews the state of water monitoring in low resourced area, example is taken here from Southern Arica and attempts to establish a sustainable water quality monitoring plan for application to cross-boundary water resources in the region. These are essential to diagnose and raise understanding on water quality problems in resources shared by countries with contrasting development levels. The innovative vision presented here proposes to resolve this multidimensional water quality problem by considering the broader system ranging from aquatic ecosystems providing this service to supply systems serving final consumers.
CitationAjmal T, Guimares L, Genthe B, Rivett U (2020) 'Can sustainable water monitoring be a reality?', 9th International Conference on Environment Science and Engineering (ICESE 2019) - Leuven, Institute of Physics Publishing.
PublisherInstitute of Physics Publishing
TypeConference papers, meetings and proceedings
The following license files are associated with this item:
- Creative Commons
Except where otherwise noted, this item's license is described as Attribution-NonCommercial-NoDerivatives 4.0 International