Nothing
calcG0 <- function(lat,
modeRad='prom',
dataRad,
sample='hour',
keep.night=TRUE,
sunGeometry='michalsky',
corr, f, ...){
if (missing(lat)) stop('lat missing. You must provide a latitude value.')
stopifnot(modeRad %in% c('prom', 'aguiar','bd', 'bdI'))
###Datos de Radiacion
if (missing(corr)){
corr = switch(modeRad,
bd = 'CPR', #Correlacion entre Fd y Kt para valores diarios
aguiar = 'CPR', #Correlacion entre Fd y Kt para valores diarios
prom = 'Page', #Correlacion entre Fd y Kt para promedios mensuales
bdI = 'BRL' #Correlación entre fd y kt para valores intradiarios
)
}
BD <- switch(modeRad,
bd = {
if (is(dataRad, 'Meteo')) {
dataRad
} else {
if (!is.list(dataRad)) dataRad <- list(file=dataRad)
switch(class(dataRad$file),
character={
bd.default=list(file='', lat=lat, format="%d/%m/%Y",
header=TRUE, fill=TRUE, sep=';',
dec='.', dates.col='dates', source='')
bd=modifyList(bd.default, dataRad)
res <- do.call('readBD', bd)
res
},
data.frame={
bd.default=list(file='', lat=lat, format="%d/%m/%Y",
dates.col='dates', source='')
bd=modifyList(bd.default, dataRad)
res <- do.call('df2Meteo', bd)
res
},
zoo={
bd.default=list(file='', lat=lat, source='')
bd=modifyList(bd.default, dataRad)
res <- do.call('zoo2Meteo', bd)
res
})
}}, #Fin de bd
prom = {
if (!is.list(dataRad)) dataRad <- list(G0dm=dataRad)
prom.default <- list(G0dm=numeric(), Ta=25, lat=lat,
year = as.POSIXlt(Sys.Date())$year+1900,
promDays=c(17,14,15,15,15,10,18,18,18,19,18,13),
source='')
prom = modifyList(prom.default, dataRad)
res <- do.call('readG0dm', prom)
}, #Fin de prom
aguiar = {
if (is.list(dataRad)) dataRad <- dataRad$G0dm
BTd=fBTd(mode='serie')
solD <- fSolD(lat, BTd)
G0d <- markovG0(G0dm, solD)
res <- zoo2Meteo(G0d, lat=lat, source='aguiar')
}, #Fin de aguiar
bdI = {
if (is(dataRad, 'Meteo')) {
dataRad
} else {
if (!is.list(dataRad)) dataRad <- list(file=dataRad)
switch(class(dataRad$file),
character = {
bdI.default <- list(file='', lat=lat,
format="%d/%m/%Y %H:%M:%S",
header=TRUE, fill=TRUE, sep=';',
dec='.', time.col='time', source='')
bdI <- modifyList(bdI.default, dataRad)
res <- do.call('readBDi', bdI)
res
},
data.frame = {
bdI.default <- list(file='', lat=lat,
format="%d/%m/%Y %H:%M:%S",
time.col='time', source='')
bdI <- modifyList(bdI.default, dataRad)
res <- do.call('dfI2Meteo', bdI)
res
},
zoo = {
bdI.default <- list(file='', lat=lat, source='')
bdI <- modifyList(bdI.default, dataRad)
res <- do.call('zoo2Meteo', bdI)
res
},
stop('dataRad$file should be a character, a data.frame or a zoo.')
)}} #Fin de bdI
) #Fin del switch general
### Angulos solares y componentes de irradiancia
if (modeRad=='bdI') {
sol <- calcSol(lat=lat, BTi=index(getData(BD)),
keep.night=keep.night, method=sunGeometry)
compI <- fCompI(sol=sol, G0I=BD, corr=corr, f=f, ...)
compD <- aggregate(compI[,c('G0', 'D0', 'B0')],
by=truncDay, FUN=P2E, sol@sample) #Wh
names(compD) <- c('G0d', 'D0d', 'B0d')
compD$Fd <- compD$D0d/compD$G0d
compD$Ktd <- compD$G0d/as.zooD(sol)$Bo0d
} else { ##modeRad!='bdI'
sol <- calcSol(lat=lat, BTd=indexD(BD),
sample=sample, keep.night=keep.night,
method=sunGeometry)
compD <- fCompD(sol=sol, G0d=BD, corr=corr, f)
compI <- fCompI(sol=sol, compD=compD, ...)
}
###Temperatura
##Compruebo si tengo información de temperatura a partir de la cual
##generar una secuencia de datos. Para eso, debo estar leyendo de www.mapa.es
##o de una base de datos que contenga dos variables con información sobre
##valores diarios máximos y mínimos de temperatura.
ind.rep <- indexRep(sol) ##para repetir valores diarios de Ta, si es necesario
indSol <- indexI(sol)
Ta=switch(modeRad,
bd={
if (all(c("TempMax","TempMin") %in% names(BD@data))) {
fTemp(sol, BD)
} else {
if ("Ta" %in% names(BD@data)) {
zoo(coredata(BD@data$Ta)[ind.rep], indSol)
} else {
warning('No temperature information available!')
}
}
},
bdI={
if ("Ta" %in% names(BD@data)) {
Ta=BD@data$Ta
} else {
warning('No temperature information available!')
}
},
prom <- zoo(coredata(BD@data$Ta)[ind.rep], indSol) ##zoo(rep(Ta, length(indSol)), indSol) ##idem
)
###Medias mensuales y anuales
DayOfMonth=c(31,28,31,30,31,30,31,31,30,31,30,31) ###OJO
G0dm <- aggregate(compD[,c('G0d', 'D0d', 'B0d')], by=as.yearmon,
FUN=function(x, ...)mean(x, na.rm=1)/1000) ##kWh
if (modeRad=='prom'){
G0y <- zoo(t(colSums(G0dm*DayOfMonth)),
unique(year(index(G0dm))))
} else {
G0y <- aggregate(compD[,c('G0d', 'D0d', 'B0d')], by=year,
FUN=function(x, ...)sum(x, na.rm=1)/1000) ##kWh
}
###Resultado
result <- new(Class='G0',
BD, #G0 contains "Meteo"
sol, #G0 contains 'Sol'
G0D=compD, #resultado de fCompD
G0dm=G0dm, #aggregate, medias mensuales
G0y=G0y, #aggregate, valores anuales
G0I=compI, #resultado de fCompI
Ta=Ta #temperatura ambiente
)
return(result)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.